在出现诸如“CRITICAL - load average: 135.12, 92.20, 44.09” 和 oom-killer 之类的几条 nagios 消息后,我用不同的设置一次又一次地检查配置,但没有成功。
似乎对 ubuntu 机器有帮助的唯一解决方法是这个更清洁的 cronjob:
[ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete
阅读 oom-killer 信息,告诉我 apache2 是坏的(父)进程。此 vserver 上的流量很少,几乎没有任何峰值。
lscpu
架构:x86_64
CPU 操作模式:32 位、64 位
字节顺序:小字节序
中央处理器:1
免费-m
内存:2003 835 1168 0 18 381
-/+ 缓冲区/缓存:435 1568
掉期:1019 129 890
apache2.conf mpm
<IfModule mpm_prefork_module>
StartServers 2
MinSpareServers 2
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 10000
</IfModule>
<IfModule mpm_worker_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
KeepAliveTimeout 15
ThreadLimit 64
ThreadsPerChild 25
MaxClients 100
MaxRequestsPerChild 10000
</IfModule>
<IfModule mpm_event_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxClients 100
MaxRequestsPerChild 10000
</IfModule>
没有类似 mysql_tuner.sh 的 apache 或类似 vps 的有用示例吗?
谢谢
您在内存上分配过多 - OOM 表示“内存不足” - 高平均负载将是机器交换的结果。
您不需要调整脚本来了解要使用的适当设置。启动 Apache,然后查看单个线程的 RAM 使用情况。通常,对于 PHP 应用程序,预计大约 30MB。然后,您可以开始计算实际可以运行多少个线程。
您可能会发现您在应用程序级别(PHP 最大内存或 MySQL)而不是 Apache 线程本身的数量上过度分配了内存;就是这样,这就是应用程序将使用量推向了边缘。
目前,要非常保守,然后逐步提高。因此,将设置降低到如下所示:
然后降低所有 MySQL 内存设置,或者至少降低连接数(大约 15 个);并降低所有 PHP 最大值。内存设置。
内存使用脚本
这是我为内存使用编写的一个小脚本,但请记住,它不会正确考虑共享库等。
只需创建一个新文件,
例如。
/root/memory_usage.sh
然后使用应用程序名称运行,
例如。
/root/memory_usage.sh apache2
或者/root/memory_usage.sh mysqld