Высокая загрузка ЦП при работе с python socketio с незанятыми клиентами - PullRequest
1 голос
/ 04 октября 2019

При выполнении некоторых тестов с flask-socketio (в uwsgi с gevent) мы заметили, что при добавлении большего количества клиентов использование процессора в процессе socketio быстро достигает 85%. Странно то, что, кажется, не имеет значения, находятся ли клиенты в активном общении или просто все бездельничают.

Я использовал pyflame для анализа происходящего, и кажется, что более 50% времени тратитсяв server.py:_service_task, большинство из которых находится в sleep (), а другая часть в check_ping_timeout. Мне удалось найти несколько сообщений stackoverflow, описывающих то же поведение для циклов ожидания в режиме ожидания, но в описанном решении было ввести sleep (), что _service_task уже делает.

Это произошло со 150 клиентами на ec2 t3маленький экземплярСтранно то, что этого не происходит с 50 клиентами. (аналогичное поведение на более крупных типах экземпляров с около 300 клиентами)

Это нормально? Моя главная проблема заключается в том, что трудно определить, перегружен ли сервер.

...