понедельник, февраля 17, 2014

clustered node.js vs spray.io vs erlang в ping-pong

Автор (https://github.com/jakubkulhan/node-spray-bench) почему-то решил сравнивать некластеризованный Node.js и Spray.io. Естественно, что Node.js сильно проигрывал. Пришлось исправить ошибку и кластеризовать ноду (https://github.com/olegsmith/node-spray-bench). Ну и в догонку добавить Erlang, чтобы были представлены все ключевые виртуальные машины.

Тесты на моем макбуке Mid 2011 показали:
1) Erlang и кластерный Node.js показывают числа одного порядка.
2) Spray.io при увеличенной конкурентности будет побыстрее Erlang и кластерного Node.js раза в полтора-два.
3) у Spray.io ниже средняя латентность, но сильно хуже стандартное отклонение

PS: Автор переименовал репо https://github.com/jakubkulhan/hit-server-bench и добавил http-kit на clojure, который показал неожиданно высокую производительность и маленькое стандартное отклонение латентности. Будем смотреть.


Node

Running 10s test @ http://127.0.0.1:8080/
  1 threads and 1 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   116.22us   77.97us   5.97ms   99.52%
    Req/Sec     7.95k   546.35     8.67k    75.03%
  74852 requests in 10.00s, 10.42MB read
Requests/sec:   7487.30
Transfer/sec:      1.04MB

Running 10s test @ http://127.0.0.1:8080/
  2 threads and 10 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   521.68us    1.39ms  44.86ms   99.24%
    Req/Sec    10.26k     1.97k   14.44k    68.55%
  192574 requests in 10.00s, 26.81MB read
Requests/sec:  19258.40
Transfer/sec:      2.68MB

Running 10s test @ http://127.0.0.1:8080/
  10 threads and 50 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     3.06ms    3.31ms  37.70ms   89.96%
    Req/Sec     2.41k     1.32k    7.00k    51.13%
  193808 requests in 10.00s, 26.99MB read
Requests/sec:  19378.43
Transfer/sec:      2.70MB

Running 10s test @ http://127.0.0.1:8080/
  20 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     6.60ms    4.97ms  36.03ms   64.39%
    Req/Sec     1.10k   661.64     5.18k    72.07%
  183343 requests in 10.00s, 25.53MB read
Requests/sec:  18328.81
Transfer/sec:      2.55MB

Spray.io

Running 10s test @ http://127.0.0.1:8080/
  1 threads and 1 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   125.49us   33.17us   2.54ms   98.52%
    Req/Sec     7.24k   507.78     8.11k    75.55%
  68564 requests in 10.00s, 9.35MB read
Requests/sec:   6856.59
Transfer/sec:      0.94MB

Running 10s test @ http://127.0.0.1:8080/
  2 threads and 10 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.59ms   12.91ms 140.62ms   98.93%
    Req/Sec    13.30k     3.26k   25.67k    87.42%
  235621 requests in 10.00s, 32.13MB read
Requests/sec:  23562.77
Transfer/sec:      3.21MB

Running 10s test @ http://127.0.0.1:8080/
  10 threads and 50 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    10.73ms   35.13ms 155.83ms   93.35%
    Req/Sec     3.77k     1.48k   20.44k    88.13%
  347999 requests in 10.00s, 47.46MB read
Requests/sec:  34804.40
Transfer/sec:      4.75MB

Running 10s test @ http://127.0.0.1:8080/
  20 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     3.87ms    8.87ms  78.06ms   97.79%
    Req/Sec     1.99k   490.15    15.78k    88.91%
  372251 requests in 10.00s, 50.77MB read
Requests/sec:  37237.53
Transfer/sec:      5.08MB

Erlang

Running 10s test @ http://127.0.0.1:8080/
  1 threads and 1 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   140.07us   33.36us   1.26ms   97.17%
    Req/Sec     6.75k   517.40     8.11k    73.23%
  63944 requests in 10.00s, 7.50MB read
Requests/sec:   6394.53
Transfer/sec:    768.09KB

Running 10s test @ http://127.0.0.1:8080/
  2 threads and 10 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   618.15us  295.73us   7.04ms   77.63%
    Req/Sec     8.18k   839.32    10.78k    74.76%
  155008 requests in 10.00s, 18.18MB read
Requests/sec:  15501.56
Transfer/sec:      1.82MB

Running 10s test @ http://127.0.0.1:8080/
  10 threads and 50 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     3.27ms    2.05ms  18.03ms   69.48%
    Req/Sec     1.62k   298.53     3.50k    73.85%
  154527 requests in 10.00s, 18.13MB read
Requests/sec:  15454.23
Transfer/sec:      1.81MB

Running 10s test @ http://127.0.0.1:8080/
  20 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     6.97ms    4.64ms  40.03ms   68.73%
    Req/Sec   763.11    163.90     1.50k    70.78%
  147900 requests in 10.00s, 17.35MB read
Requests/sec:  14792.68
Transfer/sec:      1.74MB

Комментариев нет:

Мой список блогов