网站LOGO
云与雾Blog
页面加载中
1月18日
网站LOGO 云与雾Blog
分享你我所热爱的。
菜单
  • 云与雾Blog
    分享你我所热爱的。
    用户的头像
    首次访问
    上次留言
    累计留言
    我的等级
    我的角色
    打赏二维码
    打赏博主
    如何对自己的服务器进行压力测试
    点击复制本页信息
    微信扫一扫
    文章二维码
    文章图片 文章标题
    创建时间
  • 一 言
    确认删除此评论么? 确认
  • 本弹窗介绍内容来自,本网站不对其中内容负责。

    如何对自己的服务器进行压力测试

    小北 · 原创 ·
    🏗️技术教程🔩系统报错修复 · 云与雾博客小北的学习笔记
    共 6835 字 · 约 6 分钟 · 1942
    本文最后更新于2023年04月26日,已经过了632天没有更新,若内容或图片失效,请留言反馈

    项目的开展

    我们对项目进行部署之后,假设这个项目每天会有百万次的访问。我们的项目能不能做到稳定提供服务呢?所以我们需要进行一些测试。

    如何进行测试

    一、首先是付费的

    世界上没有钱解决不了的问题,如果有 那一定是钱的金额不够。

    1.阿里云提供的阿里云性能测试 PTS

    阿里云的性能测试PTS无需安装软件;脚本场景监控简单化,省时、省力;分布式并发压测,施压能力无上限;快速大规模集群扩容、支持几十万用户及百万级TPS性能压测;可模拟海量用户的真实业务场景,全方位验证业务站点的性能、容量和稳定性。

    性能测试PTS(Performance Testing Service)是一款性能测试工具。支持按需发起压测任务,可提供百万并发、千万TPS流量发起能力,100%兼容JMeter。提供的场景编排、API调试、流量定制、流量录制等功能,可快速创建业务压测脚本,精准模拟不同量级用户访问业务系统,帮助业务快速提升系统性能和稳定性。

    PTS 广泛应用于各种压力测试和性能测试场景,包括但不限于以下场景:
    阿里测压.png阿里测压.png

    详情请观看使用文档如何在一分钟内发起压测?

    2.腾讯云提供的测压大师LM

    WeTest 压测大师(Load Master,LM)是简单易用的自动化性能测试平台,为用户提供测试框架及压测环境、创建虚拟机器人模拟产品多用户并发场景,支持 HTTP 或 HTTPS 协议,包括 Web/H5 网站、移动应用、API 、游戏等主流压测场景,适用于产品发布前及运营中的服务器压力测试及性能优化。
    腾讯云测压大师优势.jpg腾讯云测压大师优势.jpg

    使用详情请观看使用文档如何在一分钟内发起压力测试

    二、不花钱的

    说完了付费的,再说说不花钱的。

    1.http_load

    http_load是一款基于Linux平台的web服务器性能测试工具,用于测试web服务器的吞吐量与负载,web页面的性能。它又轻巧又简便,整个安装包就100K左右。它可以快速用来对网站或者Web API进行压力测试。而且功能还挺强大的,特别是在架构验证过程中,测试某个平台的并发和响应时间相当的管用。
    下载地址:
    https://yunyuwu.lanzouv.com/ih4Kc01wfvkf
    https://pan.baidu.com/s/105917KnmkhKJuuBNQ1paRA?pwd=ngid

    安装:

    上传服务器后

    shell 代码:
    #tar xfz http_load-09Mar2016.tar.gz
    #cd http_load-09Mar2016
    #make && sudo make install

    因为包很小,所以会瞬间安装完成,直接打http_load命令验证下是否安装成功,你应该可以看到下面的信息:

    shell 代码:
    usage:  http_load [-checksum] [-throttle] [-proxy host:port] [-verbose] [-timeout secs] [-sip sip_file]
                -parallel N | -rate N [-jitter]
                -fetches N | -seconds N
                url_file
    One start specifier, either -parallel or -rate, is required.
    One end specifier, either -fetches or -seconds, is required.

    基本用法:

    使用http_load的主要方式就是用命令http_load <参数> <url列表文件>。其中url列表文件就是一个文本文件,每行放一条你要测试的URL地址(默认只支持HTTP)http_load在运行时会从中随机抽取地址访问。当然你也可以只放一条,那就是针对特定地址做压测。

    http_load的参数主要有:

    -parallel 简写 -p: 同一时间发起的并发连接数
    -rate 简写 -r: 每秒开启的并发连接数

    -parallel或-rate必须且只能有一个

    -fetches 简写 -f :总计的访问次数
    -seconds 简写 -s :总计的访问时间

    -fetches或-seconds必须且只能有一个

    -proxy host:port: 指定需经过的代理地址和端口
    timeout secs: 连接闲置后多久超时,默认60秒
    -verbose: 控制台输出详细信息
    注意网上有些文章说-p是并发进程数,千万别被带坑里了。http_load就一个进程,它只是模拟并发连接,不是真起了一大堆客户端进程。每个连接的调用都是非阻塞式的,因此确保了并发量。

    首先我们编辑一个urls.txt文件格式是每行一个URL。文件中可以有这种格式http://www.baidu.com/亦或是192.168.0.1这一类的都可以测。

    文件格式如下:

    txt 代码:
    https://yunyuwu.cn/adiod
    https://yunyuwu.cn/3ryn89
    https://yunyuwu.cn/489y3y89
    http://35.132.432.254
    shell 代码:
    #示例:
    ./http_load  -p 并发访问进程数  -s 访问时间  需要访问的URL文件
    命令行:
    $ http_load -p 50 -s 10 urls.txt

    然后得到了结果:

    shell 代码:
    1239 fetches, 50 max parallel, 7.31784e+06 bytes, in 10.0001 seconds
    47211.8 mean bytes/connection
    15.5 fetches/sec, 731783 bytes/sec
    msecs/connect: 195.597 mean, 218.047 max, 189.311 min
    msecs/first-response: 195.951 mean, 271.889 max, 189.239 min
    38 bad byte counts
    HTTP response codes:
      code 200 -- 155

    运行结果简述:
    1.共访问了1239次,50个最大并发,获取了7.31784亿字节的数据,用时10.0001秒
    2.每次访问平均获取47211.8字节
    3.每秒15.5次访问,每秒731783字节数据
    4.平均每次访问195.597毫秒,最大218.047毫秒,最小189.311毫秒
    5.首次响应平均195.951毫秒,最大271.889毫秒,最小189.239毫秒
    6.有38次字节计数错误
    7.HTTP响应代码,155次200,说明有155次访问成功,

    注意事项

    如果提示make:cc 命令未找到请执行以下命令。

    shell 代码:
    $ yum -y install gcc automake autoconf libtool make
    $ yum install gcc gcc-c++

    如果报错:无法创建一般文件‘/usr/local/man/man1’: 没有那个文件或目录
    可先mkdir /usr/local/man再次make install


    2.webbench

    web压力测试工具webbench概述
    webbench最多可以模拟3万个并发连接去测试网站的负载能力并发能力比较高,可以测试https及动态静态页面
    适合中小型网站测试承受能力。
    webbench的标准测试可以向我们展示服务器的两项内容:每秒钟相应请求数和每秒钟传输数据量。
    webbench不但能具有便准静态页面的测试能力,还能对动态页面(ASP,PHP,JAVA,CGI)进行测试的能力。
    他支持对含有SSL的安全网站例如电子商务网站进行静态或动态的性能测试。

    安装:

    下载地址:
    https://yunyuwu.lanzouv.com/iaCxQ01wlt6f
    https://pan.baidu.com/s/1HmorM8V4TuH5MLQm2UEniw?pwd=97wj

    shell 代码:
    # yum install -y gcc ctags #先安装编译需要的组件
    # wget http://www.ha97.com/code/webbench-1.5.tar.gz
    # tar zxvf webbench-1.5.tar.gz
    # cd webbench-1.5
    # make && make install
    使用

    webbench -c 1000 -t 30 http://127.0.0.1/test.jpg
    参数说明:-c表示并发数,-t表示时间(秒)

    测试结果
    shell 代码:
    Webbench - Simple Web Benchmark 1.5
    Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
    
    Benchmarking: GET http://hz.xiaobei.ga/
    3000 clients, running 30 sec.
    
    Speed=7946 pages/min, 16725 bytes/sec.
    Requests: 2241 susceed, 1732 failed.

    本人测试感觉并没有上一个脚本那么好使。


    3.Siege

    Siege是一个压力测试和评测工具,设计用于WEB开发这评估应用在压力下的承受能力:可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。
    Siege是一个多线程http负载测试和基准测试工具。
    Siege:这是Linux系统下的一个测试工具,完全使用C语言实现,可以对HTTP和FTP服务器进行负载和性能测试。通过使用Siege 提供的功能,可以很容易的制定测试计划:包括规定使用并发用户数、重复数量,从而可以模拟在服务器、网络或者其它对象上附加负载以测试他们提供服务的受压能力,方便的测试服务器的性能。最后,利用Siege提供的测试结果来分析性能指标或者分析他们提供的服务在不同负载条件下的性能情况,分析测试结果,找出影响系统性能的瓶颈。

    下载地址:
    https://yunyuwu.lanzouv.com/ioqUC01wr4gb
    https://pan.baidu.com/s/1J7uutOI6JNm93it97HrsPQ?pwd=a6wf

    安装:
    shell 代码:
    # wget http://download.joedog.org/siege/siege-4.1.2.tar.gz
    # tar xzvf siege-4.1.2.tar.gz
    # cd siege-4.1.2
    # ./configure
    # make && make install

    提示:如果服务器没有安装编译工具,请先安装:

    shell 代码:
    sudo apt-get install build-essential

    然后运行

    shell 代码:
    siege -v

    出现下方代码即表示成功。

    shell 代码:
    New configuration template added to /root/.siege
    Run siege -C to view the current settings in that file
    SIEGE 4.1.2
    sigh常见参数

    -h帮助
    -c 指定并发数(是真并发)
    -r 指定重复次数
    -d 指定请求的延迟时间,注意每个请求间的随机延迟(模拟用户的思考时间,最多延迟一分钟,其他都是随机默认在一分钟之内)
    -f 指定url列表,可以一次给多个地址加压(多用于翻页的Url测试)
    -t 指定用例执行时间,比如,-t 10s,-t 1M(H)之类(主要用于稳定性性测试,长时间进行加压,最容易发现内存泄露的问题)
    -g 获取请求的headers信息并打印出来,debug专用
    -H指定请求的headers信息
    -l或者–log=[File]指定测试结果的路径

    使用方法:

    示例:

    shell 代码:
    siege -c 50 -r 100 -u http://192.168.91.100
    注意事项:
    • siege默认只支持255个并发数,可以自己自定义,修改~/.siege/siege.conf下的limit数值。
    • 在用户目录下的 .bash_profile 中的末尾加入ulimit -n 2000, 保存后再执行source ~/.bash_profile `即可

    4.黄金眼ddos

    此脚本非常简单暴力

    shell 代码:
    wget http://pan.gov.duy.la/data/hjy.py

    脚本设置默认50并发 持续30秒 时间有点短 可以自己去改改脚本 相信大家都能看懂
    根据自己服务器稍调一下,然后给予hjy.py脚本权限

    shell 代码:
    chmod +x hjy.py

    命令示例如下:

    shell 代码:
    ./hjy.py http://baidu.com
    ./hjy.py http://baidu.com -s 300 -w 300

    参数解释:

    -u,--useragents要使用的带有用户代理的文件(默认值:随机生成)
    -w,--workers并发工作者数(默认值:50)
    -s,--sockets并发套接字数(默认值:30)
    -m,--method使用'get'或'post'或'random'的HTTP方法(默认:get)
    -d,-debug启用调试模式[更多详细输出](默认值:False)

    5.cc

    以上就是博主自己整理的关于服务器测压的脚本了,有不足或不对的地方欢迎评论区留言!

    声明:本文由 小北(博主)原创,依据 CC-BY-NC-SA 4.0 许可协议 授权,转载请注明出处。

    还没有人喜爱这篇文章呢

    我要发表评论 我要发表评论
    博客logo 云与雾Blog 分享你我所热爱的。 51统计
    MOEICP 萌ICP备20228088号 ICP 晋ICP备2021016398号 又拍云 本站由又拍云提供CDN加速/云存储服务

    💻️ 小北 1月5日 在线

    🕛

    本站已运行 3 年 336 天 18 小时 31 分
    云与雾Blog. © 2021 ~ 2025.
    网站logo

    云与雾Blog 分享你我所热爱的。