我正在测试我的 Linode Ubuntu 14 64 位服务器,这是他们提供的最基本的服务器。我正在使用 Apache Benchmark 来测试服务器,以及我用 Python 编写的多线程脚本,但稍后会详细介绍。使用 AB,我注意到当从服务器本身本地运行时,每秒大约有 7k 个请求,但从另一个网络/互联网运行时只有大约 15。在本地,1000 个并发连接的响应时间也约为 150 毫秒。远程 100 个并发连接的响应时间约为 1.5-2.5 秒。我运行远程测试的网络具有足够的带宽,我运行它的计算机具有足够的 RAM 和处理器速度;这是一个快速的商业网络。我甚至在另外两台计算机上尝试了来自美国各地的另外 2 个网络,速度都差不多。
运行多线程脚本时,我注意到,只要尝试超过 100 个并发请求,它就会出现故障,这些请求来自外部网络。我还没有在服务器上本地尝试我的脚本,因为我需要将服务器上的 Python 升级到 3+,或者将我的脚本更改为与 2.7 兼容。我在本地测试了这一点,在运行最多 1000 个多线程连接的脚本时,响应时间为 150 毫秒,这只是使用 urllib2。
我正在直接针对 nginx(静态文件)、nginx 后面的 pywsgi 应用程序以及 pywsgi 进行测试。pywsgi 应用程序有一条简单的路由,它会回复基本响应,因此应该很快。毫不奇怪,nginx->pywsgi 提供了最佳结果,这可能是因为它缓冲请求的方式。Linode 的网络是否有特定的东西导致了这个问题?内部和外部测试之间的数量级差异让我怀疑可能是什么原因造成的。唯一的其他障碍是 iptables 防火墙,只是在 http/s 和 ssh 中进行过滤。
dmesg 没有与我的测试相关的信息。
答案1
听起来您的台式机和 Linode 机器之间某处存在网络瓶颈。以下是一些建议:
- 比较从您的桌面到您的 Linode 以及互联网上其他位置(如 google.com 和 yahoo.com)的 ping 时间。
- 从您的桌面使用
traceroute your-linode-ip
,看看是否有助于找到瓶颈。 - 使用以下方式试用 Linodehttp://www.webpagetest.org/选择东海岸和西海岸的位置并观察它们有何不同。