我在 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
最佳答案
“常规”200 毫秒对于静态文件来说似乎偏高。我从我的应用程序提供相同“bootstrap-responsive.css”的静态版本,我可以看到两种类型的回答时间:
- 50-100 毫秒(大部分时间)
- 150-500 毫秒(有时)
由于我与谷歌应用引擎的 ping 往返时间大约为 50 毫秒,因此文件似乎通常在 50 毫秒左右的时间内提供。
我猜想 150-300 毫秒的响应时间与谷歌应用引擎前端服务器被“冷缓存”有关。我假设从某个持久存储中检索文件比在前端服务器缓存中检索文件涉及更高的延迟。
我还假设您可以访问各种前端服务器并偶尔出现更高的延迟。
最后,浏览器的总体感知延迟应近似为: (tc)ping 往返 + 前端服务器的 tcp/http 排队/缓冲 + 文件服务应用程序时间(如您的谷歌应用程序日志中所示)+ 传输文件的时间。
如果前端服务器没有过载并且文件很小,延迟应该接近 ping + 服务时间。
在我的例子中,50 毫秒(ping)+ 35 毫秒(服务)= 85 毫秒,非常接近我在浏览器中看到的 95 毫秒。
最后,如果您的应用正在处理大量请求,它们可能会排队,从而引入应用日志中不“可见”的延迟。
关于performance - 为什么我的 GAE 应用程序提供静态文件的延迟如此之高?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14754850/