由于 Apache 未发布的信号量(配置为反向代理),我显然有轻微的内存泄漏。当平台加载更多额外流量时,这种泄漏会随着时间的推移变得更加重要。当我们发出以下命令以及硬重启 Apache 时,可以释放内存。正常重启不会释放内存。
/usr/bin/ipcrm sem $(/usr/bin/ipcs -s | grep www-data | awk '{print$2}')
Run Code Online (Sandbox Code Playgroud)
如果我们不强制释放信号量,我们就会遇到类似于下面帖子中描述的问题。 什么是信号量,它们是如何产生的?
Apache 然后拒绝重新启动,我们在日志中没有收到错误消息。我们已经进行了多次测试,但均未成功解决问题。我们使用 kernel.sem 值更改了 sysctl.conf 文件
当前值为:
$ cat /proc/sys/kernel/sem
500 64000 64 256
Run Code Online (Sandbox Code Playgroud)
我一一停用了下面的模块(并相应地更改了Apache配置文件):
LoadModule security2_module /usr/lib/apache2/modules/mod_security2.so
LoadModule geoip_module /usr/lib/apache2/modules/mod_geoip.so
LoadModule pagespeed_module /usr/lib/apache2/modules/mod_pagespeed_ap24.so
LoadModule evasive20_module /usr/lib/apache2/modules/mod_evasive20.so
LoadModule proxy_protocol_module /usr/lib/apache2/modules/mod_proxy_protocol.so
Run Code Online (Sandbox Code Playgroud)
然后我尝试从 mpm_event 移动到 mpm_worker,但也没有太大成功。
Apache 的当前版本和模块是:
$ apache2 -V
Server version: Apache/2.4.7 (Ubuntu)
Server built: Mar 10 2015 13:05:59
Server's Module Magic Number: 20120211:27
Server loaded: APR 1.5.1-dev, APR-UTIL 1.5.3
Compiled using: APR …
Run Code Online (Sandbox Code Playgroud) apache-2.4 ×1