я использовал iostat
и пытаемся понять вывод iostat по этой ссылке: https://linoxide.com/linux-command/linux-iostat-command/ но это четко не объяснено.
PF вывод в разное время с 18:00:00 до 18:45:00 :
Мы получили задержку записи в базу данных в 18:45:00
18:00:00
Linux 4.1.0-0.Node1.1-amd64 (Node1) 05/25/2018 _x86_64_ (8 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
2.58 0.00 0.84 0.14 0.00 96.44
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 20.45 318.11 272.61 4801729 4114908
loop0 15.24 15.29 0.00 230867 0
18:10:00
Linux 4.1.0-0.Node1.1-amd64 (Node1) 05/25/2018 _x86_64_ (8 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
4.54 0.07 1.67 0.28 0.00 93.44
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 66.79 450.28 6292.63 7071585 98824332
loop0 14.65 14.70 0.00 230867 0
18:20:00
Linux 4.1.0-0.Node1.1-amd64 (Node1) 05/25/2018 _x86_64_ (8 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
6.48 0.17 2.46 0.66 0.00 90.23
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 115.61 1712.27 13585.10 27917361 221496016
loop0 14.11 14.16 0.00 230892 0
18:30:00
Linux 4.1.0-0.Node1.1-amd64 (Node1) 05/25/2018 _x86_64_ (8 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
8.17 0.30 3.11 1.02 0.00 87.40
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 158.97 2682.65 19061.12 45347101 322206568
loop0 13.61 13.66 0.00 230892 0
18:40:00
Linux 4.1.0-0.Node1.1-amd64 (Node1) 05/25/2018 _x86_64_ (8 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
8.73 0.45 3.30 1.40 0.00 86.12
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 175.77 3647.19 19549.58 63840689 342197396
loop0 13.14 13.19 0.00 230930 0
18:45:00
Linux 4.1.0-0.Node1.1-amd64 (Node1) 05/25/2018 _x86_64_ (8 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
8.98 0.46 3.55 1.57 0.00 85.45
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 181.99 4116.60 19870.20 73291969 353769384
loop0 12.92 12.97 0.00 230930 0
Мы получили задержку записи в базу данных на 18:45:00
, Итак, я хотел бы понять операции ввода-вывода из 18:00:00
к 18:45:00
и выполняет вышеуказанный вывод в 18:45:00
показывает какие-либо проблемы с вводом-выводом?
Я предполагаю, что это дисковая система SATA, поэтому 181 TPS - это предел. Можешь попробовать iostat -x 1
чтобы получить расширенную статистику (пример ниже). Обратите внимание %util
столбец. Это покажет вам, насколько сильно загружен диск при чтении / записи. Я предполагаю, что это приближается к 100% и вызывает проблемы с базой данных. Другой показатель - это svctm
. Это говорит вам, сколько времени требуется диску для выполнения любой данной операции ввода-вывода. Чем выше число, тем хуже ситуация.
Изучите, что еще работает в это время (работают дампы БД? Резервные копии? Slocate / mlocate?), Что может вызывать узкие места ввода-вывода.
$ iostat -x
Linux 4.4.0-124-generic (nebulus) 05/29/2018 _x86_64_ (8 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.02 0.00 0.03 0.00 0.00 99.94
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
vda 0.00 0.35 0.18 0.40 3.23 7.03 35.07 0.00 1.17 0.71 1.38 0.29 0.02
dm-0 0.00 0.00 0.09 0.24 1.01 0.87 11.24 0.00 10.91 0.76 14.68 0.18 0.01
dm-1 0.00 0.00 0.07 0.29 1.69 4.17 32.90 0.00 2.33 0.59 2.74 0.23 0.01
Если вы все еще приближаетесь к 100% загрузке, поговорите со своим программистом и посмотрите, сможет ли он улучшить ситуацию, сделав более эффективные запросы к БД. Если это не вариант, потратите деньги на более быстрое дисковое оборудование (перейдите на диски RAID0 или SSD).
Использование диска также может быть вызвано тем, что в системе слишком мало доступной оперативной памяти. Как только памяти становится мало, начинается подкачка дисков и все доходит до ползания.
Просто пара мест, чтобы начать поиск.