微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

configurationApache / Tomcat的最佳实践

我们目前使用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

Xampp – Apache不启动并抛出一个错误

<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 举报,一经查实,本站将立刻删除。

相关推荐