Первое, что вам нужно сделать, это следить за тем, что происходит, вернуться и обновить свой вопрос, когда у вас есть более подробная информация.
Используйте небольшой скрипт, который будет запрашивать загрузку системы и памяти каждые несколько секунд и сохранять эту информацию в файл. Возможно, что-то вроде этого:
#!/bin/sh
while true
do
echo "-------`date`--------"
echo "\t\t%MEM\t%CPU"
ps ax -o comm,%mem,%cpu | sort -nk3 | tail -n 3
sleep 30
done
Сценарий будет печатать статистику использования для трех самых тяжелых процессов процессора, а затем для трех самых тяжелых процессов памяти. Затем он будет ждать 30 секунд (вы можете изменить это, задав другой номер для sleep
) и повторить все заново. Его вывод выглядит так в моей системе:
$ ./monitor.sh
-------Mon Feb 4 20:00:51 CET 2013--------
%MEM %CPU
java 9.1 3.6
Xorg 3.3 4.9
firefox 8.1 12.2
---
Xorg 3.3 4.9
firefox 8.1 12.2
java 9.1 3.6
Сохраните этот скрипт как monitor.sh, сделайте его исполняемым и запустите его в фоновом режиме, перенаправив его вывод в файл:
chmod 744 monitor.sh
./monitor.sh > usage.log &
Вы можете отслеживать прогресс, запустив tail -f usage.log
.
Дайте этому поработать некоторое время и проверьте, что происходит в следующий раз, когда ваш сервер перестанет отвечать на запросы. Будьте осторожны, хотя скрипт выводит 9 строк каждые 30 секунд. Если вы позволите ему работать слишком долго, вы получите довольно большой файл. Не забудьте остановить это, когда вы собрали необходимую информацию.