配置Apache / Tomcat的最佳实践(Best practices for configur

2019-07-29 08:51发布

目前,我们正在使用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>

Answer 1:

你应该考虑工作负载的服务器可能会。

最重要的因素可能是同时连接的客户端在高峰时间的数量。 试着找出它和调整设置的方式,其中:

  • 有两个Apache和Tomcat足够的处理线程,他们并不需要产生新的线程,当服务器负载过重
  • 有没有办法比需要的,因为他们会浪费资源的服务器进行更多的处理线程。

在这种设置中,你可以最大限度地减少服务器的内部维护开销,可能有很大的帮助,尤其是当你的负载是零星的。

例如考虑,你有300〜新的请求的应用程序/秒。 每个请求都要求平均2.5秒投放。 这意味着,在任何给定的时间您有需要可同时处理750〜请求。 在这种情况下,你可能要调整你的服务器,这样,他们在启动时〜750的处理线程,你可能想在最大添加类似〜1000个的处理线程来处理极高的负荷。

还考虑什么,你需要一个线程。 在前面的示例中,每个请求是独立于其他人,有不使用会话跟踪。 在一个更“网络十岁上下的”情况下,你可能有用户登录到你的网站,并根据您的软件使用,Apache和/或Tomcat可能需要使用相同的线程来服务于进来一个会话的请求。 在这种情况下,你可能需要更多的线程。 但是我知道Tomcat的,至少,你不会真的需要考虑这个,因为它与线程池的内部工作原理反正。



Answer 2:

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的多处理模块的文档 。



Answer 3:

默认设置通常是体面的出发点,看看您的应用程序是真的需要。 我不知道你多少流量期待,在MaxThreads,所以MaxClients的猜测,并MaxServers是有点难度。 我可以告诉你,我最处理(工作一个linux虚拟主机,这主要涉及在Tomcat上运行的Java应用程序客户)的客户使用默认设置相当长的一段时间,而不需要太多的调整。

如果你不希望大的流量,那么这些设置为“太高”真不应该影响你太多两种。 Apache的不会,除非有必要分配资源为整个256个的潜在客户。 这同样适用于Tomcat作为好。



文章来源: Best practices for configuring Apache / Tomcat