HttpServer带阻塞性能比较

服务端在返回hello,world! 之前先阻塞一秒钟,模拟访问DB等耗时操作。

Netty 我直接在 WorkerGroup 里头sleep,用同步阻塞线程模型的方式来编程,所以性能暴降。

Jooby 自称可直接阻塞访问主线程,但可看到性能也暴降了。这个框架是模组化的,覆盖率和代码质量也很高。但活跃开发人员只有一个,并且生态不完善,很难自由组合,对项目中其它组件的选型带来一定的难度,个人建议是观望,但可以用在side project上。

Jdk HttpServer 在带有阻塞的场景下成功超越了 Netty 系服务端。尽管如此,个人依然不会选择它,因为调优的空间小,也不便于其它协议的开发(都说到这份上了,只能用 Netty 系了)。

Jersey-Netty 不出意外也是性能暴降,这个组合其实在没有阻塞的场景下表现也是中规中矩,但比 SpringBoot 好,无意黑谁,但中国意外的开发者其实挺常拿二者出来比较的。

RESTeasy 和 Netty4 的组合网传性能就不咋样,今儿一测的确是有点迷,况且这项目自己的 maven 依赖都是冲突的,让人放心不下它的代码质量。

综上所述,写业务代码我选择 Jersey-Netty,因为 JAX-RS 可有效应对善变的需求,而且集成度高,出货速度快,性能在各种场景下表现还行。

写中间件还是选择 Netty 吧,绝对的性能,稳定且可预见的需求。

 

# Netty

[mougagit@Mous-Air] http-server-compare$ wrk -t8 -c1000 -d60s http://127.0.0.1:8080/
Running 1m test @ http://127.0.0.1:8080/
  8 threads and 1000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.20s     1.61ms   1.20s    62.50%
    Req/Sec     2.44      3.38    20.00     91.94%
  472 requests in 1.00m, 47.02KB read
  Socket errors: connect 755, read 81, write 29, timeout 464
Requests/sec:      7.86
Transfer/sec:     801.79B

 

# Jooby

[mougagit@Mous-Air] http-server-performance$ wrk -t8 -c1000 -d60s http://127.0.0.1:8080/
Running 1m test @ http://127.0.0.1:8080/
  8 threads and 1000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.02s     3.13ms   1.02s    68.75%
    Req/Sec    12.27     24.98   190.00     95.93%
  1888 requests in 1.00m, 210.19KB read
  Socket errors: connect 755, read 35, write 0, timeout 1856
Requests/sec:     31.46
Transfer/sec:      3.50KB

 

# Jdk

[mougagit@Mous-Air] http-server-performance$ wrk -t8 -c1000 -d60s http://127.0.0.1:8080/
Running 1m test @ http://127.0.0.1:8080/
  8 threads and 1000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     5.24ms    9.52ms 273.62ms   99.27%
    Req/Sec     0.98k     1.61k    6.55k    82.65%
  32882 requests in 1.00m, 3.79MB read
  Socket errors: connect 755, read 33747, write 189, timeout 0
  Non-2xx or 3xx responses: 32882
Requests/sec:    547.44
Transfer/sec:     64.69KB

 

# Jersey-jdk

[mougagit@Mous-Air] http-server-performance$ wrk -t8 -c1000 -d60s http://127.0.0.1:8080/
Running 1m test @ http://127.0.0.1:8080/
  8 threads and 1000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     5.47ms    3.14ms  62.59ms   89.71%
    Req/Sec     0.94k     1.17k    5.15k    81.63%
  33102 requests in 1.00m, 3.82MB read
  Socket errors: connect 755, read 33729, write 81, timeout 0
  Non-2xx or 3xx responses: 33102
Requests/sec:    550.74
Transfer/sec:     65.08K

 

# Jersey-netty

[mougagit@Mous-Air] http-server-performance$ wrk -t8 -c1000 -d60s http://127.0.0.1:8080/
Running 1m test @ http://127.0.0.1:8080/
  8 threads and 1000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.01s    49.59ms   1.48s    97.78%
    Req/Sec   114.74    158.71   828.00     82.89%
  14455 requests in 0.94m, 1.39MB read
  Socket errors: connect 755, read 160, write 23, timeout 245
Requests/sec:    255.29
Transfer/sec:     25.18KB

 

# RESTeasy-netty

[mougagit@Mous-Air] http-server-performance$ wrk -t8 -c1000 -d60s http://127.0.0.1:8080/
Running 1m test @ http://127.0.0.1:8080/
  8 threads and 1000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.29s     2.36ms   1.29s    62.50%
    Req/Sec     5.39      9.30    66.00     91.87%
  944 requests in 1.00m, 121.69KB read
  Socket errors: connect 755, read 228, write 64, timeout 928
Requests/sec:     15.71
Transfer/sec:      2.03KB

 

# SpringBoot

[mougagit@Mous-Air] http-server-performance$ wrk -t8 -c1000 -d60s http://127.0.0.1:8080/
Running 1m test @ http://127.0.0.1:8080/
  8 threads and 1000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.22s   270.02ms   1.98s    78.50%
    Req/Sec    71.83     89.66   430.00     84.32%
  11720 requests in 1.00m, 1.41MB read
  Socket errors: connect 755, read 205, write 35, timeout 0
Requests/sec:    195.10
Transfer/sec:     24.01KB

 

转载于:https://www.cnblogs.com/mougg/p/11071025.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值