Простая задача, клиент подключается к серверу, пишет в сокет данные, сервер читает, отдает ответ. В основном последовательные запросы от одного клиента. Важно делать это достаточно быстро.
Сейчас есть самопальный сервер на C, он успевает обрабатывать около 1000 последовательных запросов в секунду от одного клента, без учета времени на поиск нужного ответа.
Есть ли возможность в Erlang добиться сравнимой скорости?
Сейчас экспериментирую, результаты пока не впечатляют. Использовал и сервер с несколькими ацепторами, и сервер с одним ацептором.
Происходит следующее - до 15 000 последовательных запросов проходят очень быстро, 16 000 - в два раза дольше, чем 15 000, и уже с не приемлемой скоростью.
Отработавшие ацепторы завершаются, не висят в запущенных процессах. Экспериментирую на тех же машинах, на которых сервер на C работает нормально.
Возможно, есть параметры для erl или опции для gen_tcp:listen, решающие проблему?
Подскажите, плиз, кто в курсе.