httpd加tomcat做负载均衡,采用session复制方式共享session,采用http-proxy连接方式,打开status mod
一、没有做httpd和tomcat的启动参数修改,包括jvm内存和连接数限制的修改
用ab测试:-n2650 -c265 http://localhost/test/page1.html。没有问题,吞吐量为290kb左右。
再测试:-n2660 -c266 http://localhost/test/page1.html。
报错:
Completed 266 requests
Test aborted after 10 failures
apr_socket_connect(): 由于目标机器积极拒绝,无法连接。
(730061)
Total of 448 requests completed
估计是httpd默认最大线程数是265。
二、调整httpd的httpd.conf里的参数,找到#Include conf/extra/httpd-mpm.conf,将其注释去掉,引入mpm_winnt_module来做MPM,将httpd-mpm.conf中mpm_winnt_module里的参数调整为:
ThreadsPerChild 1920
MaxRequestsPerChild 0
注意,一般windows系统每个进程可以启动的最大线程数为1920个,也就是ThreadsPerChild最大值为1920。测试结果可以支持到1000个并发,吞吐量为200kb左右。1200个并发系统报错:
到目前为止还没找到可以支持1200个并发以上的方法。。。。
三、对两个tomcat jvm参数进行设置,min 480m, max 480m
结果可以支持1000个并发,吞吐量还是200kb左右。
附:tomcat配置文件中连接参数:
maxThreads="600" ///最大线程数
minSpareThreads="100"///初始化时创建的线程数
maxSpareThreads="500"///一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。
acceptCount="700"//指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理