При фактической производственной нагрузке (веб-приложение) с сервером Redis (v4.x) при использовании gunicorn с worker_class gevent
время запроса увеличивается на 3. Доступ к базе данных также ухудшился (но не так сильно, только на 50%),Я пытаюсь понять, почему это произошло.Есть идеи?Приложение очень ограничено вводом-выводом, с большим количеством запросов к базе данных и повторным доступом для каждого запроса, что должно быть идеальным сценарием для gevent
.
Переход от SYNC к GEVENT (~ 11:00)
Повлияет ли обезьяна, исправляющая паттерн на сокет, как-то снизит производительность?Я попытался отрегулировать worker_connections
безуспешно, даже крайне низкий уровень, равный всего лишь двум (снова почти синхронизированный), дал мне такие же плохие результаты.Я что-то упустил из-за того, как gevent
работает псевдо-поток?
Отказ от ответственности: я использую NewRelic для мониторинга производительности и redis-py / django / mysql.Я попробовал некоторые настройки, такие как использование BlockingConnectionPool для Redis, но моя производительность доступа к базе данных также снизилась, поэтому Redis - не единственная проблема.Рабочий размер 5 (ЦП * 2 + 1).У меня также были тонны GreenletExit / ConnectionError [redis] в случайное время, которое было минимизировано путем перемещения worker_connections
с 2k (по умолчанию) на 10
.