我们目前使用mod_proxy_jk作为连接器使用Apache 2.2.3和Tomcat 5(embedded在JBoss 4.2.2中)。
有人可以通过正确的方式来计算/configuration下面的值(以及其他可能相关的东西)。 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部分:
Apache瓷砖如果/否则
我怎样才能停止sys.stdout日志logging到Apache错误文件?
git克隆与http不工作在gitlab
MAMP – Mac OS X
<IfModule prefork.c> StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 0 </IfModule>
apache HTTP:X-Forwarded-Proto in .htaccess在开发环境中导致redirect循环
将JSP / Tomcat支持添加到现有的LAMP Web服务器是否“OK”?
不加载Firebird扩展
我如何以编程方式重新启动一个系统服务(而不是apache)从Linux中的Apache?
将.htaccess转换为web.config
您应该考虑服务器可能获得的工作量。
最重要的因素可能是在高峰时间同时连接的客户端的数量。 尝试确定它,并调整您的设置的方式:
Apache和Tomcat中有足够的处理线程,当服务器负载很重时,不需要产生新的线程
在服务器中没有更多的处理线程,因为它们会浪费资源。
通过这种设置,您可以最大限度地减少服务器的内部维护开销,这可能会有很大帮助,特别是当您的负载零星时。
例如,考虑一个应用程序,你有约300个新的请求/秒。 每个请求平均需要2.5秒才能提供服务。 这意味着在任何时候你有大约750个需要同时处理的请求。 在这种情况下,您可能需要调整服务器,以便在启动时拥有〜750个处理线程,并且您可能希望最多添加〜1000个处理线程来处理极高的负载。
还要考虑一下你需要一个线程。 在前面的例子中,每个请求都是独立的,没有使用会话跟踪。 在更“web-ish”的情况下,用户可能登录到您的网站,根据您使用的软件,Apache和/或Tomcat可能需要使用相同的线程来为一个会话中的请求提供服务。 在这种情况下,你可能需要更多的线程。 不过,至少我知道Tomcat,你不需要考虑这一点,因为它可以在内部使用线程池。
MaxClients的
这是您的apache应该一次处理的并行客户端连接的基本上限。
使用prefork,每个进程只能处理一个请求。 因此整个apache 在处理单个请求所花费的时间内最多可以处理$ MaxClients请求。 当然,只有当应用程序每个请求需要小于1 / $ MaxClients资源时才能达到理想的最大值。
例如,如果应用程序花费了一秒的cpu时间来回答单个请求,则将MaxClients设置为4会将吞吐量限制为每秒四个请求:每个请求使用一个apache连接,而apache一次只能处理四个请求。 但是,如果服务器只有两个cpu,甚至不能达到,因为每个挂钟只有两个cpu秒,但是这些请求需要四个cpu秒。
比MinSpareservers
这告诉Apache有多少空闲进程应该挂起。 这个数字越大,在需要产生额外的进程之前,apache可以吞噬的爆发越多,这是昂贵的,从而减缓了当前的请求。
这个正确的设置取决于你的工作量。 如果您的页面包含许多子请求(图片,iframe,javascript,css),那么点击一个页面可能会在短时间内耗尽更多的进程。
MaxSpareservers的
有太多未使用的apache进程只是浪费内存,因此apache使用MaxSpareservers数量来限制备用进程的数量,以保留突发的请求。
MaxRequestsPerChild
这限制了单个进程在其整个生命周期内处理的请求数量。 如果你非常关心稳定性,你应该在这里设置一个实际的限制来持续地回收Apache进程,以防止资源泄漏影响系统。
Startservers的
这只是apache默认启动的进程数量。 将其设置为通常运行apache进程的数量,以减少系统的预热时间。 即使你忽略这个设置,apache也会根据需要使用Min- / MaxSpareservers值产生新的进程。
更多信息
另请参阅apache的多处理模块的文档 。
默认的设置通常是体面的起点,看你的应用程序真的需要什么。 我不知道你期望有多少流量,所以猜测MaxThreads,MaxClients和Maxservers有点困难。 我可以告诉你,我所处理的大多数客户(主要用于运行Tomcat中运行Java应用程序的客户)使用默认设置一段时间,而不需要太多的调整。
如果你不需要太多的流量,那么这些设置“太高”也不应该太多影响你。 除非有必要,否则Apache不会为整个256个潜在客户端分配资源。 Tomcat也是如此。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。