gpt4 book ai didi

java - 配置 Apache/Tomcat 的最佳实践

转载 作者:太空狗 更新时间:2023-10-29 22:35:19 25 4
gpt4 key购买 nike

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

有人可以阐明计算/配置以下值的正确方法(以及可能相关的任何其他内容)。 Apache 和 Tomcat 都在不同的机器上运行,并且有大量的 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>

最佳答案

您应该考虑服务器可能承受的工作负载。

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

  • Apache 和 Tomcat 中都有足够的处理线程,当服务器负载过重时它们不需要生成新线程
  • 服务器中的处理线程不能超过需要,因为它们会浪费资源。

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

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

还要考虑您究竟需要线程做什么。在前面的示例中,每个请求都是独立于其他请求的,没有使用 session 跟踪。在更“网络化”的场景中,您可能让用户登录到您的网站,并且根据您使用的软件,Apache 和/或 Tomcat 可能需要使用相同的线程来处理来自一个 session 的请求。在这种情况下,您可能需要更多线程。但是,至少据我了解 Tomcat,您真的不需要考虑这一点,因为它无论如何都在内部使用线程池。

关于java - 配置 Apache/Tomcat 的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/105754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com