Приложение Flask, запускаемое gunicorn, через некоторое время зависает - PullRequest
0 голосов
/ 06 июня 2019

Я столкнулся с уникальной проблемой последних 30 дней. После огромного количества попыток я ищу поддержку сообщества.

Я сделал веб-приложение, основанное на глубоком обучении, с использованием колбы Python Backend написан на python (код глубокого обучения), а front-end обслуживается с использованием HTML, JS и Bootstrap. Развертывание осуществляется с помощью Gunicorn. Кроме того, приложение https включено и развернуто на GCP.

Приложение работает нормально некоторое время, после чего зависает. Хотя процесс python все еще выполняется, он перестает обслуживать и отвечать на любые запросы API. Новые хиты не достигают кода Python. Такое поведение очень случайно с точки зрения времени выполнения. Иногда на остановку уходит 4-5 часов, а иногда на остановку уходит даже 2 дня. Затем я вручную запускаю приложение, используя команду gunicorn, и она работает.

Вещи, которые я пробовал -

  • Проверено системная память с использованием htop, когда приложение находится в стадии зависания. Но, кажется, хорошо.
  • Я пытался протестировать API с помощью Jmeter (выполнение нескольких запросов в цикле последовательно), и система не зависает.
  • Я даже запустил приложение, используя uwsgi + apache, но проблема остается.

Вот команда, используемая для запуска сервера gunicorn -

gunicorn -b 0.0.0.0:443 --threads=4 --certfile=path_to_certificate_file --keyfile=path_to_key_file server:app --max-requests 1000 --access-logfile /var/log/gunicorn/gunicorn-access.log --error-logfile /var/log/gunicorn/gunicorn-error.log --capture-output --log-level debug --logger-class=simple --daemon

Я все еще не могу диагностировать точную проблему и воспроизвести ее. Ищете какое-то конкретное направление для изучения. Не стесняйтесь поделиться своей гипотезой / мыслями. Дайте мне знать, если от меня потребуется какая-либо другая информация, чтобы сделать ее более интуитивной.

...