Найти - Пользователи
Полная версия: замедление работы с диском при увеличении нагрузки на сервер
Начало » Python для экспертов » замедление работы с диском при увеличении нагрузки на сервер
1 2 3 4
axe
Есть модуль, который перерабатывает текстовые файлы. Примерный алгоритм:
1) берём строчку через file.readline(), разбиваем по разделителю, берём некоторые поля, немного преобразуем, складываем в список, закрываем дескриптор файла.
2) открываем новый файл, дампим всё что было в массиве в новый файл. закрываем дескриптор.

Всё работает стабильно до тех пор, пока на сервере не возникает нагрузка. Построчное чтение начинает жутко тормозить. И либо будет тормозить ооочень долго (скапливается очередь файлов к обработке, что не очень хорошо, т.к. желателен real time), либо помогает перезапуск программы.
Где и как искать проблему?
o7412369815963
Скорее всего это io “тормозит”, т.е. диск не справляется.
Если это виртуалка (не ssd), то не удивительно.

“Оперируйте” в ram если это возможно.
axe
o7412369815963
Скорее всего это io “тормозит”, т.е. диск не справляется.
Если это виртуалка (не ssd), то не удивительно.
Может и диск (это вроде как большой hdd), но надо добыть доказательства. Положим, клиент решится и поставит ssd-диск, а приложение продолжит тормозить.. нехорошо.

o7412369815963
“Оперируйте” в ram
Файлы построчно считываются в оперативку, где данные обрабытываются и выкладываются в другой файл. Что ещё можно в ram перенести? На вход файл, на выход файл - это суть обработчика.
PooH
axe
Может и диск (это вроде как большой hdd), но надо добыть доказательства. Положим, клиент решится и поставит ssd-диск, а приложение продолжит тормозить.. нехорошо.
Ну запустите какой-нибудь мониторинг. Хотя бы atop в режиме демона.
Budulianin
axe
но надо добыть доказательства.

Следи за процессами в момент нагрузки и поймёшь в чём причина
axe
PooH
Ну запустите какой-нибудь мониторинг. Хотя бы atop в режиме демона.
Budulianin
Следи за процессами в момент нагрузки и поймёшь в чём причина
Процесс периодически появляется в топе с загрузкой процессора 100%, но это нормально. Оперативка используется так: 2Гб без особой нагрузки и 4Гб, когда нагрузка растёт, но и это тоже нормально.

Существенно не понятно: почему из разных действий в программе растёт время именно работы с диском, а все остальные действия выполняются с примерно тем же временем как на системе без нагрузки.
Как можно следить за диском?
PooH
axe
Как можно следить за диском?
atop отображает активность диска. есть еще iotop
кстати, это таки виртуалка, или на железе?
axe
PooH, спасибо!
PooH
это таки виртуалка, или на железе?
железо.
iotop красиво выглядит, попробую посмотреть.
yum не нашёл atop.
Budulianin
axe
почему из разных действий в программе растёт время именно работы с диском
hdd механические действия выполняет - медленно работает
axe
Budulianin
hdd механические действия выполняет - медленно работает
я бы так и подумал, если бы после рестарта программа не начинала читать файлы быстро.
например, файл 60 мб читается около 1 сек. начинается нагрузка и такой же файл читается, например, 10-20 минут.
перегружаю программу - и сразу же после перезагрузки файлы снова читаются быстро не смотря на нагрузку.

если программа справляется с пиком без перезагрузки, то постепенно чтение восстанавливается к нормальным показателям.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB