当前位置:  开发笔记 > 编程语言 > 正文

配置Apache/Tomcat的最佳实践

如何解决《配置Apache/Tomcat的最佳实践》经验,为你挑选了2个好方法。

我们目前正在使用Apache 2.2.3和Tomcat 5(嵌入在JBoss 4.2.2中)mod_proxy_jk作为连接器.

有人可以详细说明计算/配置下面的值的正确方法(以及其他可能相关的值).Apache和Tomcat都在不同的机器上运行,并且有大量的ram(每个4gb).

相关的server.xml部分:


相关的httpd.conf部分:


  StartServers       8
  MinSpareServers    5
  MaxSpareServers   20
  ServerLimit      256
  MaxClients       256
  MaxRequestsPerChild  0

Zizzencs.. 7

您应该考虑服务器可能获得的工作负载.

最重要的因素可能是高峰时间同时连接的客户端数量.尝试确定它并以下列方式调整您的设置:

Apache和Tomcat中有足够的处理线程,当服务器负载很重时,它们不需要生成新线程

服务器中的处理线程数量不会超过需要,因为它们会浪费资源.

通过这种设置,您可以最大限度地减少服务器的内部维护开销,这可能会有很大帮助,尤其是当您的负载是零星的时候.

例如,考虑一个应用程序,您有大约300个新请求/秒.每个请求平均需要2.5秒才能完成.这意味着在任何给定时间您都需要同时处理约750个请求.在这种情况下,您可能希望调整服务器,以便它们在启动时具有~750个处理线程,并且您可能希望最多添加~1000个处理线程以处理极高负载.

还要考虑你需要一个线程的确切内容.在前面的示例中,每个请求都独立于其他请求,没有使用会话跟踪.在更"web-ish"的场景中,您可能会让用户登录到您的网站,并且根据您使用的软件,Apache和/或Tomcat可能需要使用相同的线程来为一个会话中的请求提供服务.在这种情况下,您可能需要更多线程.但是至少我知道Tomcat,你不需要考虑这个,因为它无论如何都在内部使用线程池.



1> Zizzencs..:

您应该考虑服务器可能获得的工作负载.

最重要的因素可能是高峰时间同时连接的客户端数量.尝试确定它并以下列方式调整您的设置:

Apache和Tomcat中有足够的处理线程,当服务器负载很重时,它们不需要生成新线程

服务器中的处理线程数量不会超过需要,因为它们会浪费资源.

通过这种设置,您可以最大限度地减少服务器的内部维护开销,这可能会有很大帮助,尤其是当您的负载是零星的时候.

例如,考虑一个应用程序,您有大约300个新请求/秒.每个请求平均需要2.5秒才能完成.这意味着在任何给定时间您都需要同时处理约750个请求.在这种情况下,您可能希望调整服务器,以便它们在启动时具有~750个处理线程,并且您可能希望最多添加~1000个处理线程以处理极高负载.

还要考虑你需要一个线程的确切内容.在前面的示例中,每个请求都独立于其他请求,没有使用会话跟踪.在更"web-ish"的场景中,您可能会让用户登录到您的网站,并且根据您使用的软件,Apache和/或Tomcat可能需要使用相同的线程来为一个会话中的请求提供服务.在这种情况下,您可能需要更多线程.但是至少我知道Tomcat,你不需要考虑这个,因为它无论如何都在内部使用线程池.



2> David Schmit..:

MaxClients的

这是您的apache应该立即处理的并行客户端连接的基本上限.

使用prefork,每个进程只能处理一个请求.因此,整个apache可以处理单个请求所花费的时间内处理最多 $ MaxClients请求.当然,只有当应用程序每个请​​求需要少于1/$ MaxClients资源时,才能达到理想的最大值.

例如,如果应用程序需要花费第二个cpu-time来回答单个请求,则将MaxClients设置为4会将吞吐量限制为每秒四个请求:每个请求都会使用apache连接,而apache一次只能处理四个请求.但是如果服务器只有两个CPU,甚至不能达到这个,因为每个挂钟只有两个CPU秒,但请求需要4个CPU秒.

比MinSpareServers

这告诉apache有多少空闲进程应该挂起.这个数字越大,在需要产生额外进程之前,apache可以吞下的爆发负载越多,这是昂贵的,因此减慢了当前的请求.

正确设置取决于您的工作量.如果您的页面包含许多子请求(图片,iframe,javascript,css),那么点击单个页面可能会在短时间内耗尽更多进程.

MaxSpareServers的

有太多未使用的apache进程只是浪费内存,因此apache使用MaxSpareServers数来限制它为请求突发保留的备用进程数量.

MaxRequestsPerChild

这限制了单个进程在其整个生命周期中处理的请求数.如果您非常关注稳定性,则应在此处设置实际限制以持续回收apache进程,以防止资源泄漏影响系统.

StartServers的

这只是apache默认启动的进程数量.将此设置为正常运行的apache进程数量,以减少系统的预热时间.即使您忽略此设置,apache也会使用Min-/MaxSpareServers值根据需要生成新进程.

更多信息

另请参阅apache的多处理模块的文档.


谢谢,这清除了许多Apache配置选项,但不清楚它们应该如何与tomcat中的设置相关,也不管如何配置可用资源.
推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有