Опыт борьбы с неожиданной проблемой на CodeChick
Все началось с сообщения в Telegram о том, что сайт "лежит". Проверив, я подтвердил, что сайт действительно не отвечал, и каждый запрос завершался таймаутом. Перезагрузка сервера дала временное решение, но главная задача была в том, чтобы выяснить причину сбоя.
Просмотр логов nginx показал мне массу запросов, которые явно не были сделаны нашим фронтендом или сервером. Вот один из таких запросов, который мне попался:
168.119.23.149 - - [04/Mar/2024:08:27:12 +0000] "PROPFIND /data/ HTTP/1.1" 404 8566 "-" "python-requests/2.30.0" "-"
Это выглядело как часть DoS-атаки или интенсивного сканирования.
Решение проблемы безопасности
Чтобы ограничить возможный вред от такого рода активности, я обновил конфигурацию nginx, ограничив доступ к сайту только для стандартных HTTP-методов. Это существенно сократило количество нежелательных запросов к приложению.
Оптимизация производительности
Но работа на этом не закончилась. Проводя дальнейший мониторинг сервера, я заметил случаи пиковой нагрузки на процессор, связанные с выполнением определенных запросов к базе данных. В частности, запрос списка решенных задач иногда занимал более 20 секунд:
Используя Prefetch для предварительной выборки связанных данных я оптимизировал запрос. Это позволило значительно ускорить его выполнение — с более чем 20 секунд до менее чем 1 секунды.