Please enable Javascript to view the contents

ab、wrk 压测工具实践

 ·  🕒 1 分钟  ·  ✍️ 加文 · 👀... 阅读

概述

env

nginx version: nginx/1.20.2
CentOS Linux release 7.9.2009 (5.4.186-1.el7.elrepo.x86_64)
wrk 4.2.0
httpd-tools-2.4.6(该软件包包含压测工具 ab)

物理CPU: Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz
虚机配置: 8vCPU 、内存 8G

OS config

cat > /etc/security/limits.conf « EOF

  • soft nproc 65535
  • hard nproc 65535
  • soft nofile 65535
  • hard nofile 65535
    EOF

systemd 服务配置文件 /etc/systemd/system.conf , 修改该文件后执行命令 systemctl daemon-reexec 后生效; 由 systemd 管理的其它服务进程, 可通过该配置文件进行全局资源配置

/usr/lib/systemd/system/nginx.service
[Service]
LimitNOFILE=100000
LimitNPROC=20000

cat /proc/7076/limits 查看进程 id 为 7076 的资源限制

cat /etc/nginx/nginx.conf

# 配置 worker 进程数、与 vCPU 绑定进行自动配置
worker_processes  auto;
worker_cpu_affinity auto;
http {
    ...
}

ab

ab -n 100000 -c 3000 http://192.168.31.11/
请求总数 10w, 并发数 3k, 经测试、可达到每秒 1.2w 请求

wrk

wrk -t 2 -c 30 -d 60s –latency http://192.168.31.11/
使用 2 个线程,并保持 30 个 HTTP 连接打开,运行 60 秒的基准测试; 可达到每秒 10w 请求

netstat -an|awk ‘/^tcp/{++S[$NF]}END{for(a in S) print a,S[a]}’

运行 wrk 的机器必须有足够数量的可用临时端口,并且应该快速回收关闭的套接字。为了处理初始连接突发,服务器的 listen backlog 应该大于正在测试的并发连接数
仅更改 HTTP 方法、路径、添加标头或正文的用户脚本不会对性能产生影响。每个请求的操作,特别是构建一个新的 HTTP 请求,以及使用 response() 必然会减少可以生成的负载量

参考

https://blog.51cto.com/u_15310381/3230164


加文
作者: 加文
运维工程师
版权声明:自由转载-非商用-非衍生-转载请注明出处!


目录