wrk | 虽小但强!

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: wrk | 虽小但强!

前言


客户端采用wrk压测工具,服务端安装httpd服务。具体的httpd配置详见历史文章:# 关于Apache HTTP Serve你应该知道的!使用wrk对服务端进行压测,检测wrk的压测性能。


修改 httpd 的最大连接数


我们测试的后端服务采用httpd,为了能够承载更多的客户端连接,我们需要对httpd的默认配置进行修改。


直接将如下代码加到 httpd 的配置文件中


<IfModule mpm_prefork_module>
                StartServers                     10
                MinSpareServers                   5
                MaxSpareServers                  10
                ServerLimit                    5500
                MaxClients                     5000
                MaxRequestsPerChild               0
</IfModule>
复制代码


wrk


关于wrk


wrk是一款简单的HTTP压测工具,托管在Github上,github.com/wg/wrk,当然国内的码云Gitee上也有其资源,gitee.com/why168/wrk


wrk 的一个很好的特性就是能用很少的线程压出很大的并发量。原因是它使用了一些操作系统特定的高性能 io 机制, 比如 select, epoll, kqueue 等。其实它是复用了 redis 的 ae 异步事件驱动框架。确切的说 ae 事件驱动框架并不是 redis 发明的,它来至于 Tcl的解释器 jim,这个小巧高效的框架,因为被 redis 采用而更多的被大家所熟知。


依赖


# wrk 依赖gcc
# yum install gcc
# apt-get  install  build-essential
复制代码


安装


# clone wrk 源码到测试机
git clone https://gitee.com/why168/wrk.git
# 编译
cd wrk
make
# 编译完后当前路径会生成wrk可执行文件
复制代码


测试前解除客户端和服务端的限制

sysctl.conf


# ===向/etc/sysctl.conf中增加以下几行配置===
fs.file-max = 1048576
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_mem = 524288 1048576 1572864
net.ipv4.tcp_rmem = 4096 4096 8388608
net.ipv4.tcp_wmem = 4096 4096 8388608
# TCP连接复用
net.ipv4.tcp_tw_reuse = 1
# TCP连接快速回收
net.ipv4.tcp_tw_recycle = 1
kernel.pid_max=1048576
kernel.threads-max=1048576
vm.max_map_count=1048576
复制代码


端口限制放开


# 打开端口范围
echo 1024 65000 > /proc/sys/net/ipv4/ip_local_port_range
# 修改端口释放等待时间(15-30s,默认为60s)
echo 15 > /proc/sys/net/ipv4/tcp_fin_timeout
复制代码


文件句柄放开


使用命令:ulimit -n 1048576

或:修改配置文件


cat /etc/security/limits.conf
# End of file
* soft nofile 1048576
* hard nofile 1048576
复制代码


执行测试


➜  ok git:(master) ./wrk -t12 -c100 -d30s http://www.baidu.com
Running 30s test @ http://www.baidu.com
  12 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    15.24ms    6.29ms 178.82ms   96.92%
    Req/Sec   471.00    119.40   595.00     86.44%
  30000 requests in 30.10s, 446.41MB read
  Socket errors: connect 0, read 88161, write 0, timeout 0
Requests/sec:    996.72
Transfer/sec:     14.83MB
➜  ok git:(master)
复制代码


12 线程 100 个连接(并发)。QPS:996.72。

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
测试技术 Linux
三分钟搞定压力测试之http_load
本文对一个正在云服务器上运行的系统进行一个并发访问的压力测试,以此来模仿真实环境并发访问造成资源带宽不稳定出现的种种问题。
443 0
三分钟搞定压力测试之http_load
|
6月前
|
测试技术 Linux
wrk GET请求压力测试
wrk GET请求压力测试
49 0
|
6月前
|
测试技术
HTTP性能测试工具Siege 简介
HTTP性能测试工具Siege 简介
108 0
|
NoSQL 关系型数据库 MySQL
Web服务压测神器wrk
wrk是一款开源的高性能http压测工具(也支持https),非常小巧,可以执行文件只有3M(其中主要是luajit和openssl占用绝大多数空间),别看核心代码3-5年没更新了,但依旧非常好用。虽然很早之前我就知道有这么个工具了,当时学习这个工具的时候我还拿它压测了我们的个人网站xindoo.me,发现mysql性能不行后加了wp-cache,通过cache把我网站的承载能力提升了10多倍。但当时之前简单使用它的初级功能,最近工作中恰好有个http服务需要压测,然后就拿wrk做了。这次使用了wrk lua高级功能实现了压测,我们找到了我们服务的瓶颈,同时也被wrk的超高性能所震惊。
169 0
|
Unix 测试技术 Linux
基准测试工具:Wrk初识
Wrk是一个支持HTTP协议的基准测试工具,结合了多线程设计和可扩展事件通知,底层封装epoll(linux)和kqueue(bsd),能用较少线程生成大量并发请求(使用了操作系统特定的高性能io机制)。
基准测试工具:Wrk初识
|
应用服务中间件 测试技术 Apache
并发测试siege 的使用
并发测试siege 的使用
110 0
|
测试技术 Linux
Linux Commnad wrk HTTP 性能测试工具
Linux Commnad wrk HTTP 性能测试工具
|
NoSQL 测试技术 Linux
wrk(1)- 详细使用
wrk(1)- 详细使用
488 0
wrk(1)- 详细使用
|
测试技术 Linux
基于CentOS安装http_load压测工具
基于CentOS安装http_load压测工具,方便快捷,安装包只有100K!
279 0
|
缓存 测试技术
HTTP基准压测工具wrk使用指南
wrk是一个开源的、热门的、现代的单机HTTP基准测试工具,目前在github开源平台累计了26.9k的star数目,足以可见wrk在Http基准测试领域的热门程度。它结合了多线程设计和可扩展的事件通知系统,如epoll和kqueue,可以在有限的资源下并发出极致的的负载请求。并且内置了一个可选的LuaJIT脚本执行引擎,可以处理复杂的HTTP请求生成、响应处理以及自定义压测报告。
5269 0