最佳做法,用于配置Apache/Tomcat
题
我们目前正在使用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也是如此。