Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

如何调试nodeJs 性能, ab 测试工具 #53

Open
yaogengzhu opened this issue Oct 28, 2024 · 1 comment
Open

如何调试nodeJs 性能, ab 测试工具 #53

yaogengzhu opened this issue Oct 28, 2024 · 1 comment

Comments

@yaogengzhu
Copy link
Owner

ab(Apache Bench)是一个常用的命令行工具,用于对 HTTP 服务器进行性能测试。ab -k -c 20 -n 250 是一个具体的命令,下面是对每个参数和整体命令含义的解释:

命令参数解释

  • -k:启用 HTTP Keep-Alive 功能。Keep-Alive 允许在同一个 TCP 连接上发送多个请求,减少连接建立和关闭的开销。
  • -c 20:指定并发请求的数量为 20。这意味着 ab 将同时发起 20 个请求。
  • -n 250:指定总共要执行的请求数量为 250。这意味着 ab 将总共发送 250 个请求。

整体命令含义

ab -k -c 20 -n 250 的含义是:

  • 使用 HTTP Keep-Alive 功能。
  • 同时发起 20 个并发请求。
  • 总共发送 250 个请求。

输出结果解释

执行上述命令后,ab 会输出一系列性能指标,以下是一些关键指标及其含义:

总体统计

  • Requests per second:每秒处理的请求数(RPS)。这是衡量服务器吞吐量的重要指标。
  • Time per request (mean):每个请求的平均处理时间(以毫秒为单位)。
  • Time per request (across all concurrent requests):每个请求的平均处理时间(考虑所有并发请求),计算公式为总时间除以请求数。

成功与失败

  • Percentage of the requests served within a certain time (ms):不同时间范围内成功处理的请求百分比。例如,90% 的请求在 200ms 内完成。

传输速率

  • Transfer rate:数据传输速率,通常以 KB/s 或 MB/s 表示。

错误统计

  • Failed requests:失败的请求数。
  • Non-2xx responses:非 2xx 状态码的响应数。

示例输出

Server Software:        Apache/2.4.41
Server Hostname:        example.com
Server Port:            80

Document Path:          /
Document Length:        1270 bytes

Concurrency Level:      20
Time taken for tests:   10.000 seconds
Complete requests:      250
Failed requests:        0
Non-2xx responses:       0
Total transferred:      322500 bytes
HTML transferred:       317500 bytes
Requests per second:    25.00 [#/sec] (mean)
Time per request:       800.000 [ms] (mean)
Time per request:       40.000 [ms] (mean, across all concurrent requests)
Transfer rate:          31.25 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   0.5      1      5
Processing:    50  750 100.0    740    900
Waiting:       50  750 100.0    740    900
Total:         50  751 100.0    741    905

解读示例输出

  • Requests per second:每秒处理 25 个请求。
  • Time per request (mean):每个请求的平均处理时间为 800ms。
  • Failed requests:没有失败的请求。
  • Transfer rate:传输速率为 31.25 KB/s。

通过这些指标,你可以评估服务器的性能,并找出潜在的瓶颈。例如,如果 Time per request 过高,可能需要优化服务器代码或增加服务器资源。

@yaogengzhu
Copy link
Owner Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant