压测的时候 QPS 为什么上不去?

小陈最近为团队的 HTTP 服务开发了一个高性能网关,用户的请求会先经过小陈开发的网关,网关对 HTTP Header 做一系列的校验,如果没有问题,会把请求转发给真实服务器(Real Server,简称为 RS)。网关经过测试,性能非常高,请求可以在 2ms 内完成转发。于是小陈很高兴,自己写的代码马上就能在线上服务十几万的真实用户了!现在,距离能够上线就差最后一步——压力测试,能不能支持十几万的用户同时在线,这时候就要拉出来溜溜了。

压力测试的时候发现,单机 QPS 总是在 5 万左右就无法继续提高了,虽说这个性能也够了,但是瓶颈到达的时候,CPU 和 内存的利用率都很低。无法充分利用硬件资源,这在当下「降本增效」的公司运动中解释不了呀!于是小陈撸起袖子,进行一番排查,势必找到瓶颈,榨干硬件资源。

经过查看日志,小陈发现这个网关的日志中有一些连接建立失败 (Connection refused) 的情况。为什么连接会建立失败呢?难道是压测环境的网络出了问题?抓包看看就知道了!

tcpdump 的位置

小陈在网关侧进行抓包,得到的抓包文件如下。

对着抓包文件看了半天,小陈还是没有看出来个所以然。所幸,团队里有一个网络专家(就是你!)小陈只好来请求专家的帮助。

请下载上面这个抓包文件,用 Wireshark 打开,解释一下小陈的网关软件为什么会出现 Connection refused 的错误?(答案会在下一篇博客揭晓)

==计算机网络实用技术 目录==

这篇文章是计算机网络实用技术系列文章中的一篇,这个系列正在连载中,我计划用这个系列的文章来分享一些网络抓包分析的实用技术。这些文章都是总结了我的工作经历中遇到的问题,经过精心构造和编写,每个文件附带抓包文件,通过实战来学习网路分析。

如果本文对您有帮助,欢迎扫博客右侧二维码打赏支持,正是订阅者的支持,让我公开写这个系列成为可能,感谢!

没有链接的目录还没有写完,敬请期待……

  1. 序章
  2. 抓包技术以及技巧
  3. 理解网络的分层模型
  4. 数据是如何路由的
  5. 网络问题排查的思路和技巧
  6. 不可以用路由器?
  7. 网工闯了什么祸?
  8. 网络中的环路和防环技术
  9. 延迟增加了多少?
  10. TCP 延迟分析
  11. 压测的时候 QPS 为什么上不去?
  12. 压测的时候 QPS 为什么上不去?答案和解析
  13. 重新认识 TCP 的握手和挥手
  14. 重新认识 TCP 的握手和挥手:答案和解析
  15. TCP 下载速度为什么这么慢?
  16. TCP 长肥管道性能分析
  17. 后记:学习网络的一点经验分享
与本博客的其他页面不同,本页面使用 署名-非商业性使用-禁止演绎 4.0 国际 协议。


压测的时候 QPS 为什么上不去?”已经有3条评论

  1. net.ipv4.ip_local_port_range = 1024 65535

    net.ipv4.ip_conntrack_max = 10240

    fs.file-max = 1000000

    * soft nofile 1000000
    * hard nofile 1000000

  2. TCP客户端可用端口数量有限,抓包文件27295个TCP源端口去连接服务器80端口。可以尝试加大可用端口数量同时多个不同Ip去连接服务器.TCP通过如下方式确定一条流:源IP源端口+目的Ip和目的端口,目标Ip和端口固定,可通过改变源Ip和端口号的方式增加连接数量

  3. 考虑服务器资源使用率很低:
    如下几个方面考虑:1.tcp客户端可用端口数量2.文件描述符 3.tcp r/w 内存 4.多个Ip地址
    服务方面:1.多个IP绑定到80端口 2.加大文件描述符包括进程,用户,系统 3.tcp 全连接和半连接队列大小

回复 192.***.***.1 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注