У меня есть Linux-бокс, на котором размещен сайт с довольно низким трафиком. Это «маленький» экземпляр Amazon EC2, работающий под управлением Ubuntu 10.04. Когда я бегаю на нем «наверху», я обычно вижу нагрузку от 2 до 3, что, по моему опыту, довольно много. Однако на самом деле, похоже, на самом деле не так много всего происходит - процессор почти всегда простаивает, и, просмотрев файл apache2 access.log, я вижу, что проходит не так много запросов. Как мне выяснить, какие процессы ждут ЦП, чтобы я мог попытаться понять, почему метрика нагрузки такая высокая?
Используя top, вы можете видеть, какие потоки работают, а какие спят. Это должно позволить вам хотя бы знать, что истощает ваши ресурсы, если мы говорим об узком месте ЦП.
[xxx@absynthe proc]$ top -H
Должен появиться такой экран:
top - 17:54:38 up 37 min, 2 users, load average: 0.03, 0.06, 0.07
Tasks: 338 total, 2 running, 336 sleeping, 0 stopped, 0 zombie
Cpu(s): 4.1%us, 2.3%sy, 0.0%ni, 92.1%id, 1.5%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3852932k total, 1596468k used, 2256464k free, 47108k buffers
Swap: 5963768k total, 0k used, 5963768k free, 681728k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1853 root 20 0 196m 38m 15m S 9.7 1.0 1:57.58 Xorg
2186 xxx -6 0 564m 8828 7216 S 3.9 0.2 0:43.69 pulseaudio
2611 xxx 20 0 1095m 235m 27m S 3.9 6.3 2:29.52 firefox
2179 xxx 9 -11 564m 8828 7216 S 1.9 0.2 0:38.34 pulseaudio
2671 xxx 20 0 1087m 43m 18m S 1.9 1.2 0:06.06 plugin-containe
2820 xxx 20 0 1275m 67m 23m S 1.9 1.8 0:13.13 souphttpsrc13:s
2824 xxx 20 0 315m 13m 9492 S 1.9 0.4 0:02.35 gnome-terminal
3114 xxx 20 0 15088 1300 820 R 1.9 0.0 0:00.02 top
1 root 20 0 19236 1440 1152 S 0.0 0.0 0:01.07 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 0:00.17 ksoftirqd/0
5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
6 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/1
Столбец с именем S (восьмой справа) показывает S для спящих потоков и R для запущенных потоков. Вы можете выбрать порядок сортировки, нажав F (заглавная) и выбрав поле «Статус процесса». Затем вы можете изменить порядок сортировки, нажав R (заглавная), чтобы сначала увидеть запущенные потоки.
Если ваша проблема не в узком месте процессора, мне понадобится дополнительная информация, чтобы помочь вам. Возможно, вы могли бы опубликовать свой топ, как я в примере выше.
Надеюсь это поможет.
РЕДАКТИРОВАТЬ:
Если вы хотите узнать, испытываете ли вы какие-либо узкие места ввода-вывода, вы можете ввести следующую команду: vmstat -s
и ищите тики ЦП с ожиданием ввода-вывода. Если при выполнении команды с интервалом в пару секунд значение сильно возрастает, возможно, вы столкнулись с узким местом ввода-вывода. В этом случае вам может быть лучше использовать iotop, чтобы увидеть, какие процессы используют больше ресурсов ввода-вывода.
Индикатор загрузки вызван не только высокой загрузкой процессора. Процессы могут ждать по другим причинам, таким как дисковый и сетевой ввод-вывод.
На небольших инстансах Amazon EC2 дисковый ввод-вывод очень плох, особенно / dev / sda2.
Вы можете запустить iotop (apt-get install iotop в debian / ubuntu), чтобы увидеть, какой процесс использует ввод-вывод.
Команда
top -i
будут перечислены только процессы, которые вносят вклад в нагрузку. Это должно помочь вам узнать, какие процессы ждут ЦП.