小陈最近为团队的 HTTP 服务开发了一个高性能网关,用户的请求会先经过小陈开发的网关,网关对 HTTP Header 做一系列的校验,如果没有问题,会把请求转发给真实服务器(Real Server,简称为 RS)。网关经过测试,性能非常高,请求可以在 2ms 内完成转发。于是小陈很高兴,自己写的代码马上就能在线上服务十几万的真实用户了!现在,距离能够上线就差最后一步——压力测试,能不能支持十几万的用户同时在线,这时候就要拉出来溜溜了。
压力测试的时候发现,单机 QPS 总是在 5 万左右就无法继续提高了,虽说这个性能也够了,但是瓶颈到达的时候,CPU 和 内存的利用率都很低。无法充分利用硬件资源,这在当下「降本增效」的公司运动中解释不了呀!于是小陈撸起袖子,进行一番排查,势必找到瓶颈,榨干硬件资源。
经过查看日志,小陈发现这个网关的日志中有一些连接建立失败 (Connection refused) 的情况。为什么连接会建立失败呢?难道是压测环境的网络出了问题?抓包看看就知道了!
小陈在网关侧进行抓包,得到的抓包文件如下。
对着抓包文件看了半天,小陈还是没有看出来个所以然。所幸,团队里有一个网络专家(就是你!)小陈只好来请求专家的帮助。
请下载上面这个抓包文件,用 Wireshark 打开,解释一下小陈的网关软件为什么会出现 Connection refused 的错误?(答案会在下一篇博客揭晓)
==计算机网络实用技术 目录==
这篇文章是计算机网络实用技术系列文章中的一篇,这个系列正在连载中,我计划用这个系列的文章来分享一些网络抓包分析的实用技术。这些文章都是总结了我的工作经历中遇到的问题,经过精心构造和编写,每个文件附带抓包文件,通过实战来学习网路分析。
如果本文对您有帮助,欢迎扫博客右侧二维码打赏支持,正是订阅者的支持,让我公开写这个系列成为可能,感谢!
没有链接的目录还没有写完,敬请期待……
- 序章
- 抓包技术以及技巧
- 理解网络的分层模型
- 数据是如何路由的
- 网络问题排查的思路和技巧
- 不可以用路由器?
- 网工闯了什么祸?
- 网络中的环路和防环技术
- 延迟增加了多少?
- TCP 延迟分析
- 压测的时候 QPS 为什么上不去?
- 压测的时候 QPS 为什么上不去?答案和解析
- 重新认识 TCP 的握手和挥手
- 重新认识 TCP 的握手和挥手:答案和解析
- TCP 下载速度为什么这么慢?
- TCP 长肥管道性能分析
- 后记:学习网络的一点经验分享
与本博客的其他页面不同,本页面使用 署名-非商业性使用-禁止演绎 4.0 国际 协议。
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.ip_conntrack_max = 10240
fs.file-max = 1000000
* soft nofile 1000000
* hard nofile 1000000
TCP客户端可用端口数量有限,抓包文件27295个TCP源端口去连接服务器80端口。可以尝试加大可用端口数量同时多个不同Ip去连接服务器.TCP通过如下方式确定一条流:源IP源端口+目的Ip和目的端口,目标Ip和端口固定,可通过改变源Ip和端口号的方式增加连接数量
考虑服务器资源使用率很低:
如下几个方面考虑:1.tcp客户端可用端口数量2.文件描述符 3.tcp r/w 内存 4.多个Ip地址
服务方面:1.多个IP绑定到80端口 2.加大文件描述符包括进程,用户,系统 3.tcp 全连接和半连接队列大小