Назад | Перейти на главную страницу

CentOS - высокая загрузка процессора в определенное время в ночное время

У меня есть сервер CentOS-5, который очень мало загружен. Типичный вывод команды "sar" выглядит следующим образом:

02:20:01 PM       CPU     %user     %nice   %system   %iowait    %steal     %idle
02:30:01 PM       all      0.63      0.00      1.23      0.31      0.00     97.84
02:40:01 PM       all      0.92      0.32      1.34      0.45      0.00     96.97
02:50:01 PM       all      0.76      0.00      0.93      0.77      0.00     97.54
03:00:01 PM       all      0.41      0.00      0.72      0.15      0.00     98.72
03:10:01 PM       all      0.78      0.32      1.49      1.83      0.00     95.58
03:20:01 PM       all      0.27      0.00      0.50      0.62      0.00     98.61

Однако я наблюдаю, что каждую ночь в 4:10 загрузка процессора очень высока. Это происходит почти каждую ночь, за исключением нескольких дней в месяц. Команда "sar" показывает что-то вроде этого:

03:00:01 AM       all      0.10      0.00      0.10      0.11      0.00     99.68
03:10:01 AM       all      0.08      0.32      0.18      0.21      0.00     99.21
03:20:01 AM       all      0.03      0.00      0.03      0.19      0.00     99.76
03:30:01 AM       all      0.01      0.00      0.02      0.06      0.00     99.91
03:40:02 AM       all      0.75      0.32      3.21     15.43      0.00     80.28
03:50:01 AM       all      0.95      0.00      3.43      9.25      0.00     86.36
04:00:01 AM       all      0.69      0.00      3.79      4.86      0.00     90.66
04:10:01 AM       all     22.38      0.54      4.47     30.92      0.00     41.69
04:20:01 AM       all      2.99      0.02      4.58      4.95      0.00     87.46
04:30:01 AM       all      0.34      0.00      0.61     13.22      0.00     85.83
04:40:01 AM       all      0.05      0.32      0.17      0.52      0.00     98.95
04:50:01 AM       all      0.22      0.00      0.36      0.11      0.00     99.32
05:00:01 AM       all      0.23      0.00      0.36      0.12      0.00     99.28

Как я могу определить, что вызывает этот пик использования ЦП, iowait и т. Д. Я изучил / var / log / messages, но не смог определить. В то время нет других заданий cron или других задач, которые должны выполняться. Поскольку это отображается под% user, я могу только понять, что это какой-то пользовательский процесс. Как я могу точно определить причину?

Это когда cron.daily скрипты запускаются ... По умолчанию запускается ежедневно сразу после 4:00.

Из /etc/crontabs

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily <-- THIS ONE!!
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

И в /etc/cron.daily.

Вероятно, виноват ваш mlocate.cron, который работает updatedb и может быть довольно интенсивным в некоторых системах:

#!/bin/sh
nodevs=$(< /proc/filesystems awk '$1 == "nodev" { print $2 }')
renice +19 -p $$ >/dev/null 2>&1
/usr/bin/updatedb -f "$nodevs"

Как указано в / etc / crontab, ежедневный автоматический запуск cron запланирован в 04:02:

[...]
02 4 * * * root run-parts /etc/cron.daily

Запуск ls /etc/cron.daily/ покажет вам запущенные команды, запланированные на 04:02 (они выполняются последовательно). Вы можете легко изменить их, чтобы выводить нагрузку «до» и после их выполнения.

Однако, если это стандартная установка CentOS, очень высока вероятность, что скрипт, ответственный за высокую нагрузку, - это либо mlocate.cron, 0logwatch (если он установлен), либо logrotate.

mlocate выполнит полное сканирование файловой системы (что объяснит увеличенное время ожидания ввода-вывода в вашей системе), 0logwatch проанализирует ваш файл журнала (который может быть довольно большим, что приведет к операциям ввода-вывода), а logrotate также может создать значительный ввод-вывод. o если он перемещает файл между файловыми системами.

Поскольку вы говорите, что это происходит в 4:10 почти каждый день, грубым способом было бы запустить ps aux в cron каждую минуту с 4:05 до 4:15 и получить результат, записанный в файл. Затем вы можете проверить% использования ЦП командой, которая потребляет ваш процессор.

Скорее всего, это работа cron - возможно, "locationb" обновляется?

Добавление вашего собственного вывода cron "ps" на ночь может помочь обнаружить виновника.