Apache 和 Payara 的服务器问题

Apache 和 Payara 的服务器问题

我正在使用 apache 作为代理,将流量重定向到 payara 服务器。我遇到的问题是,当服务器达到流量高峰时,响应速度很慢。我查看了我们的 mpm_worker_module,以下是配置:

<IfModule mpm_worker_module>
    ServerLimit              250
    StartServers             10
    MinSpareThreads          75
    MaxSpareThreads          250
    ThreadLimit              64
    ThreadsPerChild          32
    MaxRequestWorkers          8000
    MaxConnectionsPerChild  10000
</IfModule>

这里的数字似乎非常夸张,而且非常错误。我不是 Apache 专家,这实际上是我第一次遇到此类问题。

Apache 服务器运行在 8GB RAM 上,根据此处 stack 上的各种帖子,这不能保证 8000 MaxRequestWorkers。

主要问题是当有超过 50 个用户连接时,服务器会变得非常迟钝。任何帮助和进一步的信息都非常感谢。

答案1

ServerLimit值似乎太高了。Apache 文档说:

使用此指令时必须特别小心。如果 ServerLimit 设置为远高于必要值的值,则会分配额外的未使用的共享内存。如果 ServerLimit 和 MaxRequestWorkers 都设置为高于系统可以处理的值,Apache httpd 可能无法启动或系统可能变得不稳定。

一般建议ServerLimit不要大于服务器的 CPU 核心数。这样,​​Apache 进程数就不会超过处理这些进程的核心数。

ThreadsPerChild,它定义了单个 apache 进程可能产生的最大线程数,看起来还可以,但您可以尝试更高的值(例如 50)以获得更好的性能。

MaxRequestWorkers不应大于ServerLimit和的乘积ThreadsPerChild,顺便说一下,上面的配置就是这种情况。假设ServerLimit8 和 50 的乘积ThreadsPerChild应该是 400。

MaxSpareThreadsMinSpareThreads在该配置中设置为默认值,无需更改。MaxConnectionsPerChild也可以。

因此我会尝试改变这些值:

ServerLimit              8
ThreadsPerChild          50
MaxRequestWorkers        400

并重新启动 apache 服务。

相关内容