我是 Apache 的新手,正在寻找可以给我指明正确方向的人。
我们目前运行一个 apache 服务器来处理 openstack(horizon)的内部、低容量 web 接口以及 api 服务器。
最近我们遇到了一个问题,当 apache 在短时间内受到大量 api 请求的影响时,它会“锁定”(即,它会在一段时间内停止响应任何请求)。
apache 错误日志中没有显示任何内容,但我确实看到一些 apache 进程运行时的驻留内存集比正常情况下高得多:
一旦进程的驻留内存恢复到正常水平,apache 就会再次开始正常响应。
以下是“锁定”期间的硬件使用情况:
这是 apache 使用的配置文件:
LockFile ${APACHE_LOCK_DIR}/accept.lock
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
<IfModule mpm_worker_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
<IfModule mpm_event_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
AccessFileName .htaccess
<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy all
</Files>
DefaultType None
HoetnameLookups Off
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
Include mods-enabled/*.load
Include mods-enabled/*.conf
Include httpd.conf
Include ports.conf
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
Include conf.d/
Include sites-enabled/
我还应该研究其他什么来找到问题的根源吗?基本上,我想找出需要更改什么,无论是服务器硬件还是 apache 配置,以便让 Web 服务器在当前负载下顺利运行。任何帮助都将不胜感激!
答案1
如果您在此处复制粘贴了配置,则其中存在拼写错误(HoetnameLookups
应该是HostnameLookups
)。在交换开始之前,这几乎不会成为导致内存耗尽的原因,但可能值得一试。