locust使用经验---每个任务使用新的链接以及处理…
2018-09-18 06:42:42来源:博客园 阅读 ()
最近由于项目需要,在研究打压测试工具,以及当测试连接过多后端服务器配置问题
测试工具选用locust,locust中文意思为蝗虫,可以想象,locust就像成片的蝗虫,扑向我们的服务。
它支持分布式的打压测试,每个实例可自定义执行任务,执行任务可用python脚本实现,具体如何写python脚本这里就不详细介绍了,网上能搜到很多相关资料,这次的文章主要着重介绍如何实现我们的需求以及对遇到的问题分析。遇到的问题主要是两个:如何在每次执行任务都使用新的连接,大量连接时如何处理大量出现的TIME_WAIT连接
首先,我的测试场景是,大量的客户端会间歇性的请求服务器,并不会长时间连接,基本可以理解为每次请求都是短连接,每条连接发起一次请求后就会断开。所以首先需要解决的问题是,如何使每次执行任务都是用新的连接。
locust默认使用的是requests库,创建的会话默认会使用长连接,会复用连接,一条发起多次请求,这并不符合我的要求,所以在每次请求完数据后,我需要自己关闭连接。
关闭连接的手段有很多:
r.connection.close()
c方法的FIN报文由服务器发起
如果由服务器断开连接,会导致服务器端产生大量TIME_WAIT状态的连接,这个问题直接的影响就是服务器的端口很快会被耗尽,导致客户端无法与服务器成功建立新的连接
而如果由客户端断开连接,经测试,测试机端很快出现上万的TIME_WAIT状态的连接,测试量根本打不上去,大量连接建立失败
所以我们需要调整系统的配置,来优化tcp连接的处理
net.ipv4.tcp_tw_reuse=1 开启重用,允许将TIME_WAIT重用与新的连接
net.ipv4.tcp_fin_timeout = 30 缩短TIME_WAIT_2到TIME_WAIT的超时时间
net.ipv4.tcp_fin_timeout = 30
经过权衡,最终决定,服务器暂时不开启副作用较大的tw参数,由客户端断开连接,修改客户机的配置。
修改后测试,16个slave实例,模拟480个用户压测查询接口,客户端与服务器均不再出现大量TIME_WAIT连接,RPS轻松上3k
服务器硬件配置较低,2核2G内存,不需要打的特别狠,满足需求即可
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Django项目中使用qq第三方登录。 2019-08-13
- Python连载30-多线程之进程&线程&线程使用 2019-08-13
- Python学习日记(十) 生成器和迭代器 2019-08-13
- 【Python】语法基础 | 开始使用Python 2019-08-13
- 使用scrapy框架爬取全书网书籍信息。 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash