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.点击“性能监 ...
随机推荐
- java编码解码过程
最近做项目的时候,有时会遇到中文乱码的问题,网上查询了很多资料,发现大多都是只讲解决方案,并没有讲到为什么要使用这种方案,这种方案的原理是什么? 最典型的就是连接数据库的URL,我们一般把它放到cla ...
- 多项式乘法逆元 - NTT
递归求解即可 #include <bits/stdc++.h> using namespace std; #define int long long namespace NTT { #de ...
- 菜鸟教程 Missing parentheses in call to 'print'
个人博客 地址:http://www.wenhaofan.com/article/20180618180327 >>> print "hello" SyntaxE ...
- sql server和my sql 命令(语句)的区别,sql server与mysql的比较
sql与mysql的比较 1.连接字符串sql :Initial Catalog(database)=x; --数据库名称 Data Source(source)=x; - ...
- 复选框与bitmap算法实践
bitmap(位图)算法 bitmap算法是利用数据二进制的每一位的值来表示数据的算法,可用来压缩保存数据集. 如何保存 如 5(int)的二进制表示为 101b,第一位和第三位的值是1就可以表示数据 ...
- ASP.NET Identity-验证与授权及管道事件
https://www.cnblogs.com/OceanEyes/p/thinking-in-asp-net-mvc-apply-asp-net-identity-authentication.ht ...
- ubuntu apt
一些命令: sudo apt-get update 更新源 sudo apt-get install package --reinstall 重新安装包 sudo apt-get upgrade ...
- C++-Typedef结构体遇上指针
继Typedef遇上结构体数组后,我们又产生了新的疑问. 上一期地址:https://www.cnblogs.com/lemaden/p/10122929.html 昨天一位朋友又问我了,说结构体数组 ...
- Electron – 项目报错整理(打包~1): WARNING: Make sure that .NET Framework 4.5 or later and Powershell 3 or later are installed, otherwise extracting the Electron zip file will hang.
WARNING: Make sure that .NET Framework 4.5 or later and Powershell 3 or later are installed, otherwi ...
- 2019-08-01 纪中NOIP模拟B组
T1 [JZOJ2642] 游戏 题目描述 Alice和Bob在玩一个游戏,游戏是在一个N*N的矩阵上进行的,每个格子上都有一个正整数.当轮到Alice/Bob时,他/她可以选择最后一列或最后一行,并 ...