Don*_*Don 15 performance nginx web-server latency
我正在设置一个 nginx 堆栈并在上线之前优化配置。运行 ab 对机器进行压力测试,我很失望地看到每秒 150 个请求达到顶峰,并且大量请求需要 1 秒以上才能返回。奇怪的是,机器本身甚至没有呼吸困难。
我终于想到要 ping 盒子,看到 ping 时间大约为 100-125 毫秒。(令我惊讶的是,这台机器遍布全国)。因此,网络延迟似乎在我的测试中占主导地位。在与服务器相同的网络上的机器上运行相同的测试(ping 时间 < 1 毫秒),我看到每秒 > 5000 个请求,这更符合我对机器的期望。
但这让我开始思考:如何确定和报告 Web 服务器每秒请求的“实际”度量?您总是看到有关性能的声明,但不应该考虑网络延迟吗?当然我可以每秒向服务器旁边的机器提供 5000 个请求,但不能向全国的机器提供服务。如果我有很多慢速连接,它们最终会影响我服务器的性能,对吗?还是我在想这一切都错了?
如果这是网络工程 101 的东西,请原谅我。我是一名贸易开发商。
更新:为清楚起见进行了编辑。
如果您关心从世界某个地方访问服务器时的性能,请要求世界某个地方的朋友(应该有良好的带宽)在他的 Linux 机器上安装sproxy + siege。只需下载、配置、制作。这些工具很小,只需几秒钟即可编译。
首先,sproxy从linux机器上开始。默认情况下,它将在本地主机 (127.0.0.1) 的端口 9001 上运行。如果你想从外部访问它,只需将出站IP地址作为参数传递给它即可。
现在,通过将浏览器设置为使用此 IP 和端口作为 HTTP 代理来连接到 sproxy。从现在起你所做的一切都会被 sproxy 记录下来,并且可以在以后重播。现在在您的网站上浏览,做您的客户会做的事情,并尝试做使用您的服务器的“昂贵”的事情。
完成后,按 CTRL^C 结束 sproxy。它将您的行为记录到$HOME/urls.txt。将文件移动到 siege 所在的位置。要开始压力测试,请运行siege -f urls.txt -d NUM -c NUM. d代表请求之间的延迟,在做性能测试时,使用1(秒)。c代表模拟并发用户数。随意选择,但起点要低。Siege 会向您显示每秒的事务数、错误率、平均请求花费的时间等。它是一个功能强大且易于使用的工具。
如果您需要有关参数的更多信息(有很多),请查看siege 手册和sproxy 手册
为了获得更真实的结果,请让来自不同国家/地区的许多人同时测试您的服务器,并让他们向您发送统计数据。
| 归档时间: |
|
| 查看次数: |
5862 次 |
| 最近记录: |