wrk | 虽小但强!

简介: 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。

相关文章
|
Linux
centos使用iptables实现nat端口转发
centos使用iptables实现nat端口转发
1351 4
|
算法 物联网 数据安全/隐私保护
基于扩频解扩+汉明编译码+交织的lora通信系统matlab性能仿真
本内容展示了一种基于扩频解扩、汉明编译码和交织技术的LoRa通信算法。预览为无水印的完整程序运行效果,使用Matlab2022a开发。LoRa(Long Range)是一种低功耗广域网通信技术,适用于远距离低功耗数据传输。核心程序含详细中文注释与操作视频,涵盖抗干扰、错误检测纠正及突发错误对抗等关键技术,提升系统可靠性与稳定性。
|
11月前
|
人工智能 自然语言处理 算法
2025 年 7 月境内深度合成服务算法备案情况分析报告
2025年7月,中央网信办发布第十二批深度合成算法备案信息,全国389款产品通过备案,服务提供者占比超七成。截至7月14日,全国累计备案达3834款,覆盖文本、图像、音视频等多模态场景,广泛应用于生活服务、医疗、金融等领域。广东以135款居首,数字人、AI客服等C端应用主导,民营企业成主力,国企聚焦公共服务。随着AI政策推动,备案已成为AI产品合规上线关键环节。
|
存储 Kubernetes 负载均衡
深入探讨Docker生态系统,Docker Compose vs. Docker Swarm vs. Kubernetes:深入比较
Kubernetes适用于大规模、复杂应用程序和多云部署,具有高度可定制的部署配置和广泛的生态系统。 在选择时,还可以考虑将它们组合使用,以满足不同环境和需求。无论选择哪个工具,容器编排都将成为现代应用程序开发和部署的不可或缺的一部分。
2302 0
|
canal 负载均衡 智能网卡
阿里云洛神云网络论文入选SIGCOMM'25主会,相关实习生岗位火热招聘中
阿里云飞天洛神云网络的两项核心技术Nezha和Hermes被SIGCOMM 2025主会录用。Nezha通过计算网络解耦实现vSwitch池化架构,大幅提升网络性能;Hermes则提出用户态引导I/O事件通知框架,优化L7负载均衡。这两项技术突破解决了云网络中的关键问题,展现了阿里云在网络领域的领先实力。
1977 2
|
应用服务中间件 nginx
nginx反向代理POST请求
nginx反向代理POST请求
|
Web App开发 搜索推荐 Unix
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
【10月更文挑战第21天】Linux系统之MobaXterm远程连接centos的GNOME桌面环境
3225 5
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
|
JSON 文字识别 小程序
微信小程序OCR插件,实现身份证、行驶证、银行卡、营业执照和驾驶证等识别
微信小程序OCR插件,实现身份证、行驶证、银行卡、营业执照和驾驶证等识别
2654 0
|
关系型数据库 MySQL 数据库

热门文章

最新文章