连接池
数据库连接池是对数据库连接进行统一管理的技术,主要目的是提高应用性能,减轻数据库负载。 资源复用:连接可以重复利用,避免了频繁创建、释放连接引起的大量性能开销。在减少系统消耗的基础上,同时增进了系统的平稳性
java代码连接mysql数据库的时候一般在空闭8个小时的时候会自动断开数据库与程序代码的连接,如果在断开连接之后,我们再次去访问时候程序就会报错,出现空指针,这样说可以不是很直白,我举个例子就比较清楚了,我们经常看见我们的项目上线后白天可以正常访问,但是再到明天就不能访问了,那我们解决这个问题方法有两种,独占网络下面就来讲一下这两种方法。 解决方法一就是修改mysql的配置文件,让其空闭的时候更多。 解决方法二,我们就是把数据库连接方法改为C3po连接池连接,我们推荐用这种方法去连接数据库,因为它会自动去检测是否断开,如果断开就重新连接,好处比较多,稳定性高
某些中间件的客户端配置中,会有集群的地址列表(数组),典型的如zookeeper的地址列表: 聪明的运维同学,喜欢把它弄成域名,第一种是一个域名解析为多个IP(起到负载均衡作用): 第二种是一个域名解析为一个IP(可以方便修改IP),例如: 这三种方式,到底哪种好?为什么?有没有更好的方式? 直接说结论: 上面三种方式中,单个域名的方案最差,通常起不到负载均衡作用,而且可能还会有副作用(中间件客户端本身可能会自带负载均衡机制)。 多个域名列表的方式,优于多个IP列表的方式。 但是将IP换成域名的弊端也很明显:域名解析有缓存,修改了域名解析,新的IP并不能立即生效
在使用 Azure 的时候发现一个有趣的现象。 每天早上同事们开始开发工作的时候,不管是谁,第一次运行程序的时候都会出现数据库连接错误的提示。 随后随时连接都不会有问题了
要比较一个系统中两个模块的性能差别(比如同一个库中的两个类似的表),有两种压测模式: 1. 一个test plan含两个senario 执行一次,同时出两个模块的结果。 第一种模式很有吸引力,因为它可省下很多重复的配置工作;只执行一次,比较省时;像jmeter之类的还会直接给出直方图,以示比较。 然而,我的亲身经历表明,第1种模式由于公共资源占用问题会导致“大锅饭”效应: 同时压测两个模块,慢模块会占用过多公共资源(cpu 内存,连接池等),导致快模块无法获得足够的资源因而也变慢