我们目前正在使用Apache2.2.3和Tomcat5(嵌入Boss4.2.2)使用 mod_proxy_jk 作为连接器。

有人可以阐明一些在正确的方法来计算/配置值下面(以及其他任何可能相关的).两Apache和Tomcat上运行的独立机,并有大量的ram(4g)。

有关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资源每请求。

如果,例如,应用程序需要的第二个中央处理器-时间来回答一个单一的请求,设置MaxClients四个会限制你的吞吐量的四每秒请求:每个请求都使用了apache连接和apache将只能处理四个在一段时间。但是,如果服务器只有两个Cpu,甚至没有这个可以达到,因为每一个壁钟第二,仅有两个cpu秒钟,但是该请求将需要四个cpu秒钟。

MinSpareServers

这告诉阿帕奇多少闲置进程应该挂在周围。大这个数目更多的突发载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也是如此。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top