PAGI::Server 性能与硬化

发布: (2025年12月16日 GMT+8 00:52)
2 min read
原文: Dev.to

Source: Dev.to

性能测试

PAGI::Server 是 PAGI 规范 的参考实现。下面是对一个基础 “Hello world” 应用进行高并发测试的结果:

https://github.com/jjn1056/pagi/blob/main/examples/01-hello-http/app.pl

该测试在一台 MacBook Pro(2.4 GHz 8‑核 Intel Core i9)上运行,使用以下命令:

LIBEV_FLAGS=8 ./bin/pagi-server --workers 16 --quiet --no-access-log --loop EV ./examples/01-hello-http/app.pl

结果

% hey -z 30s -c 500 http://localhost:5000/

Summary:
  Total:    30.0217 secs
  Slowest:  0.1110 secs
  Fastest:  0.0097 secs
  Average:  0.0312 secs
  Requests/sec: 16010.2544

Response time histogram:
  0.010 [1] |
  0.020 [376]   |
  0.030 [222649]    |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.040 [226482]    |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.050 [26058] |■■■■■
  0.060 [4279]  |■
  0.070 [492]   |
  0.081 [123]   |
  0.091 [173]   |
  0.101 [20]    |
  0.111 [2] |

Latency distribution:
  10% in 0.0249 secs
  25% in 0.0273 secs
  50% in 0.0304 secs
  75% in 0.0340 secs
  90% in 0.0381 secs
  95% in 0.0414 secs
  99% in 0.0505 secs

Details (average, fastest, slowest):
  DNS+dialup:   0.0000 secs, 0.0097 secs, 0.1110 secs
  DNS-lookup:   0.0000 secs, 0.0000 secs, 0.0193 secs
  req write:    0.0000 secs, 0.0000 secs, 0.0091 secs
  resp wait:    0.0311 secs, 0.0096 secs, 0.1110 secs
  resp read:    0.0000 secs, 0.0000 secs, 0.0035 secs

Status code distribution:
  [200] 480655 responses

PAGI::Server 处理了 所有 请求,吞吐量比在 Starman 下运行的相同 PSGI “Hello world” 高约 30 %。相反,Starman 在相同硬件、相同负载下会丢失约 80 % 的请求,这说明为什么 Starman 通常会放在 Nginx 等边缘服务器之后。

合规性与安全性测试

关于 PAGI::Server 的 HTTP/WebSocket 合规性和安全性测试的最新进展,可在工作草案中查看:

https://github.com/jjn1056/pagi/blob/main/lib/PAGI/Server/Compliance.pod

欢迎有服务器压力测试经验的志愿者参与贡献。在生产环境中,你仍然可能会把 PAGI::Server 放在代理或边缘服务器(例如 Nginx)之后,但它本身越稳健,效果就越好。

Back to Blog

相关文章

阅读更多 »