当前位置:首页 > TAG信息列表 > tomcat如何配置数据库的连接池tomcat连接数一超大就卡死?介绍

tomcat如何配置数据库的连接池tomcat连接数一超大就卡死?介绍

tomcat如何配置数据库的连接池 tomcat连接数一超大就卡死?

tomcat连接数一超大就卡死?

您需要配置一个连接池,并且需要分配足够的内存。

tomcat7默认参数?

套接字参数选项:

tomcat如何配置数据库的连接池 tomcat连接数一超大就卡死?

_nodelay:表示立即发送数据。

_resuseaddr:表示套接字绑定的本地地址允许重用。

_timeout:表示接受数据时的超时。

_linger:表示执行clos:执行这个方法,然后执行socket的close方法,这个方法也会立即返回,但是底层sock:执行socket的close方法,不会立即返回,而是进入阻塞状态。同时,底层套接字也会尝试发送剩余的数据,close方法只有在满足以下两个条件之一时才会返回:

(1):底部套接字已经发送了所有剩余的数据。

(2):虽然底层套接字还没有发送完所有剩余的数据,但是已经被阻塞了3600秒。如果close()方法的阻塞时间超过3600秒,它将返回,剩余的未发送数据将被丢弃。

_tw_reuse1表示打开重用。允许等待时间套接字重新用于新的tcp连接。默认值为0,这意味着它是关闭的。

_tw_recycle1表示打开tcp连接中时间等待套接字的快速恢复,默认值为0,表示关闭。

_snfbuf:表示发送数据的缓冲区大小。

_rcvbuf:表示接收数据的缓冲区大小。

_keepalive:表示一个长时间空闲的socekt是否会自动关闭。

8.指示是否支持发送一个字节的tcp紧急数据。

默认参数

注意:连接器通常位于home_tomcat/conf/servser.xml文件中。

#正常参数

连接器端口8080协议http/1.1

连接超时20000

重定向端口8443/

配置参数调试

#优化参数

连接器端口8080

协议http/1.1

maxthreads1000

minsparethreads100

接受计数1000

maxconnections1000

连接超时20000

maxhttpheadersize8192

tcpnodelayttrue

压缩

压缩最小化2048

disableuploadtimeouttrue

重定向端口8443

enablelookupsfalse

uriencodingutf-8/

参数的详细说明

1)端口

注意:代表tomcat端口号,默认为8080。

2)协议

注意:有四种可选协议类型,bio(阻塞io)、nio、nio2和apr。

#生物

bio(阻塞i/o)阻塞i/o操作,传统javai/o操作(即包及其子包)。默认情况下,tomcat以bio模式运行,这是三种模式中性能最低的。默认情况下可以使用bio配置。

bio更适合处理简单的流程,如果程序处理得快,结果可以马上返回。bio可以用于简单的项目和应用程序。

#nio

nio(newi/o)是javase1.4及后续版本提供的一种新的i/o操作模式(即包及其子包)。javanio是基于缓冲区和非阻塞i/o操作的javaapi,比传统i/o操作(bio)具有更好的并发性能。

nio更适合需要耗时完成请求的后台操作。如果一个程序收到一个请求,它需要耗时的处理,所以它可以t立即返回结果,所以如果采用bio,会占用一个连接,使用nio后,可以转移到其他请求,直到程序处理后返回。

#四月

apr(apacheportableruntime/apacheportableruntime)是apach:tomcat会以jni的形式调用apachehttpserver的核心动态链接库来处理文件读取或者网络传输,从而大大提高tomcat处理静态文件的性能。

apr可以大大提高tomcat对于静态文件的处理性能,同时如果使用https进行传输,也可以提高ssl的处理性能。

#修改方法

//生物

协议http/1.1

//nio

草案

//nio2

草案

//apr

协议开环(同openloop)

3)maxthreads(线程池的大小默认为200)

注意:连接器创建最大数量的线程来处理请求,并创建最大数量的来自同事的请求。默认值为200。

如果一个执行器与这个连接器相关联,这个属性将被忽略,因为它将被忽略,所以连接器将使用执行器而不是内部线程池来执行任务。maxthreads是一个重要的配置属性,maxthreads的合理配置直接影响到tomcat的相关性能。maxthreads不是越大越好。其实就算你配置成999999也没用,因为这个最大值是受操作系统和相关硬件限制的,最大值不一定是最优值,所以要追求最优值而不是最大值。

