да, тесты интересны. и статика, она ведь разная бывает. например, live-трансляция, когда всем клиентам отдаются одни и те же данные(фактически, разновидность чата), а на ноде почти поголовно предлагают писать чаты.
В статье ноду трэшат cpu-bound задачей. Так давайте возьмём io-bound, на которые так хорошо ложится event loop: раздача всем клиентам одинаковых данных.
PS: я эту задачу для себя решил: 19k клиентов в онлайне, 2Гбит/с исходящего трафика(у меня пока нет 10GE для тестов).
я предложил рассмотреть самый простой случай. в реальной жизни это может быть не отдача 1 файла, а «разобрать GET-запрос, в зависимости от параметров выбрать первый файл с которого отдавать и смещение относительно его начала, после чего отдать цепочку файлов клиенту» (т.е. сделать нечто вроде cat part0 > file && cat part1 >> file && cat part2 >> file… ).
И тут возникает дилемма: либо писать модуль для nginx, либо писать что-то свое.
В приведенном мной примере логики немного, а когда с начальными/конечными параметрами определились, надо просто дергать sendfile(2). я выбрал gevent(и на текущий момент упираюсь либо в диски, либо в сеть).
Я предложил потестировать одну из лимитирующих производительность частей — отдачу с диска фрагмента клиенту. А тестить отдачу 12 байт клиенту — весьма сомнительный бенч.
Ооох… вы невнимательно прочитали мой ответ. речь шла о 10k rps на статическом контенте.
Вы померили отдачу хелловорлда, что в реальной жизни никому неинтересно.
Рассказываю, как мерить правильно:
создаем файлики на 1к, 2к, 4к, 8к и запускаем ab2 меняя concurrency ( -c ключ) измеряя rps на отдаче этих файликов.
В статье ноду трэшат cpu-bound задачей. Так давайте возьмём io-bound, на которые так хорошо ложится event loop: раздача всем клиентам одинаковых данных.
PS: я эту задачу для себя решил: 19k клиентов в онлайне, 2Гбит/с исходящего трафика(у меня пока нет 10GE для тестов).
И тут возникает дилемма: либо писать модуль для nginx, либо писать что-то свое.
В приведенном мной примере логики немного, а когда с начальными/конечными параметрами определились, надо просто дергать sendfile(2). я выбрал gevent(и на текущий момент упираюсь либо в диски, либо в сеть).
Я предложил потестировать одну из лимитирующих производительность частей — отдачу с диска фрагмента клиенту. А тестить отдачу 12 байт клиенту — весьма сомнительный бенч.
Ооох… вы невнимательно прочитали мой ответ. речь шла о 10k rps на статическом контенте.
Вы померили отдачу хелловорлда, что в реальной жизни никому неинтересно.
Рассказываю, как мерить правильно:
создаем файлики на 1к, 2к, 4к, 8к и запускаем ab2 меняя concurrency ( -c ключ) измеряя rps на отдаче этих файликов.
afaik, про sendfile(2) она не в курсе.