Но опять же, socket.io значит нода, нода значит один поток и много процессов, кол-во процессов ограничено ресурсами, поэтому в статье юзается одновременный запуск сразу с кучи EC2 инстансов
В моем случае профит составил десятки раз. На одной и той же машине решение с процессами достигало максимум 300 RPS, с потоками — 2000-5000. Я опять же говорю, что все зависит от задачи и необходимости коммуникации между инстансами, но так или иначе странно ожидать от потоков меньшей производительности.
Спасибо за подробный комментарий. У вас фундаментальное заблуждение. У ноды только один рабочий поток (async.queue использует обычные js колбеки, которые не что иное как очередь функций и event loop) поэтому как бы не был организован сервер, если он не спаунит процессы, то запросы будут идти через event loop.
Поэтому разработчики socket.io не могут ничего утверждать о производительности, они лишь сделали обертку для WebSockets на клиенте и TCP обертку на сервере.
По поводу process.send как раз и идет речь в статье, нода использует TCP для коммуникации, а значит I/O а значит падение производительности.
Но если держать процессы запущенными и коммуникация между ними не принципиальна, то производительность процессов и потоков должна быть по идее сравнимой, если у ОС есть достаточно ресурсов на все открытые процессы.
Вы имеете в виду сравнить скорость работы HTTP и WebSockets? Сейчас можно тестировать только HTTP эндпоинты, но сделать TCP WebSocket коннект несложно, просто непонятно зачем.
jMeter это ужас, извините. Я в основном натыкаюсь на статьи, как по-быстрому начать использовать jMeter: перегруженный интерфейс, запутанная документация, долгий старт. И снова повторюсь, что я не ставил цель сделать инструмент лучше jMeter, ab или танка, тем более он еще достаточно сырой. Скорее предложить js сообществу поучаствовать в создании удобного и простого инструмента
Не только ab, есть масса бенчмарков, но хотелось с максимальной кастомизацией аналитики ответов и отчетов, чтобы всегда была возможность простыми средствами влезть с отверткой
2000 это очень мало. У меня на 4 ядрах не ест даже 5% CPU. Вы уверены, что проц ела именно нода? Важный момент, при больших рпс разумно отключать fullLog в конфиге. 120к отработало на 100% CPU за несколько секунд
Под диапазоном имеется ввиду min-max?
Или смещение относительно количества нод, содержащих одну и туже сущность, ну например:
— есть 2 ноды. значит один и тот же сиквенц на каждой идет с шагом =2
т.е. 1я нода дает значения 1,3,5,7… а 2я нода 2,4,6,8…
Поэтому разработчики socket.io не могут ничего утверждать о производительности, они лишь сделали обертку для WebSockets на клиенте и TCP обертку на сервере.
По поводу process.send как раз и идет речь в статье, нода использует TCP для коммуникации, а значит I/O а значит падение производительности.
Но если держать процессы запущенными и коммуникация между ними не принципиальна, то производительность процессов и потоков должна быть по идее сравнимой, если у ОС есть достаточно ресурсов на все открытые процессы.
Или смещение относительно количества нод, содержащих одну и туже сущность, ну например:
— есть 2 ноды. значит один и тот же сиквенц на каждой идет с шагом =2
т.е. 1я нода дает значения 1,3,5,7… а 2я нода 2,4,6,8…