qps(每秒查询数):每秒查询率qps是特定查询服务器在指定时间内处理的流量的度量。我们经常用qps值来衡量服务器的性能。

qps并发/平均响应时间

并发qps数*平均响应时间

系统的吞吐量通常由两个因素决定,qps和并发性。每个系统的这两个值都有一个相对的极限。在应用场景接入的压力下,只要有一项达到系统的最高值,系统的吞吐量就上不去。如果压力继续增加,系统的吞吐量就会下降,因为系统已经超负荷了,其他的如上下文切换、内存等消耗都会导致系统性能的下降。所谓吞吐量,在这里可以理解为每秒钟可以处理的请求数。

所以选择一个合理的maxthreads值并不那么容易。因为线程太多只会造成更多的内存开销和更多的cpu开销,而对提高qps没有任何帮助;找到最佳线程数后,通过简单的设置,web系统可以更加稳定,获得最高最稳定的qps输出。

#获得最佳maxthreads的最佳值

(1)通过在线系统的持续使用和用户的持续增长,可以测试性能,观察qps和响应时间。这样系统爆发式增长的时候就会崩溃,比如双12。

(2)根据公式得出的最佳线程数((线程等待时间,线程cpu时间)/线程cpu时间)*服务器端cpu数有时会产生误导,因为有些系统处理环节可能需要较长时间,从而影响公式的结果。

(3)单用户和多用户压力测试,检查cpu消耗,然后直接乘以百分比,再进行压力测试。通常,线程的最佳数量应该接近这个值。这种更适合理想场景,实际情况会比这复杂很多。

(4)根据系统进行调整;;自身情况,如硬件限制、系统限制、程序处理能力限制等。

(5)定期修改到不同的max。threads值,取决于服务器响应结果和用户响应。

#qps和线程数

(1)在最佳线程数之前,qps和线程数是互相递增的。最佳线程数后,qps持平,不上升,甚至略有下降,而对应的时间保持上升。

(2)对于同一个系统,支持的线程越多(优化的线程越多,而不是配置的线程越多),qps越高。

#qps和响应时间

(1)对于一般的web系统,响应时间一般由cpu执行时间和io等待时间组成。

(2)2)cpu执行时间的减少对qps有实质性的提升,而io时间的减少对qps没有明显的提升。如果想要显著提高qps,那么在优化系统的时候,应该把重点放在优化cpu消耗上。

4)最小线程

注意:运行的最小线程数,这些总是保持运行。如果未指定,默认值为10。

5)acceptcount(默认为100,队列的大小,backlog:半队列)。

注意:最大队列长度。一般和maxthreads一样,默认值是100。

当所有可能的请求处理线程都在使用中时,传入连接请求的最大队列长度。如果未指定,默认值为100。一般设置为与maxthreads相同或一半。如果该值设置得太高,排队的请求将会超时而得不到处理。所以这个值要主要根据应用的访问峰值和平均值来权衡配置。

6)maxconnections(nio和nio2的默认值是10000,以及accept的套接字的大小)

注意:服务器在任何给定时间接受和处理的最大连接数。当达到这个数目时,服务器将接受但不处理它,等待进一步的连接。nio和nio2的默认值是10000,apr的默认值是8192。

7)连接超时(设置为(连接超时))

注意:当请求已被接受但未被处理时,就是等待超时。单位是毫秒,默认值是60000。通常设置为30000。

8)maxhttpheadersize

注意:请求和响应的http头的最大大小是以字节为单位指定的。如果未指定,此属性将设置为8192(8kb)。

9)tcpnodelay

注意:如果为true,服务器套接字将设置tcp_no_delay选项,这在大多数情况下可以提高性能。默认情况下,它设置为true。

10)压缩

注意:默认情况下,是否启用gzip压缩是关闭的。这个参数的可接受值是"关闭"(不使用压缩),"on"(压缩文本数据)力与力(在所有情况下强制压缩)。

11)压缩尺寸

注意:如果compressionon打开,则该项被启用。数据压缩前的最小值,即超过该值后被压缩。如果没有指定,这个属性默认为"2048"(2k),单位为字节。

12)禁用上传超时

注意:该标志允许servlet容器在执行servlet时使用不同的更长的连接超时。最终结果是让servlet有更长的时间来完成它的执行,或者在上传数据时有更长的超时时间。如果未指定,则设置为false。

13)启用查找

注意:关闭dns反向查询。

14)尿酸编码

注意:url编码字符集。

性能时间线程系统


一众号 常沃号

  • 关注微信关注微信

猜你喜欢

微信公众号