Я использую большой экземпляр Amazon EC2 (память 7,5 ГБ) для своего http-сервера. Недавно я заметил, что мои команды ssh работают медленно, поэтому я проверил использование памяти.
free -t -m
total used free shared buffers cached
Mem: 7455 7373 82 0 1404 39
-/+ buffers/cache: 5929 1526
Swap: 0 0 0
Total: 7455 7373 82
Значит, что-то занимает много памяти. Я дважды в день перезапускаю httpd, чтобы освободить память, и примерно через 12 часов он снова заполняется. Среднесуточная загрузка ЦП ниже 20%.
Вот первая команда, отсортированная по использованию памяти.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
31492 apache 20 0 98.6m 4444 460 S 1.0 0.1 0:04.38 sshd
31493 apache 20 0 168m 12m 608 D 1.0 0.2 0:09.09 rsync
3288 apache 20 0 1988m 1.5g 1468 S 0.7 20.0 4:13.87 httpd
16935 apache 20 0 782m 246m 1532 S 0.7 3.3 0:38.71 httpd
31505 apache 20 0 263m 14m 412 S 0.7 0.2 0:01.27 rsync
3 root 20 0 0 0 0 S 0.3 0.0 7:35.26 ksoftirqd/0
217 root 20 0 0 0 0 S 0.3 0.0 10:38.66 kswapd0
3844 apache 20 0 1676m 1.1g 1628 S 0.3 14.8 3:20.79 httpd
4280 apache 20 0 1275m 847m 1376 S 0.3 11.4 2:36.90 httpd
5323 apache 20 0 946m 616m 1304 S 0.3 8.3 1:53.98 httpd
6580 apache 20 0 1038m 504m 1584 S 0.3 6.8 1:30.28 httpd
8394 apache 20 0 974m 402m 1584 S 0.3 5.4 1:10.86 httpd
22210 apache 20 0 647m 191m 1532 S 0.3 2.6 0:26.09 httpd
26899 apache 20 0 717m 139m 1480 S 0.3 1.9 0:14.65 httpd
31622 root 20 0 15060 1176 888 R 0.3 0.0 0:00.12 top
1 root 20 0 19380 296 0 S 0.0 0.0 0:00.46 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
4 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0
Один из скриптов, запускаемых Apache, имеет утечку памяти. Вам нужно отследить сценарий. Вы, вероятно, захотите использовать strace
.
А пока вы можете запланировать /etc/init.d/httpd graceful
работать с интервалом, чтобы освободить память.
Вы можете изучить свои переменные PHP. Существуют различные сценарии настройки, которые вы можете запустить, чтобы получить более глубокое представление о том, как работает Apache. Я лично рекомендую ApacheBuddy (http://quicksnips.dunsmor.com/remote/apachebuddy.pl) strace также является хорошим ресурсом, если вы разбираетесь в чтении вывода, вы можете для начала попробовать следующую команду:
# ps auxw | grep sbin/apache | awk '{print"-p " $2}' | xargs strace