У меня есть приложение JRuby с использованием целлулоида. Он получает запросы через сокет Zeromq и отвечает строкой JSON.Задержка обработки больше запросов/сек
Итак, в моем приложении есть 2 актера для обработки запросов, а другой для отправки ответа (Push-разъем в Zeromq). Приложение получает запросы со скоростью около 30 запросов в секунду. Было бы больше в будущем сказать 1000/сек. Но при увеличении количества запросов в секунду требуется больше времени для обработки. Он начинает использовать больше CPU.
Для каждого полученного запроса я обрабатываю это внутри блока отсрочки.
defer {
response = ResponseHandler.new(socket,message).start
send_response(response)
}
В течение 20 запросов/сек он отлично работает без каких-либо задержек. Сервер имеет конфигурацию с 15 ГБ оперативной памяти и 4 ядра. Он подключается к DB Postgres и Redis DB. Но, похоже, это не проблема.
Вот основная структура у меня есть, есть главный актер службы,
supervisor = Service.supervise
это внутренне создает экземпляры PushSock Актера с 10 бассейном.
@pushsocket_actor = PushSock.pool(size: 10)
метод send_response в отложенном блоке выше вызовов pushsocket actor. В отложенном блоке ResponseHandler не актер.
Так что с сервисом, я не пользуюсь бассейном.
Вы используете 'Celluliod :: IO' напрямую? Есть ли у вас какие-либо сущности кода? – digitalextremist
Нет, я не использую Celluliod :: IO –