Мне нужны рекомендации по оптимизации производительности наших веб-серверов.
Мы запускаем наше веб-приложение на python на экземплярах AWS EC2 за ALB.Серверы работают под управлением Ubuntu 16.04, uWSGI 2.0.17, python 3.5.1, nginx 1.10.3.Время от времени у нас в приложении ~ 6 тыс. Запросов / мин, и наш ALB иногда помечает один из серверов как нездоровый, поскольку он получает ошибку 502.
После прочтения документации и большого количества постов мы попробовалиВ конфигурацию uwsgi внесено множество изменений, но мы не можем решить, какие настройки лучше, и как мы можем убедиться, что клиенты не получат 502 ошибки.
Мы попытались запустить серверы в ASG с меньшими серверами, но у нас возникло много проблем с ошибками 502, и мы обвинили соединения UWSGI (количество процессов и потоков, доступных там, где полно, до новых серверов, где можно занятьнекоторая нагрузка).Мы попытались сравнить наше приложение с различными настройками uwsgi и запустить uwsgitop, но нам не удалось определить лучшую конфигурацию для нас.
У нас есть 8 процессоров и 16 ГБ оперативной памяти на наших 2 серверах, а текущая конфигурация uwsgi:
[uwsgi]
autoload = true
master = true
processes = 16
enable-threads = true
single-interpreter = true
threads = 4
cpu-affinity = 2
buffer-size=32768
project = xxxx
base = /home/project/django
chdir = /home/project/django/xxxx
wsgi-file = /home/project/django/xxxx/settings/cloud/wsgi.py
touch-reload = /home/project/django/xxxx/settings/cloud/wsgi.py
env = xxxx =cloud
socket = /home/project/django/xxxx/site.sock
chmod-socket = 666
stats = /home/project/django/xxxx/stats.sock
vacuum = true
pidfile = /tmp/uwsgi.pid
thunder-lock = true
log-date = true
uid = project
gid = project
req-logger = file:/var/log/uwsgi/access.log
logger = file:/var/log/uwsgi/error.log
reload-mercy = 10
no-orphans = true
В этом конфиге серверы загружены на 1,5% и используют 25% ОЗУ.
Следует ли увеличить число процессов или числотемы, или мы что-то упустили?
Кроме того, наш журнал uwsgi полон ошибок, таких как:
Thu Oct 4 14:49:27 2018 - uwsgi_response_writev_headers_and_body_do(): Broken pipe [core/writer.c line 306] during GET /path/to/some/file/ (xx.xx.xx.xx)
IOError: write error
Thu Oct 4 14:51:09 2018 - SIGPIPE: writing to a closed pipe/socket/fd (probably the client disconnected) !!!
Мы считаем, что эти ошибки связаны с тем, что клиенты просто закрывают браузер ...
Большое спасибо.