django рабочие-оружейники против theads против других возможностей - PullRequest
0 голосов
/ 25 апреля 2020

Мое приложение в django с gunicorn, и я новичок в gunicorn. Мое приложение сильно загружено с помощью операций ввода-вывода, а не столько памяти и ЦП, сколько поток должен сохранять или обслуживать большой файл (от нескольких МБ до нескольких ГБ) из хранилища. В настоящее время из-за этого рабочие заканчиваются, в то время как нет нагрузки на процессор или память или даже на жесткий диск. По умолчанию есть файл конфигурации для gunicorn, который выглядит следующим образом:

import os

daemon = True
workers = 5

# default localhost:8000
bind = "127.0.0.1:8000"

# Pid
pids_dir = '/opt/pids'
pidfile = os.path.join(pids_dir, 'app.pid')

# for file upload, we need a longer timeout value (default is only 30s, too short)
timeout = 7200

limit_request_line = 8190

Я не уверен, как настроить рабочие и потоки и т. Д. c для моей рабочей нагрузки. позвольте мне предоставить более подробную информацию:

  1. Мы запускаем «несколько виртуальных машин» по 2 ЦП / 8 ГБ ОЗУ.
  2. python - это 2,7, мы находимся на пути к обновлению до 3,7, но на данный момент это 2.7
  3. Я уже пытался добавить threads с другими значениями (от 1 до 6), но это, похоже, не работает.
  4. Трафик c в приложении в общем, сотни пользователей онлайн в любое время и большую часть 100 Мбит / с в большинстве случаев.

Может кто-нибудь помочь объяснить, что я могу сделать?

РЕДАКТИРОВАТЬ1: пытался изменить на Gevent, но не знаю, как это сделать. после установки gevent через pip:

Apr 25 07:31:33 web-app1 app.sh[16179]: Failed to read config file: /opt/app/conf/gunicorn.conf
Apr 25 07:31:33 web-app1 app.sh[16179]: Traceback (most recent call last):
Apr 25 07:31:33 web-app1 app.sh[16179]:   File "/opt/app-pro-server-7.0.13/app/thirdpart/gunicorn-19.8.1-py2.7.egg
Apr 25 07:31:33 web-app1 app.sh[16179]:     execfile_(filename, cfg, cfg)
Apr 25 07:31:33 web-app1 app.sh[16179]:   File "/opt/app-pro-server-7.0.13/app/thirdpart/gunicorn-19.8.1-py2.7.egg
Apr 25 07:31:33 web-app1 app.sh[16179]:     return execfile(fname, *args)
Apr 25 07:31:33 web-app1 app.sh[16179]:   File "/opt/conf/gunicorn.conf", line 5
Apr 25 07:31:33 web-app1 app.sh[16179]:     worker-class = gevent
Apr 25 07:31:33 web-app1 app.sh[16179]:                ^
Apr 25 07:31:33 web-app1 app.sh[16179]: SyntaxError: invalid syntax
Apr 25 07:31:38 web-app1 app.sh[16179]: Error:App failed to start
...