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进行规格选择与性能压测。
相关文章
|
测试技术 C语言
wrk(2)- Lua 脚本的使用
wrk(2)- Lua 脚本的使用
877 0
wrk(2)- Lua 脚本的使用
|
4月前
|
JSON Unix 测试技术
Wrk压测发送Post请求的正确姿势
这篇文章是关于如何使用Wrk工具进行HTTP基准测试的指南,包括Wrk的安装、基本用法、执行Get和Post请求的示例,以及在进行Post请求测试时正确设置Lua脚本的重要性。
278 1
|
4月前
|
测试技术 API
使用wrk对api接口进行性能测试
使用wrk对api接口进行性能测试
|
7月前
|
测试技术 Linux
wrk GET请求压力测试
wrk GET请求压力测试
52 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的超高性能所震惊。
174 0
|
Unix 测试技术 Linux
基准测试工具:Wrk初识
Wrk是一个支持HTTP协议的基准测试工具,结合了多线程设计和可扩展事件通知,底层封装epoll(linux)和kqueue(bsd),能用较少线程生成大量并发请求(使用了操作系统特定的高性能io机制)。
基准测试工具:Wrk初识
|
应用服务中间件 测试技术 Apache
并发测试siege 的使用
并发测试siege 的使用
116 0
|
测试技术 Linux
Linux Commnad wrk HTTP 性能测试工具
Linux Commnad wrk HTTP 性能测试工具
|
NoSQL 测试技术 Linux
wrk(1)- 详细使用
wrk(1)- 详细使用
497 0
wrk(1)- 详细使用
|
缓存 测试技术
HTTP基准压测工具wrk使用指南
wrk是一个开源的、热门的、现代的单机HTTP基准测试工具,目前在github开源平台累计了26.9k的star数目,足以可见wrk在Http基准测试领域的热门程度。它结合了多线程设计和可扩展的事件通知系统,如epoll和kqueue,可以在有限的资源下并发出极致的的负载请求。并且内置了一个可选的LuaJIT脚本执行引擎,可以处理复杂的HTTP请求生成、响应处理以及自定义压测报告。
5331 0

热门文章

最新文章