目前,我们正在使用Apache 2.2.3和Tomcat 5(JBoss中4.2.2的嵌入式)使用mod_proxy_jk
作为连接器。
有人可以洒在了正确的方法来计算/配置下面的值(以及其他任何可能有关)的一些情况。 既Apache和Tomcat在单独的机器上运行,并且具有压头的丰富量(4GB每个)。
相关的server.xml部分:
<Connector port="8009"
address="${jboss.bind.address}"
protocol="AJP/1.3"
emptySessionPath="true"
enableLookups="false"
redirectPort="8443"
maxThreads="320"
connectionTimeout="45000"
/>
相关的httpd.conf部分:
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 0
</IfModule>
你应该考虑工作负载的服务器可能会。
最重要的因素可能是同时连接的客户端在高峰时间的数量。 试着找出它和调整设置的方式,其中:
- 有两个Apache和Tomcat足够的处理线程,他们并不需要产生新的线程,当服务器负载过重
- 有没有办法比需要的,因为他们会浪费资源的服务器进行更多的处理线程。
在这种设置中,你可以最大限度地减少服务器的内部维护开销,可能有很大的帮助,尤其是当你的负载是零星的。
例如考虑,你有300〜新的请求的应用程序/秒。 每个请求都要求平均2.5秒投放。 这意味着,在任何给定的时间您有需要可同时处理750〜请求。 在这种情况下,你可能要调整你的服务器,这样,他们在启动时〜750的处理线程,你可能想在最大添加类似〜1000个的处理线程来处理极高的负荷。
还考虑什么,你需要一个线程。 在前面的示例中,每个请求是独立于其他人,有不使用会话跟踪。 在一个更“网络十岁上下的”情况下,你可能有用户登录到你的网站,并根据您的软件使用,Apache和/或Tomcat可能需要使用相同的线程来服务于进来一个会话的请求。 在这种情况下,你可能需要更多的线程。 但是我知道Tomcat的,至少,你不会真的需要考虑这个,因为它与线程池的内部工作原理反正。
MaxClients的
这是你的apache应该立即处理并行客户端连接的基本帽。
与prefork的,只有一个请求可以每个进程来处理。 因此,整个Apache可以在需要处理一个请求的时间最多 $ MaxClients的请求处理。 当然,这种理想的最大只能如果应用每请求需要不到1 / $ MaxClients的资源达到。
如果,例如,应用程序需要的CPU时间第二个回答一个请求,设置MaxClients的四个您的吞吐量将限制在每秒4个请求:每个请求使用一个Apache连接和Apache只会在一次处理四种。 但是,如果服务器只有两个CPU,甚至没有这个可以达到,因为每一个挂钟仅次于拥有两个CPU秒,但请求将需要四个CPU秒。
比MinSpareServers
这告诉apache很多空闲进程应该如何流连。 越大这个数目越突发负载Apache可以需要产卵额外的过程,这是昂贵的前吞服,从而减慢了当前请求。
这样做的正确的设置取决于你的工作量。 如果你有很多的子请求(图片,内部框架,JavaScript的,CSS)则创下了单页可能会占用更多的过程时间很短的网页。
MaxSpareServers的
有太多的未使用的Apache进程游逛只是浪费内存,从而Apache使用MaxSpareServers的数量限制它持有储备的请求的阵阵备用过程的量。
MaxRequestsPerChild
这限制要求一个单一的过程将在其整个生命周期处理的数量。 如果你很关心稳定性,你应该在这里把一个实际的限制,不断循环使用Apache进程,以避免资源泄漏影响系统。
StartServers的
这仅仅是一个过程量默认的Apache启动。 将其设置为运行Apache进程,以降低系统的预热时间通常的量。 即使你忽略这个设置,Apache会使用MIN- / MaxSpareServers的值需要产生新的进程。
更多信息
又见于Apache的多处理模块的文档 。
默认设置通常是体面的出发点,看看您的应用程序是真的需要。 我不知道你多少流量期待,在MaxThreads,所以MaxClients的猜测,并MaxServers是有点难度。 我可以告诉你,我最处理(工作一个linux虚拟主机,这主要涉及在Tomcat上运行的Java应用程序客户)的客户使用默认设置相当长的一段时间,而不需要太多的调整。
如果你不希望大的流量,那么这些设置为“太高”真不应该影响你太多两种。 Apache的不会,除非有必要分配资源为整个256个的潜在客户。 这同样适用于Tomcat作为好。