我在 GAE 上检查我的 Go 应用程序的性能,我认为静态文件的响应时间非常高(183 毫秒)。是吗?为什么?我能做些什么呢?
64.103.25.105 - - [07/Feb/2013:04:10:03 -0800] "GET /css/bootstrap-responsive.css
HTTP/1.1" 200 21752 - "Go http package" "example.com" ms=183 cpu_ms=0
我在 GAE 上检查我的 Go 应用程序的性能,我认为静态文件的响应时间非常高(183 毫秒)。是吗?为什么?我能做些什么呢?
64.103.25.105 - - [07/Feb/2013:04:10:03 -0800] "GET /css/bootstrap-responsive.css
HTTP/1.1" 200 21752 - "Go http package" "example.com" ms=183 cpu_ms=0
为了进行比较,我使用tools.pingdom.com测试了一个站点
Pingdom 报告的加载时间为218ms
以下是日志的结果:
2013-02-11 22:28:26.773 /stylesheets/bootstrap.min.css 200 35ms 45kb
238ms
从 Pingdom 和2ms
日志中产生的另一个测试。
因此,我会说你的183ms
看起来比较好。有很多因素在起作用:
您可以尝试使用 Go 实例而不是 App Engine 的静态文件服务器来提供文件。我前段时间对此进行了测试,结果偶尔会更快,但速度不太一致。由于App Engine 实例被限制为 10 个并发请求,因此负载下的响应时间也会增加。更不用说您将按实例时间计费。
编辑:
如需与其他云/CDN 提供商的比较,请参阅Cedexis 的 - 免费国家报告
对于静态文件来说,“常规”200 毫秒似乎偏高。我从我的应用程序中提供了相同“bootstrap-responsive.css”的静态版本,我可以看到两种类型的回答时间:
由于我到谷歌应用引擎的 ping 往返时间或多或少为 50 毫秒,因此该文件似乎通常在 50 毫秒左右的时间内提供服务。
我猜 150-300 毫秒的响应时间与谷歌应用引擎前端服务器被“冷缓存”有关。我假设从一些持久性存储中检索文件会比在前端服务器缓存中涉及更高的延迟。
我还假设您可以访问各种前端服务器并获得零星的更高延迟。
最后,浏览器的总体感知延迟应近似为:(tc)ping 往返 + 前端服务器的 tcp/http 队列/缓冲 + 文件服务应用程序时间(如您的 google 应用程序日志中所示)+ 传输时间文件。
如果前端服务器没有过载且文件很小,那么延迟应该接近 ping + 服务时间。
就我而言,50 毫秒(ping)+ 35 毫秒(服务)= 85 毫秒,非常接近我在浏览器中看到的 95 毫秒。
最后,如果您的应用程序正在处理大量请求,它们可能会排队,从而引入应用程序日志中不“可见”的延迟。
您应该尝试在静态文件上设置缓存。