浅析tomcat调优

基础:每个进入到tomcat的请求,都会分配一个线程来处理。

 

几个关键参数

max threads 最大线程数,指的是tomcat可以接受的最大请求数,默认200

 

acceptcount  队列最大数,指当请求数达到max threads时,队列可以缓存的请求数,默认应该是100

 

max connections 最大连接数,服务器想发送请求,必须先和tomcat建立socket链接,这个就是允许的最大连接数了。最大连接数应该大于最大线程数+队列最大数,默认应该是1000

 

需要根据服务类型来区分,

如果是IO密集型服务,这类服务由于多是等待IO的处理时间,所以可以适当调大max threads和acceptcount,但是要防止调整过大导致过多请求进入等待队列以至于连接超时问题。还有每个线程大概要占用1m的内存,线程间切换也有开销。如果连接数过大,会导致切换过于频繁反而导致性能下降。所以最好的方案在IO密集型服务中,如果需要可以适当的加大最大连接数和队列数量,但相加小于最大连接数,还不能满足可以做负载均衡。

 

如果是计算密集型服务,由于需要更多CPU的资源进行运算,所以如果线程数过多会导致大量线程争夺CPU资源,反而降低效率;所以应该适当的调小最大连接数和队列数。

 

tomcat默认使用BIO,阻塞IO,效率较低,可以调整使用NIO。不过不建议使用,可以直接使用netty容器。

 

你可能感兴趣的:(spring,java,笔记)