В последние несколько дней я пытался понять странности, которые происходят в нашей инфраструктуре, но я не мог понять это, поэтому я обращаюсь к вам, ребята, чтобы дать мне несколько советов.
Я заметил в Graphite всплески load_avg, которые происходят со смертельной регулярностью примерно каждые 2 часа - это не совсем 2 часа, но очень регулярно. Прилагаю скриншот, который я взял из Graphite
Я застрял в расследовании - регулярность этого заставляла меня думать, что это какое-то задание cron или что-то в этом роде, но на этих серверах НЕТ cronjobs, на самом деле это виртуальные машины, работающие в облаке Rackspace. Я ищу какое-то указание на то, что может вызывать эти проблемы, и на то, как исследовать это дальше.
Серверы довольно простаивают - это промежуточная среда, поэтому трафик почти не поступает / на них не должно быть нагрузки. Это все 4 виртуальных ядра виртуальных машин. Что я знаю точно, так это то, что мы берем кучу образцов графита примерно каждые 10 секунд, но если это причина нагрузки, то я бы ожидал, что она будет постоянно высокой, а не происходить каждые 2 часа волнообразно на разных серверах.
Любая помощь в расследовании этого будет принята с благодарностью!
Вот некоторые данные из sar для app01 - это первый синий пик на картинке выше - я не смог сделать НИКАКИХ выводов из этих данных. Также не то, чтобы всплеск записи байтов, который вы видите каждые полчаса (НЕ КАЖДЫЕ 2 ЧАСА), связан с тем, что шеф-клиент запускается каждые 30 минут. Я постараюсь собрать больше данных, хотя я уже сделал это, но не мог сделать никаких выводов из них.
ЗАГРУЗИТЬ
09:55:01 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
10:05:01 PM 0 125 1.28 1.26 0.86 0
10:15:01 PM 0 125 0.71 1.08 0.98 0
10:25:01 PM 0 125 4.10 3.59 2.23 0
10:35:01 PM 0 125 0.43 0.94 1.46 3
10:45:01 PM 0 125 0.25 0.45 0.96 0
10:55:01 PM 0 125 0.15 0.27 0.63 0
11:05:01 PM 0 125 0.48 0.33 0.47 0
11:15:01 PM 0 125 0.07 0.28 0.40 0
11:25:01 PM 0 125 0.46 0.32 0.34 0
11:35:01 PM 2 130 0.38 0.47 0.42 0
11:45:01 PM 2 131 0.29 0.40 0.38 0
11:55:01 PM 2 131 0.47 0.53 0.46 0
11:59:01 PM 2 131 0.66 0.70 0.55 0
12:00:01 AM 2 131 0.81 0.74 0.57 0
ЦПУ
09:55:01 PM CPU %user %nice %system %iowait %steal %idle
10:05:01 PM all 5.68 0.00 3.07 0.04 0.11 91.10
10:15:01 PM all 5.01 0.00 1.70 0.01 0.07 93.21
10:25:01 PM all 5.06 0.00 1.74 0.02 0.08 93.11
10:35:01 PM all 5.74 0.00 2.95 0.06 0.13 91.12
10:45:01 PM all 5.05 0.00 1.76 0.02 0.06 93.10
10:55:01 PM all 5.02 0.00 1.73 0.02 0.09 93.13
11:05:01 PM all 5.52 0.00 2.74 0.05 0.08 91.61
11:15:01 PM all 4.98 0.00 1.76 0.01 0.08 93.17
11:25:01 PM all 4.99 0.00 1.75 0.01 0.06 93.19
11:35:01 PM all 5.45 0.00 2.70 0.04 0.05 91.76
11:45:01 PM all 5.00 0.00 1.71 0.01 0.05 93.23
11:55:01 PM all 5.02 0.00 1.72 0.01 0.06 93.19
11:59:01 PM all 5.03 0.00 1.74 0.01 0.06 93.16
12:00:01 AM all 4.91 0.00 1.68 0.01 0.08 93.33
IO
09:55:01 PM tps rtps wtps bread/s bwrtn/s
10:05:01 PM 8.88 0.15 8.72 1.21 422.38
10:15:01 PM 1.49 0.00 1.49 0.00 28.48
10:25:01 PM 1.54 0.00 1.54 0.03 29.61
10:35:01 PM 8.35 0.04 8.31 0.32 411.71
10:45:01 PM 1.58 0.00 1.58 0.00 30.04
10:55:01 PM 1.52 0.00 1.52 0.00 28.36
11:05:01 PM 8.32 0.01 8.31 0.08 410.30
11:15:01 PM 1.54 0.01 1.52 0.43 29.07
11:25:01 PM 1.47 0.00 1.47 0.00 28.39
11:35:01 PM 8.28 0.00 8.28 0.00 410.97
11:45:01 PM 1.49 0.00 1.49 0.00 28.35
11:55:01 PM 1.46 0.00 1.46 0.00 27.93
11:59:01 PM 1.35 0.00 1.35 0.00 26.83
12:00:01 AM 1.60 0.00 1.60 0.00 29.87
СЕТЬ:
10:25:01 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
10:35:01 PM lo 8.36 8.36 2.18 2.18 0.00 0.00 0.00
10:35:01 PM eth1 7.07 4.77 5.24 2.42 0.00 0.00 0.00
10:35:01 PM eth0 2.30 1.99 0.24 0.51 0.00 0.00 0.00
10:45:01 PM lo 8.35 8.35 2.18 2.18 0.00 0.00 0.00
10:45:01 PM eth1 3.69 3.45 0.65 2.22 0.00 0.00 0.00
10:45:01 PM eth0 1.50 1.33 0.15 0.36 0.00 0.00 0.00
10:55:01 PM lo 8.36 8.36 2.18 2.18 0.00 0.00 0.00
10:55:01 PM eth1 3.66 3.40 0.64 2.19 0.00 0.00 0.00
10:55:01 PM eth0 0.79 0.87 0.08 0.29 0.00 0.00 0.00
11:05:01 PM lo 8.36 8.36 2.18 2.18 0.00 0.00 0.00
11:05:01 PM eth1 7.29 4.73 5.25 2.41 0.00 0.00 0.00
11:05:01 PM eth0 0.82 0.89 0.09 0.29 0.00 0.00 0.00
11:15:01 PM lo 8.34 8.34 2.18 2.18 0.00 0.00 0.00
11:15:01 PM eth1 3.67 3.30 0.64 2.19 0.00 0.00 0.00
11:15:01 PM eth0 1.27 1.21 0.11 0.34 0.00 0.00 0.00
11:25:01 PM lo 8.32 8.32 2.18 2.18 0.00 0.00 0.00
11:25:01 PM eth1 3.43 3.35 0.63 2.20 0.00 0.00 0.00
11:25:01 PM eth0 1.13 1.09 0.10 0.32 0.00 0.00 0.00
11:35:01 PM lo 8.36 8.36 2.18 2.18 0.00 0.00 0.00
11:35:01 PM eth1 7.16 4.68 5.25 2.40 0.00 0.00 0.00
11:35:01 PM eth0 1.15 1.12 0.11 0.32 0.00 0.00 0.00
11:45:01 PM lo 8.37 8.37 2.18 2.18 0.00 0.00 0.00
11:45:01 PM eth1 3.71 3.51 0.65 2.20 0.00 0.00 0.00
11:45:01 PM eth0 0.75 0.86 0.08 0.29 0.00 0.00 0.00
11:55:01 PM lo 8.30 8.30 2.18 2.18 0.00 0.00 0.00
11:55:01 PM eth1 3.65 3.37 0.64 2.20 0.00 0.00 0.00
11:55:01 PM eth0 0.74 0.84 0.08 0.28 0.00 0.00 0.00
Для людей, интересующихся cronjobs. Вот сводка всех cronjobs, настроенных на сервере (я выбрал app01, но это происходит и на нескольких других серверах с такими же настроенными cronjobs)
$ ls -ltr /etc/cron*
-rw-r--r-- 1 root root 722 Apr 2 2012 /etc/crontab
/etc/cron.monthly:
total 0
/etc/cron.hourly:
total 0
/etc/cron.weekly:
total 8
-rwxr-xr-x 1 root root 730 Dec 31 2011 apt-xapian-index
-rwxr-xr-x 1 root root 907 Mar 31 2012 man-db
/etc/cron.daily:
total 68
-rwxr-xr-x 1 root root 2417 Jul 1 2011 popularity-contest
-rwxr-xr-x 1 root root 606 Aug 17 2011 mlocate
-rwxr-xr-x 1 root root 372 Oct 4 2011 logrotate
-rwxr-xr-x 1 root root 469 Dec 16 2011 sysstat
-rwxr-xr-x 1 root root 314 Mar 30 2012 aptitude
-rwxr-xr-x 1 root root 502 Mar 31 2012 bsdmainutils
-rwxr-xr-x 1 root root 1365 Mar 31 2012 man-db
-rwxr-xr-x 1 root root 2947 Apr 2 2012 standard
-rwxr-xr-x 1 root root 249 Apr 9 2012 passwd
-rwxr-xr-x 1 root root 219 Apr 10 2012 apport
-rwxr-xr-x 1 root root 256 Apr 12 2012 dpkg
-rwxr-xr-x 1 root root 214 Apr 20 2012 update-notifier-common
-rwxr-xr-x 1 root root 15399 Apr 20 2012 apt
-rwxr-xr-x 1 root root 1154 Jun 5 2012 ntp
/etc/cron.d:
total 4
-rw-r--r-- 1 root root 395 Jan 6 18:27 sysstat
$ sudo ls -ltr /var/spool/cron/crontabs
total 0
$
Как видите, ЧАСОВЫХ cronjobs нет. Только ежедневно / еженедельно и т. Д.
Я собрал кучу статистики (vmstat, mpstat, iostat) - как бы я ни старался, я просто не вижу никаких выводов, которые предполагали бы некорректное поведение любого компонента виртуальной машины ... Я начинаю склоняться к потенциальным проблемам с гипервизором. Не стесняйтесь взглянуть на статистика Суть начинается с вывода sar -q примерно в "оскорбительное" время, а затем вы можете увидеть vm, mp и iostats ....
В принципе, для меня это до сих пор полная загадка ...
Интересный.
Во-первых, можете ли вы увеличить частоту регистрации sar. Вместо 10 минут попробуйте вести журнал каждую минуту. Задание sysstat cron можно настроить.
Затем попробуйте написать следующие команды.
ps auxf > /tmp/ps.out
vmstat 1 50 > /tmp/vm.out
mpstat -P ALL 1 50 > /tmp/mp.out
iostat -xdk 1 50 > /tmp/io.out
cat /proc/meminfo > /tmp/meminfo.out
Собирайте этот набор данных либо на каждой итерации, когда средняя нагрузка увеличивается вручную, либо через cron. Было бы хорошо иметь данные хотя бы за один полный рабочий день.
Теперь я понимаю, что серверы простаивают, но некоторые приложения все еще должны работать. Кто они такие?
Возможно ли, что вы сможете запустить какой-нибудь инструмент профилирования, например perf или oprofile.
Изменилось ли какое-либо оборудование сервера? Даже такое безобидное, как обновление прошивки или программного обеспечения.
Эй, один вопрос. Какой у вас планировщик? Я считаю, что это cfq, вы можете изменить его на noop. Ставить elevator=noop
в параметре командной строки ядра и перезагрузите систему и посмотрите, улучшится ли она.
Так как это происходит очень регулярно, настройте задание cron для мониторинга основных процессов в течение этого периода.
#app01
20-59 0/2 * * * root /usr/bin/top -b -n 1 | /usr/bin/head -n 15 >> /var/log/top.log
+ Изменить 20-59
к *
будет регистрировать целый час для каждого четного числа часов. В любом случае задание Cron будет выполняться один раз в минуту.
Вы можете добавить файл top.log для ротации журналов, чтобы он не занимал все пространство, если вы забудете его отключить.
Поиск записей в файле журнала при высокой загрузке
В качестве примера возьмем следующую запись нагрузки
10:25:01 PM 0 125 4.10 3.59 2.23 0
Делать
grep ' 22:2' /var/log/*
grep ' 22:2' /var/log/apache2/*
Это покажет все записи журнала для 22:2x:xx
. Возможно, придется включить другие каталоги журналов.
График xvda - всплеск w_await приходится на вс, 6 января, 21:00:07 2013 г.
Одна вещь, которую я обязательно проверю:
Изменить: не получил его в первый раз :) Вы работаете в Rackspace, поэтому нет контроля над гипервизором, но, возможно, стоит спросить rackspace, могут ли они проверить, распространен ли этот шаблон на других виртуальных машинах на том же хосте .