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
HttpServer带阻塞性能比较的更多相关文章
- 使用vs自带的性能诊断工具
visual studio是个强大的集成开发环境,内置了程序性能诊断工具.下面通过两段代码进行介绍. static void Main( string[] args) { Test1(); Test2 ...
- VS2010自带的性能分析工具分析.NET程序的性能
这篇博文给大家分享的是,如何使用VS自带的性能分析工具来分析我们编写的.NET程序,一边找出程序性能的瓶颈,改善代码的质量.在实际开发中,性能真的很重要,往往决定一个产品的生死~良好的用户体验的基础之 ...
- 011 - JDK自带的性能监控工具
一.概要: jps -l 查看现有的java进程 jps -l 显示所有正在运行的java进程id jstack 查看Java线程 jstack -l pid; 做thread du ...
- (转)MySQL自带的性能压力测试工具mysqlslap详解
mysqlslap 是 Mysql 自带的压力测试工具,可以模拟出大量客户端同时操作数据库的情况,通过结果信息来了解数据库的性能状况 mysqlslap 的一个主要工作场景就是对数据库服务器做基准测试 ...
- 数据库相关文章转载(2) MySQL自带的性能压力测试工具mysqlslap详解
PS:今天一同事问我有木有比较靠谱的mysql压力测试工具可用.其实mysql自带就有一个叫mysqlslap的压力测试工具,还是模拟的不错的.下面举例说说.mysqlslap是从5.1.4版开始的一 ...
- (总结)MySQL自带的性能压力测试工具mysqlslap详解
PS:今天一同事问我有木有比较靠谱的mysql压力测试工具可用.其实mysql自带就有一个叫mysqlslap的压力测试工具,还是模拟的不错的.下面举例说说.mysqlslap是从5.1.4版开始的一 ...
- 一些JDK自带的性能分析利器
有时候碰到服务器CPU飙升或者程序卡死之类的问题,一般都不太好定位.这类bug一般都隐藏的比较深并且还可能是偶发性的,比较棘手. 对于此类问题,一般我们都有固定的分析流程.借助于JDK自带的一些分析工 ...
- JDK自带JVM性能调优监控工具jps、jstack、jmap、jhat、jstat
原文地址:https://www.jianshu.com/p/db954cb968fb JVM性能调优监控工具jps.jstack.jmap.jhat.jstat位于JDK的bin目录,这些工具短小精 ...
- perfmon——使用windows系统自带的性能监视器监控进程信息
第一次使用perfmon监控应用进程的信息,步骤总结如下: 第一部分 性能监视器 1.快捷键Win+R打开运行界面,输入“perfmon”命令后回车即可打开windows的性能监视器 2.点击“性能监 ...
随机推荐
- Failed to restart docker.service: Unit not found 镜像加速
解决方案 以前的安装残留 重新安装 find / -name "docker*" centos8 添加软件源信息 yum-config-manager --add-repo htt ...
- 在 window 上卸载 mysql
1.停止 mysql 服务 开始——>控制面板——>管理工具——>服务,停掉 MySQL 的服务 2.卸载安装包 控制面板-添加删除程序,找到MySQL,卸载(可能会有多个安装包,需 ...
- Electron – 基础学习(1): 环境安装、创建项目及入门
这几天到年底了,公司也没啥事,闲着就到处瞅瞅.记得上一家公司的时候用 Electron+ng1 写过项目,只是那个时候项目框架都是别人搭的,自己只负责写功能,对Electron没啥认识. 这几天想着反 ...
- 2020牛客竞赛 DP F 碎碎念
作者:儒生雄才1链接:https://ac.nowcoder.com/discuss/366644来源:牛客网 题目连接:https://ac.nowcoder.com/acm/contest/300 ...
- 电脑进不去BIOS解决办法
把所有外设(主要是硬盘,包括装在主板上的固态硬盘)拆下来,拆下纽扣电池给主板放电,装回纽扣电池,重启F1进入BIOS. 最终查到原因,是固态那里出的问题,固态作为启动硬盘,被自己搞得有问题了,有两个启 ...
- soundtouch change rate matlab implementation
soundtouch implement of changing rate in a way same with resample(SRC). When rate < 1, it need in ...
- [一本通学习笔记] 最近公共祖先LCA
本节内容过于暴力没什么好说的.借着这个专题改掉写倍增的陋习,虽然写链剖代码长了点不过常数小还是很香. 10130. 「一本通 4.4 例 1」点的距离 #include <bits/stdc++ ...
- open函数 文件设置缓冲
# 注释 将文件写入硬件设备时,使用系统调用,这类I/O操作一般时间很长 # 为了减少I/O次数操作,文件通常使用缓冲区(有足够的数据才进行系统调用) # 文件缓冲行为分为: # 全缓冲: open函 ...
- SSH后台分页
初学SSH,开始用的Struts2+Hibernate3+Spring3,Hibernate中用的HibernateTemplate进行数据库的操作.之后在进行前台页面显示的时候,要用到分页,查了一下 ...
- 安卓模拟器genymotion 安装使用
下载:https://www.genymotion.com/download/ 安装前先注册: https://www.runoob.com/w3cnote/android-tutorial-geny ...