Apache MaxRequestWorkers 问题未解决

Apache MaxRequestWorkers 问题未解决

当我尝试每秒处理 1000 个请求时,我的网站生成了错误。我在 Apache 日志中看到以下错误

Apr 06 00:00:33 ns503772******100.net httpd[9585]: AH00515: WARNING: MaxRequestWorkers of 2000 would require 80 servers and
Apr 06 00:00:33 ns503772******100.net httpd[9585]: would exceed ServerLimit of 16, decreasing to 400.
Apr 06 00:00:33 ns503772******100.net httpd[9585]: To increase, please see the ServerLimit directive.

我当前的设置如下

<IfModule mpm_event_module>
LoadModule cgid_module modules/mod_cgid.so
MaxRequestWorkers 2000
</IfModule>

我正在使用 Plesk Onyx,服务器规格如下。

处理器:Intel Xeon E5-1620v2 - 4c/8t - 3.7 GHz/3.9 GH

服务器内存:64GB DDR3

然后我尝试了以下设置

<IfModule mpm_event_module>
StartServers                80
MinSpareThreads             50
MaxSpareThreads             300

ThreadLimit                 25
ThreadsPerChild             25

ServerLimit                 500
MaxRequestWorkers           2000
MaxConnectionsPerChild      0
</IfModule>

但问题仍未解决,梗塞产生了更多错误并且日志写入器开始消耗 CPU

输出httpd -V | grep -i 'version\|mpm'如下

Server version: Apache/2.4.6 (CentOS)
Server MPM:     event

答案1

ServerLimit 未定义/未读取,但是您想要尝试的值仍然没有意义,因为每个子线程已经强制将服务器限制设置为 80。

为什么你使用这么少的线程?你生成了太多不必要的子进程,可能会降低 Apache 进程的性能(生成进程比线程更昂贵)

笔记:MPM 设置需要完全停止/启动(而不是重新启动)。

设置此项。

StartServers 1
ServerLimit 4
MinSpareThreads 500
MaxSpareThreads 1500
MaxRequestWorkers 2000
ThreadsPerChild 500
ThreadLimit 500
MaxConnectionsPerChild 0
MaxKeepAliveRequests 1500
KeepAlive On
KeepAliveTimeout 10

并且一定要确保您已完全停止,然后才开始真正应用更改。

相关内容