我有一个3.5 GB的CPU服务器运行在tomcat / Apache与mod.jk。 我们看到我们的服务器本身有足够的内存可用,而tomcat在GC方面并没有显示出任何疯狂的地方。
我们一直在为maxClient maxThreads和workers.properties中的socket_timeout尝试不同的设置。
我们平均约有4000个并发用户,估计每秒请求的数量有点难,但是可能有400个(我猜)。
如果tomcat中的maxThreads总是大于httpd中的maxClients? 如果是这样多less。
我们尝试了maxClient在250和maxThreads在300,我们看到networking缓慢,但服务器看起来不错。
我们的平均httpd大小也是10mg。
任何帮助将是伟大的!
谢谢
你不会说你正在使用哪个MPM,或者哪个Tomcat版本,所以我不能像想象的那么精确。
AJP默认使用持久连接。 因此,默认情况下,Tomcat在其线程池中至less需要与httpd具有maxClients一样多的线程。 这往往是非常低效的,因为大多数连接将是空闲的。
有几种方法可以改善事情:
如果可用,切换到NIO AJP连接器(Tomcat 7以上)。 您需要使用maxThreads>预期的并发请求来configurationTomcat的AJP连接器。
禁用httpd端的连接重用。 用mod_jk这意味着使用
JkOptions + DisableReuse
忽略文档中有关性能损失的警告 – 他们是不正确的。 您仍然需要使用maxThreads>预期的并发请求来configurationTomcat的AJP连接器。
有关更多详细信息,请参阅我的反向代理演示文稿和Rainer的注释 。