Копаюсь тута в virtualbox, шаманю с жестким диском, колдую в общем. Сама проблема в том, что на реальном сервере в некоторые моменты времени очень большая задержка отправки\приема с rabbitMQ сервера. Тама отваливаются некоторые службы из-за этого по таймауту (можно конечно выставить большие тайауты, но хочу все же оттюнинговать диск и проблему решить в корне, если получится). То есть послал сообщение в rabbitMQ, тебе ответ пришел, обычно это занимает миллисекунды, но в некоторые моменты доходит аж до 3-6 сек! Графики(zabbix) показывают iowait 5%\48% (средн.\макс. значения за месяц). В связи с этим я пришел к выводу, что причина и узкое место на сервере это I\O и из-за него такие лаги с rabbitMQ.
Потом я начал грешить на raid1. Ядренный процесс jbd (в моем случае это jbd2/md2-8) который отвечает за журнализацию ext4, постоянно, без остановки, чем то занят, iotop этого процесса постоянно скачет 5..10...99%! Хотя, по сути, должен отрабатывать каждые 15 сек., ибо в параметрах монтирования raid1 я указал commit=15. То есть каждые 15 сек. должен записывать в журнал. Ещё я заметил, что если отключить zabbix-server, то процесс этот запускается как положено через каждые 15 сек. Почему так?
Посмотрел iotop ещё раз, нет других процессов с большим %, ну mysql промелькивает 0.05%, nginx и прочие потроха.
Что пробовал (три раза запуск)
dd if=/dev/zero of=/tmp/output.img bs=16k count=30k
838860800 bytes (839 MB, 800 MiB) copied, 1.05715 s, 794 MB/s
838860800 bytes (839 MB, 800 MiB) copied, 0.442051 s, 1.9 GB/s
838860800 bytes (839 MB, 800 MiB) copied, 9.11132 s, 92.1 MB/s
Скорость записи скачет в 10 раз...какие-то блокировки ужасные
А вот если больший count поставить 70k, но уже rabbitMQ идет с задержкой и все потроха валятся из-за timeout и процессу jbd2/md2-8 сносит голову до 99% I\O
dd if=/dev/zero of=/tmp/output.img bs=16k count=70k
1174405120 bytes (1.2 GB, 1.1 GiB) copied, 6.25328 s, 188 MB/s
cat /etc/fstab
/dev/md3 / ext4 commit=15,errors=remount-ro,relatime 0 1
/dev/md2 /boot ext4 errors=remount-ro,relatime 0 1
/dev/sda4 swap swap defaults 0 0
/dev/sdb4 swap swap defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts defaults 0 0
mount | grep "/dev/md3"
/dev/md3 on / type ext4 (rw,relatime,errors=remount-ro,commit=15,data=ordered)
cat /proc/mdstat
md2 : active raid1 sdb2[1] sda2[0]
523200 blocks [2/2] [UU]
md3 : active raid1 sdb3[1] sda3[0]
1952461760 blocks [2/2] [UU]
bitmap: 15/15 pages [60KB], 65536KB chunk
unused devices: <none>
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 1.8T 1.4T 312G 83% /
devtmpfs 7.9G 0 7.9G 0% /dev
tmpfs 7.9G 0 7.9G 0% /dev/shm
tmpfs 7.9G 772M 7.1G 10% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup
/dev/md2 487M 23M 435M 5% /boot
overlay 1.8T 1.4T 312G 83% /var/lib/docker/overlay2/29d42b8f520821ac9c12919a53c6eb7f4b1cf25c63cd03fe7f2a3341e547a42f/merged
shm 64M 0 64M 0% /var/lib/docker/containers/c1d856a4dce5aeb0d0e67e4bdb1e2123a1a2fbecfbb4c4fdfe91b1d75bf0b8a8/mounts/shm
Выхлоп iotop
Total DISK READ : 68.09 K/s | Total DISK WRITE : 9.27 M/s
Actual DISK READ: 68.09 K/s | Actual DISK WRITE: 594.86 K/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND
313 be/3 root 0.00 B/s 426.44 K/s 0.00 % 73.82 % [jbd2/md3-8]
13682 be/4 bib 0.00 B/s 215.01 K/s 0.00 % 43.27 % nginx: worker process
15381 be/4 mysql 0.00 B/s 3.58 K/s 0.00 % 0.61 % mysqld
15396 be/4 mysql 0.00 B/s 3.58 K/s 0.00 % 0.02 % mysqld
15401 be/4 mysql 0.00 B/s 7.17 K/s 0.00 % 0.02 % mysqld
13678 be/4 bib 0.00 B/s 630.70 K/s 0.00 % 0.00 % nginx: worker process
13679 be/4 bib 0.00 B/s 3.58 K/s 0.00 % 0.00 % nginx: worker process
13680 be/4 bib 0.00 B/s 207.84 K/s 0.00 % 0.00 % nginx: worker process
13681 be/4 bib 64.50 K/s 731.03 K/s 0.00 % 0.00 % nginx: worker process
13684 be/4 bib 0.00 B/s 111.09 K/s 0.00 % 0.00 % nginx: worker process
13685 be/4 bib 0.00 B/s 723.87 K/s 0.00 % 0.00 % nginx: worker process
11076 be/4 root 0.00 B/s 3.58 K/s 0.00 % 0.00 % python /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
На сервере два HDD HGST HUS726020AL по 1.8TB, RAID1
Куда копать в первую очередь? Отчего так просто загрузить IO у сервера? Диск поменять не предлагать
UDP! Не redis, а rabbitMQ )) Перепутал