Форум сайта python.su
Есть модуль, который перерабатывает текстовые файлы. Примерный алгоритм:
1) берём строчку через file.readline(), разбиваем по разделителю, берём некоторые поля, немного преобразуем, складываем в список, закрываем дескриптор файла.
2) открываем новый файл, дампим всё что было в массиве в новый файл. закрываем дескриптор.
Всё работает стабильно до тех пор, пока на сервере не возникает нагрузка. Построчное чтение начинает жутко тормозить. И либо будет тормозить ооочень долго (скапливается очередь файлов к обработке, что не очень хорошо, т.к. желателен real time), либо помогает перезапуск программы.
Где и как искать проблему?
Офлайн
Скорее всего это io “тормозит”, т.е. диск не справляется.
Если это виртуалка (не ssd), то не удивительно.
“Оперируйте” в ram если это возможно.
Офлайн
o7412369815963Может и диск (это вроде как большой hdd), но надо добыть доказательства. Положим, клиент решится и поставит ssd-диск, а приложение продолжит тормозить.. нехорошо.
Скорее всего это io “тормозит”, т.е. диск не справляется.
Если это виртуалка (не ssd), то не удивительно.
o7412369815963Файлы построчно считываются в оперативку, где данные обрабытываются и выкладываются в другой файл. Что ещё можно в ram перенести? На вход файл, на выход файл - это суть обработчика.
“Оперируйте” в ram
Офлайн
axeНу запустите какой-нибудь мониторинг. Хотя бы atop в режиме демона.
Может и диск (это вроде как большой hdd), но надо добыть доказательства. Положим, клиент решится и поставит ssd-диск, а приложение продолжит тормозить.. нехорошо.
Офлайн
axe
но надо добыть доказательства.
Офлайн
PooH
Ну запустите какой-нибудь мониторинг. Хотя бы atop в режиме демона.
BudulianinПроцесс периодически появляется в топе с загрузкой процессора 100%, но это нормально. Оперативка используется так: 2Гб без особой нагрузки и 4Гб, когда нагрузка растёт, но и это тоже нормально.
Следи за процессами в момент нагрузки и поймёшь в чём причина
Офлайн
axeatop отображает активность диска. есть еще iotop
Как можно следить за диском?
Офлайн
PooH, спасибо!
PooHжелезо.
это таки виртуалка, или на железе?
Офлайн
axehdd механические действия выполняет - медленно работает
почему из разных действий в программе растёт время именно работы с диском
Офлайн
Budulianinя бы так и подумал, если бы после рестарта программа не начинала читать файлы быстро.
hdd механические действия выполняет - медленно работает
Офлайн