博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nginx+tomcat的keepalive验证、bio/nio连接比较
阅读量:6440 次
发布时间:2019-06-23

本文共 849 字,大约阅读时间需要 2 分钟。

原文地址:

最近刚好有时间找了台机器压测了一下,验证一下自己的一些想法。

很多时候我们会发现实际情况并不如我们所了解,一方面是实际情况并非完美,会受到许多环境的影响,所以结果有时与我们所学理论会相悖,更有甚者,有时在网上了解的理论本身或过时,或并不正确,所以在有机会、抑或有条件的情况,可是实验一下自己所学,这也可加深理解。

  1. nginx+tomcat keepalive验证

用jmeter进行压力测试,如:

根据网上的其中一种说法,只需在nginx中加上:

[html] view plain copy

proxy_http_version 1.1;

即可实现长连接,在nginx中开启了以后,抓包 :

[html] view plain copy

tcpdump tcp -i lo port 8081 -w tomcat.cap

抓包以后用wireshark看看目标请求的head,发现有connection:close,说明连接并非长连接。

继续在upstream中加上keepalive,抓包看,还是带上了connection:close。

继续在nginx中主动加上connection:keepalive,再次抓包,终于保持连接了。

抓nginx的的包,可以看到有keepalive:

  1. bio及nio连接下进行简单的压测

采用bio,加keepalive,500并发req的情况下:

采用nio,500并发req的情况下:

从上面的截图,可以看到结果基本跟预料的一直,bio的情况下,线程会比较多,1k多,基本比nio情况下多1k,也因此VIRT内存会占用更多,以单线程占1m,多1k线程,基本也要多占用1g左右的内存。

因此到底要用那种连接,还是要看实际情况,如果要做网络接入层,当然会用nio,不然要同时承受那么多的并发连接,哪来这么多的资源给消耗,不过估计不会有人拿它做接入层吧!

转载于:https://blog.51cto.com/summerflowers/2114827

你可能感兴趣的文章
jquery easyui datagrid mvc server端分页排序筛选的实现
查看>>
去了大公司就一定能学到很牛的技术么?
查看>>
methanol 模块化的可定制的网页爬虫软件,主要的优点是速度快。
查看>>
IOS开发之表视图(UITableView)
查看>>
Notepad++去除代码行号的几种方法
查看>>
polay定理总结
查看>>
CodeForces 396C 树状数组 + DFS
查看>>
[sharepoint]rest api文档库文件上传,下载,拷贝,剪切,删除文件,创建文件夹,修改文件夹属性,删除文件夹,获取文档列表...
查看>>
远程桌面退出全屏/不能全屏/全屏切换的技巧
查看>>
【Java】Float计算不准确
查看>>
mybatis在xml文件中处理大于号小于号的方法
查看>>
Codeforces Codeforces Round #319 (Div. 2) A. Multiplication Table 水题
查看>>
各大浏览器CSS Hack收集
查看>>
再谈 $* 和 $@ 在 Bash 中的表现
查看>>
Apache Commons工具集简介
查看>>
【翻译】Nginx的反向代理
查看>>
htm、html、shtml网页区别
查看>>
SpringCloud学习笔记:服务注册与发现Eureka(2)
查看>>
学习新 api 的思考过程 4.18
查看>>
想要设计自己的微服务?看这篇文章就对了
查看>>