Привет!
Пробую запустить нагруженный HTTP сервер работающий на Gunicorn на интерпретаторе PyPy вместо стандартного CPython.
Столкнулся с особенностями garbage collection. Приходятся самостоятельно за собой вычищать переменный и закрывать сокеты. Окей, сделал. Но вопрос в том, делает ли это Gunicorn? Нагрузка у нас около 1к запросов в секунду на один нод. Всё вроде бы работает, но я смотрю netstat и lsof во время нормальной нагрузки. Вижу в несколько раз больше открытых сокетов при работе на PyPy нежели на CPython. В связи с этим и нагрузка на CPU больше. Хотя нагрузка должна быть значительно меньше, т.к. PyPy быстрее должен отрабатывать.
Собственно вопрос, совместим ли вообще Gunicorn с PyPy? Эффективно ли он зачищает за собой память и закрывает сокеты? Потому как есть подозрения что сокеты не закрываются вручную, что необходимо при работе с PyPy.