Периодически медленный отклик и таймауты - Apache + mod_wsgi + Web2py

У меня Ubuntu 14.04.5 LTS (i686) на капле Digital Ocean с 2x2,4 ГГц ЦП и 4 ГБ физической памяти. Я запускаю на нем приложение web2py с Apache и mod_wsgi. На коробке установлено несколько дополнительных модулей python, например numpy и opencv2. База данных - MySQL 5.5.

Веб-сайт Wordpress на другом сервере вызывает это приложение web2py , используя php-curl . Обычно время ответа составляет 2-5 секунд. Но иногда возникают таймауты (время отклика составляет> 1000 секунд). Я добавил точки регистрации в приложении Web2py, и они говорят, что после достижения приложения все завершается за 2-3 секунд. Но в журнале доступа Apache2 время отклика регистрируется как число больше 1000 секунд. В журнале доступа время запроса примерно такое же, когда запрос инициируется с веб-сайта Wordpress.

Может ли кто-нибудь указать, как узнать причину этого прерывистого медленного ответа?

Спасибо

1
задан 6 September 2017 в 07:50
2 ответа

Наконец, я удалось выяснить причину проблемы. Это был оператор подключения к удаленной базе данных в файле модели по умолчанию приложения web2py. Это соединение с базой данных нигде не использовалось в приложении. Но поскольку он был в файле модели, всякий раз, когда вызывается функция контроллера, приложение пытается без необходимости подключиться к этой удаленной базе данных.

Первоначально я добавил точки регистрации повсюду в приложении, но не добавил в файл модели по умолчанию для применение; Поэтому в журналах ничего не говорится о первопричине. Затем я протестировал приложение, просто заменив содержимое папки приложения один за другим на файлы демонстрационного приложения (которое поставляется с web2py) и помог выявить основную причину проблемы. Затем основная причина была проверена путем добавления записи в журнал в начало и конец файлов модели приложения по умолчанию.

0
ответ дан 4 December 2019 в 04:38

Для того, чтобы обнаружить первопричину таймаута, вы можете использовать php slowlog, который объяснит, какая функция за это отвечает.

Вы должны изменить ваш www.conf и изменить значение по умолчанию 0 опции request_slowlog_timeout. Например :

request_slowlog_timeout = 10s

Вы можете прочитать немного больше об активации slowlog здесь, а также посмотреть на некоторые распространенные источники медленной работы здесь.

.
0
ответ дан 4 December 2019 в 04:38

Теги

Похожие вопросы