如何对 nginx 进行压力测试?

9 min read

要对 Nginx 进行压力测试,您可以使用工具如 ApacheBench(ab)、Siege、wrk 或 JMeter 等来模拟多个并发用户访问您的服务器。具体步骤如下:

  1. 安装所需压力测试工具:

    • 在 Ubuntu 上,您可以使用以下命令安装 ApacheBench:sudo apt-get install apache2-utils
    • Sieze:sudo apt-get install siege
    • wrk:sudo apt-get install wrk
    • JMeter: 在 Apache JMeter 官网下载安装包,并按照官方文档进行安装。
  2. 配置 Nginx:

    • 编辑 Nginx 配置文件,将 worker_processes 设置为合适的值(通常是服务器 CPU 核心数的两倍)。
    • http 块中,增加或修改以下参数:
      limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
      limit_conn_zone $binary_remote_addr zone=addr:10m;
      
  3. 启动 Nginx:

    • 使用 nginx -t 检查配置是否正确,然后使用 nginx 命令启动 Nginx。
  4. 进行压力测试:

    • 使用 ab 命令进行压力测试:
      ab -n 1000 -c 100 http://your-nginx-server/
      
      该命令模拟 1000 个请求的压力,同时最多允许 100 个并发连接。
    • 使用 siege 命令进行压力测试:
      siege -c 100 -r 10 http://your-nginx-server/
      
      该命令模拟 100 个并发连接,每个连接发送 10 个请求。
    • 使用 wrk 命令进行压力测试:
      wrk -t 10 -c 100 -d 10s http://your-nginx-server/
      
      该命令模拟 10 个线程,每个线程保持 100 个并发连接,持续运行 10 秒。
    • 使用 JMeter 进行压力测试:
      • 打开 JMeter,新建一个 Thread Group,设置线程数和循环次数。
      • 添加一个 HTTP Request 默认值配置元件,设置需要测试的网址。
      • 添加一个 HTTP Request 配置元件,并进行相关设置(如方法、参数、头信息等)。
      • 添加其他需要的配置元件(如 Listener、断言等)。
      • 点击运行按钮开始执行测试。
  5. 分析测试结果:

    • ab、siege 和 wrk 会在测试完成后给出各种性能指标,如请求数、请求时间、吞吐量等。
    • JMeter 会生成测试报告,包含各项指标、图表等。