2. 压测工具 – Siege

最后更新于:2022-04-02 07:43:16

#### 安装方法 #### YUM安装(Centos7) 安装epel源(aliyun) ```shell yum install siege ``` #### 编译安装(Centos6/7) 下载位置 ```shell http://download.joedog.org/siege/ wget -P /opt http://download.joedog.org/siege/siege-latest.tar.gz ``` 安装 ```shell tar xzf siege-4.0.2.tar.gz cd siege-4.0.2 ./configure make && make install ``` #### 主要参数 ```shell 常用参数 -c,并发用户,默认为10 -r, 运行测试次数。 -t, 测试时间 核心参数 -d,建议配置为“1”,每个请求前的随机延迟 -i,随机点击URL。 -f,选择一个特定的URLS FILE。 -b,暴力测试,无延迟,查看某个压力下,资源的变化情况 压测控制参数 -q,关闭并禁止输出。 -l,--log [= FILE] LOG到FILE。如果没有指定FILE,则使用默认值:PREFIX/var/siege.log 定制化参数 -H,--header =“text”添加一个头来请求(可以是很多) -A,--user-agent =“text”请求中设置用户代理 -T,--content-type =“text”在请求中设置Content-Type ``` #### 压测方法(以下内容如有错误,请告知改正) ##### 如何使用1台24核,16GB内存的服务器,模拟20000并发请求? - 使用Centos7系统 - 做好内核中网络部分的优化 - 做好系统文件描述符的优化 - 建立10个用户(a...j) ##### 调整配置 每个用户下运行一次siege,会在用户目录下产生~/.siege/siege.conf的配置文件,该文件中需要调整2个限制参数 1. 出现多少次错误时停止,不包含404(按需调整) failures 2. 最大单进程并发数量,默认25 concurrent = 5000 #### 压测方式 ##### 基于请求的吞吐量(模拟真实请求) 例:20W请求,多长时间能够处理完成,并且没有错误产生 ```shell siege -c 1000 -r 20 -i ``` 10用户,每个用户并发1000,循环20次 主要关注总时常、响应时间、平均每秒完成请求、错误数 ##### 基于并发的暴力测试(了解瓶颈、规划容量) 例:20000并发,运行10分钟,观察服务器和应用的运行情况 ```shell siege -c 2000 -t 10m -b ``` 10用户,每个用户2000并发,运行10分钟 主要关注响应时间、平均每秒完成请求、平均每秒传送数据、实际最高并发 ##### 共同关注,系统资源消耗和压测对象状态监控 系统资源监控使用dstat ```shell dstat -t -a -l -m --tcp --top-cpu --output /tmp/145-2c10240-15000.txt ``` Web服务器监控 ```shell Zabbix监控状态页或内部运行情况 ``` #### 执行压测时,siege可能出现的几种情况 - 压测后卡住,10个用户,有些压测进程压测完成后退出失败 ```shell 取可用结果,平均后乘以10,作为压测结果,总耗时和响应时间,只平均不乘10 ``` - 自身资源不足 ```shell 系统优化 实际使用时,压测比较消耗内存 ``` - Web服务器处理失败(到达处理瓶颈) ```shell [error] socket: -872327424 connection timed out.: Connection timed out [error] socket: read error Connection reset by peer sock.c:539: Connection reset by peer ``` #### 真实案例 举例:压测Nginx,15000并发,页面大小150kB,压缩后800字节 Nginx配置 ```shell gizp on worker_processes=2 worker_connections 10240 ``` ##### 压测结果(部分) 用户a ```shell Transactions: 10454 hits Availability: 100.00 % Elapsed time: 30.05 secs Data transferred: 6.89 MB Response time: 1.94 secs Transaction rate: 347.89 trans/sec Throughput: 0.23 MB/sec Concurrency: 674.49 Successful transactions: 11805 Failed transactions: 0 Longest transaction: 16.98 Shortest transaction: 0.00 ``` 用户b ```shell Transactions: 21462 hits Availability: 100.00 % Elapsed time: 30.06 secs Data transferred: 13.32 MB Response time: 0.74 secs Transaction rate: 713.97 trans/sec Throughput: 0.44 MB/sec Concurrency: 528.73 Successful transactions: 22830 Failed transactions: 0 Longest transaction: 8.57 Shortest transaction: 0.00 ``` >备注:取5个用户,平均后乘10。但总用时,响应时间只平均,不乘10 |Trans|Elap Time|Data Trans|Resp Time|Trans Rate|Throughput|Concurrent| | :------------: | :------------: | :------------: | :------------: | :------------: | :------------: | :------------: | |150404|30.32|95.54|1.262|5008|3.16|5788.76|
';