Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 18, 2013 18:17:16

Avi
Зарегистрирован: 2013-04-18
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Gunicorn + Eventlet + Memcache: connect: timed out. Marking dead.

Здравствуйте,

Прошу помощь комьюнити, не могу разобраться в чем дело. Уперся в стену.

Есть wsgi скрипт, который выполняется на gunicorn сервере. Изначально я писал и отлаживал скрипт используя worker_class = ‘sync’ в конфигурации gunicorn. То есть один процесс = одно соединение в один момент времени.
После отладки, пришло время установить скрипт на боевой сервер под большой нагрузкой. После перевода worker_class на ‘eventlet’ и установки worker_connections = 128, начались проблемы.

Смысл работы скрипта:
При каждом запросе из браузера он получает данные (curl) с удаленного сервера и кладет их в memcache.

При worker_class = ‘eventlet’, worker_connections = 10 начинают сыпаться ошибки от memcached следующего содержания:
MemCached: MemCache: inet:127.0.0.1:11211: timed out. Marking dead.

В то время, как при worker_class = ‘sync’ все в полном порядке, даже если количество воркеров более 100 штук.

Подскажите пожалуйста в какую сторону копать.
Спасибо!

Офлайн

#2 Апрель 18, 2013 21:44:25

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Gunicorn + Eventlet + Memcache: connect: timed out. Marking dead.

Офлайн

#3 Апрель 18, 2013 21:49:05

Avi
Зарегистрирован: 2013-04-18
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Gunicorn + Eventlet + Memcache: connect: timed out. Marking dead.

Пробовал разный ставить. До 5 сек. Никакой разницы.
После топика погуглил как смог, наткнулся на:
memcache = eventlet.import_patched('memcache')

Судя по всему нужно копать в сторону monkey patch под green thread'ы. Но я пробовал импортировать таким способом - никакой разницы.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version