• Locust项目压力测试总结


    一、简介

    Locust是一款使用Python编写的压力测试工具,本篇总结会介绍在实际测试过程中遇到的问题,不会介绍入门的操作,详情可以看官网的入门教程。

    https://www.locust.io/

    使用Locust的原因是因为可以模拟的用户数量可以通过添加硬件来增长,相对于jmeter来说配置更加方便。

    二、需求描述

    项目采用node+redis+oracle的模式,需要测试出单台服务器的性能瓶颈。

    三、实际测试

    环境的搭建:服务器上只需要安装好Python2.7及以上的版本,然后通过pip安装locust就完成了搭建。

    脚本编写:根据需求编写好python脚本,放到服务器上如 locu.py。

    脚本运行:通常使用的是主从模式来运行脚本,这样能够方便进程多开。

        locust -f locu.py --master   该命令运行后会生成一个主进程进行管理,主进程只需要一个。

        locust -f locu.py --slave   该命令运行后会有一个子进程启动,根据需要可以多次运行就会开启多个子进程,子进程用来模拟用户数量。

    以上命令运行后或默认开启8089 端口,通过浏览器访问本地8089端口就能进入web界进行控制。

    访问地址: http://localhost:8089,slave 就是开启的子进程数量。

    四、防坑指南

    1.如果实在Linux服务器运行locust,尴尬的是没有图形界面操作web。

    解决措施:一般连接服务器都是通过xshell来连接,我们可以通过xshell自带隧道功能建立一条隧道,将服务器8089端口的信息传输到本地计算机,这样直接在本地计算的浏览器就能对服务器进行控制。

    xshell >隧道窗格>转移规则>右键添加

    2.后台运行命令,防止命令中断

    通过xshell访问到服务器后,如果运行locust -f locu.py --master ,一旦xshell退出,命令也会自动中断。因为通过xshell登录所运行命令都属于登录用户进程的子进程,一旦断开连接主进程会自动关闭,该进程下所有命令都会自动关闭。所以如果是长时间运行的话最好把命令放在后台运行。

    (locust -f load.py --master &)   该命令表示把该进程放置到后台运行,就算用户断开连接也会一直运行。

    放置到后台后果想要关闭命令就先使用ps -ef|grep locust 查看进程号,再用kill pid 来杀掉进程。

    3.用户数量的详细解释

    web界面的user 数量表示并发数,也就是每次访问的并发连接数。实践的时候用户数量是300,表示每次访问有300个用户同时访问,吞吐量能达到2000/s,说明在一秒的时间内服务器响应了大约7次,那么300的用户耗费的时间就是140ms左右。

    4.用户数量与slvae关系

    用户数量是300,slave为3,那么每个slave会平均分配发送的用户量100,与jmerter分布式不一样。

    五、最终测试结果

    服务器配置:CPU 8核 内存16G  
    承受最大业务量900万次请求数,占用内存12G,占用磁盘空间23G。
    redis与业务量关系 80万请求数占用1G redis内存
    磁盘与业务量关系  80万请求数占用2G 磁盘空间

  • 相关阅读:
    Web开发用到的导航栏固定顶端,页脚固定低端
    Action Filter 与 内置的Filter实现(实例-防盗链)转
    MVC 通过继承HandleErrorAttribute,使用log4net或ELMAH组件记录异常等
    HTML5中custom data-*特性与asp.net mvc 3 表单验证
    jQuery验证控件jquery.validate.js使用说明+中文API (转)
    Android ADB server didn't ACK * failed to start daemon * 简单有效的解决方案 (转)
    Android定制控件-带图像的TextView
    使用Elmah记录日志
    laravel路由与控制器(资源路由restful)
    npm 常用命令
  • 原文地址:https://www.cnblogs.com/maoxianfei/p/7987217.html
Copyright © 2020-2023  润新知