четверг, 14 июня 2012 г.

О производительности

На проекте был нежданчик — всё резко стало тормозить на живых пользователях.
Естественно, обновление откатили и уселись медитировать.

Тестовые системы ничего не показывали.
Неделю перетряхивали код, нашли и исправили несколько узких мест. Я, например, ускорил математику раз в 6-7.
Накатываем новое обновление — и опять тормоза, буквально никаких улучшений не заметно.

Проблема, как оказалось, была в следующем — обновление по ошибке включало вывод всех логов на консоль. А развертываемая система не перенаправляла stdout в /dev/null — да и не должна. Если всё правильно настроено — никто в консоль ничего не пишет. Логам место в файлах.

Досадный вывод отключили — и всё взлетело со скоростью необычайной. Такие дела...

5 комментариев:

  1. Да, бывает такое! Видишь проблему, строишь догадки (анализ, профайлинг и т.п.), улучшаешь систему, а потом оказывается какая-то мелочь приключилась, но зато столько улучшили - очень приятно стаёт после этого!

    Напоминает док. фильмы о СССР и милиции: "Ограбили чиновника, всех поставили науши, пока вели следствие заодно 3000 висяков раскрыли" :)

    ОтветитьУдалить
  2. Да, бывают чУдные моменты. К слову, математика x7 получилась за счет использования Cython для критического класса

    ОтветитьУдалить
  3. Все, что не делается — все к лучшему!

    ОтветитьУдалить
  4. Это ещё не худший вариант. Вот когда логи потихонечку пишутся на диск, а через несколько месяцев происходит отказ в обслуживании и порча данных из-за нехватки места на диске…

    ОтветитьУдалить