《别再乱改数据库连接池的大小了》


解释了数据库连接池。
Tomcat设置过大的数据库连接池:
Tomcat同时向数据库并发很多连接,会导致大量请求连接到数据库,数据库主机任务很多,CPU频繁上下文切换,导致查询耗时增加。

而应用程序使用连接池的用途就是,减少应用程序(Tomcat)本身创建连接和销毁的损耗。


数据库主机瓶颈:CPU、磁盘IO、网络IO、内存

数据库连接池即为cpu同时处理连接的数据量。连接数 = ((核心数 * 2) + 有效磁盘数)
高并发业务,需要的是一个小连接池和一个等待连接的队列。
如果,场景很复杂。比如:
系统同时混合了长事务和短事务,这时,根据上面的公式来计算就很难办了。正确的做法应该是创建两个连接池,一个服务于长事务,一个服务于"实时"查询,也就是短事务。
还有一种情况,比方说一个系统执行一个任务队列,业务上要求同一时间内只允许执行一定数量的任务,这时,我们就应该让并发任务数去适配连接池连接数,而不是连接数大小去适配并发任务数。

对于容器来说,
docker默认设置下,所有容器可以平等地使用 host CPU 资源并且没有限制。-c只是改变容器在资源紧张情况下的优先级。
K8S CPU限制,是限制容器占用CPU的时间,爆发后可以多占用CPU时间片。

进程是操作系统进行资源(包括cpu、内存、磁盘IO等)分配的最小单位。
线程是cpu调度和分配的基本单位。


网站并发和TPS

系统吞度量要素:
系统吞吐量几个重要參数:QPS,TPS、并发数、响应时间(RT)

QPS:每秒钟request数量
TPS:每秒钟事务数量

一般TPS是对整个系统来讲的。一个应用系统1s能完成多少事务处理,一个事务在分布式处理中,可能会对应多个请求,对于衡量单个接口服务的处理能力,用QPS比较多。

吞吐量: 吞吐量是指系统在单位时间内处理请求的数量。
并发数:系统同一时候处理的request/事务数
响应时间:一般取平均响应时间

nginx每一次成功的请求,记录一条日志。所以统计nginx日志条数,应该是统计的请求量,统计一分钟请求数/60=QPS。

理解了上面三个要素的意义之后,就能推算出它们之间的关系:
QPS = 并发数/平均响应时间
或者
并发数 = QPS*平均响应时间


白石皓皓
1 声望1 粉丝

引用和评论

0 条评论