看起来像我的Apache反向代理可能会成为瓶颈和陷入用户可以做出的请求数量。
我在server1上运行Apache和Tomcat,它具有96 GB内存,rhel5 x64,24内核。 很健壮。
Postgresql数据库在server2上运行,内存为50gb,rhel5 x64,24内核。
Tomcatconfiguration为使用60GB内存(我可以根据需要增加或减less)。 我每分钟处理数百次命中(来自用户以及远程API调用),看起来像Apache无法跟上。
我应该在httpd.conf中增加什么样的设置来确保更多的内存? 我也读过apache中的线程数与数据库线程直接关联。 我的postgres服务器肯定很健壮,并不习惯它的潜力,但我不想增加一个牺牲另一个。 那么如何弄清楚两者的正确设置呢?
Apache正在处理我的SSL,服务于443.Tomcat有一个端口8080的连接器。
我应该增加apache的工作人员数量吗? 还是给他们更多的记忆?
你只是猜测。 你有没有增加Tomcat和Apache的最大连接数? 您是否增加了Tomcat应用程序数据库连接池中的连接数以及PostgreSQL中的最大连接数? 尝试增加这4个值,看看会发生什么。
还有60GB RAM的Tomcat不是一个好主意。 每隔一段时间,每个Java垃圾收集器(哪一个都没关系)阻止了世界的停顿。 这个暂停的时间与ram的数量成正比。 在此期间,您的系统将完全无响应。 使用60GB内存,这个暂停可能长达60秒。 尝试产生多个较小的Tomcat实例,并使用mod_jk负载平衡。
祝你好运
在Tomcat服务器上启用GG日志logging并监视您的内存使用情况。 我的目标是每10到15秒一个新的GC。 对于在线应用程序,您可能需要考虑使用并发GC。 如果应用程序停止时间过长,我会更频繁地每隔一两个小时针对老一代GC。
如果Apache无法处理负载,我会感到惊讶。 监视活动连接的数量。 如果你用完了,那么你可能需要增加孩子的数量和/或每个孩子的连接数量。 HTTP 1.1可以增加所需连接的数量。 如果您增加了保持活动超时,请考虑减less它。