当前,我们使用Apache 2.2.3和Tomcat 5(包含在JBoss 4.2.2中)mod_proxy_jk作为连接器。
mod_proxy_jk
有人可以阐明一些正确的方法来计算/配置以下值(以及其他可能相关的内容)的方法。Apache和Tomcat都在不同的计算机上运行,并且具有大量的ram(每个RAM为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>
您应该考虑服务器可能承担的工作量。
最重要的因素可能是高峰时间同时连接的客户端数量。尝试确定它并以下列方式调整设置:
通过这种设置,您可以最大程度地减少服务器的内部维护开销,这可能会有很大帮助,尤其是在负载零星的情况下。
例如,考虑一个您每秒有300个新请求的应用程序。每个请求平均需要2.5秒才能投放。这意味着在任何给定时间,您都有大约750个需要同时处理的请求。在这种情况下,您可能需要调整服务器,以便它们在启动时具有约750个处理线程,并且您可能希望添加最多约1000个处理线程,以处理极高的负载。
还要考虑到底需要什么线程。在前面的示例中,每个请求彼此独立,没有使用会话跟踪。在更加“网络化”的情况下,您可能使用户登录到您的网站,并且根据所使用的软件,Apache和/或Tomcat可能需要使用相同的线程来为一个会话中的请求提供服务。在这种情况下,您可能需要更多线程。但是,至少我知道Tomcat,您实际上并不需要考虑这一点,因为它无论如何都在内部与线程池一起使用。