测试20万qps的web接口三本篇文章主要描述在不改变当前运行环境的情况下是否可以使用lvs来支撑大量的短连接建立。环境设定client只绑定一个ip并且压测时只指定一个目标ip这样就不需要针对不同的压测程序做特殊处理web只绑定一个ip。期望目标如果想在client和web之间发起大量的短连接请求每秒20W是否可以在两者之间插入一个负载均衡组件来处理最终结论做了很多尝试发现即使使用lvs也没法突破连接四元组限制。正确方式一很早之前做过类似的实验。在client上绑定了多个ip通过jmeter发起压测请求时设置不同源ip这样可以支撑大量的短连接。正确方式二很早之前做过类似的实验。在client和web之间加入nginxclient访问nginxnginx访问web。错误方式一使用前两种正确方式时都需要在client做一些特殊处理要么绑定多个源ip要么指定多个目标ip对压测程序的使用造成不便。有没有一种更加通用的方案比如直接在client和web之间插入一个负载均衡组件就可以在压测端和目标端之间创建非常多的短连接此时client只绑定1个ip并且压测时只指定一个目标ip。本次引入了lvs来作为负载均衡组件使用了DR和NAT模式。通过实验发现不能创建大量的短连接比如每秒1万因为client只会与lvs的vip建立tcp连接也就是只有1个四元组。使用PVE搭建环境使用浪潮5212M5和PVE搭建测试环境改了很多种参数绑定多个ip、nginx的split_clients设置也不能创建大量短连接。这里选择DR模式觉得它工作在二层应该更容易支持多个四元组实际上不是这样的。这是使用PVE创建的虚拟机。使用vmware评估lvs觉得可能是自己对lvs的理解有偏差于是使用轻量级的vmware搭建DR模式的测试环境先跑通流程再去浪潮5212M5上测试主要是5212M5功耗高、噪音大。通过分析网络连接发现client与vip之间建立的tcp连接是一个固定ip的四元组。既然DR模式不行就测试nat模式。通过分析网络连接发现client与vip之间建立的tcp连接也是一个固定ip的四元组。结论client会与lvs的vip建立tcp连接这个vip在哪个服务器上不重要标识这个连接的就是一个固定的四元组。之前错误以为client会与lvs的dip建立tcp连接这样就可以扩展多个四元组。后续规划这次投入了很多时间和精力来做测试没有达到预期。在搭建lvs和pve环境时遇到了各种问题比如网关、转发、nat、虚拟网桥解决之后对网络的理解也更加深刻。有时也在反省测试大量短连接的意义有那么大吗。既然lvs不能突破ip的四元组限制是否要继续寻找其它方式。有没有大佬可以指点一下。