Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 查找HTTP瓶颈_Ruby On Rails_Performance_Nginx_Linode - Fatal编程技术网

Ruby on rails 查找HTTP瓶颈

Ruby on rails 查找HTTP瓶颈,ruby-on-rails,performance,nginx,linode,Ruby On Rails,Performance,Nginx,Linode,我正在用RubyonRails开发一个自定义博客应用程序,将加载速度作为成功的主要衡量标准 我(使用Redis)缓存视图和模型,以缩短原始HTML的查询和呈现。最后,我成功地在15毫秒内加载了一篇文章。是时候部署了 我买了一台每月20美元的Linode机器,有2gb内存,2个内核,ssd存储,40gbit输入,250mbit输出。这台机器设在伦敦。我安装了Ubuntu 15.04 我建立了Cloudflare免费计划,以便更积极地缓存和缩小资产。我启用了完整的SSL功能 我安装nginx作为Un

我正在用RubyonRails开发一个自定义博客应用程序,将加载速度作为成功的主要衡量标准

我(使用Redis)缓存视图和模型,以缩短原始HTML的查询和呈现。最后,我成功地在15毫秒内加载了一篇文章。是时候部署了

我买了一台每月20美元的Linode机器,有2gb内存,2个内核,ssd存储,40gbit输入,250mbit输出。这台机器设在伦敦。我安装了Ubuntu 15.04

我建立了Cloudflare免费计划,以便更积极地缓存和缩小资产。我启用了完整的SSL功能

我安装nginx作为Unicorn上运行的Rails应用程序的代理。Rails、Redis、PostgreSQL和nginx在同一台服务器上运行

我在意大利的罗马。最近的Cloudflare数据中心位于米兰,而原始Linode服务器位于伦敦。平均请求时间(由chrome网络面板报告)为230ms。哎呀

因此,首先我检查了Rails日志,以及日志报告的时间(和X-Runtime头),其中与我的开发数据一致(<20ms)

我编辑了nginx配置以添加一个X-Time头:

add_header X-Time $request_time;
这只显示了几毫秒的轨道时间

然后,我启用了对服务器的直接访问(禁用了Cloudflare)并禁用了SSL以消除握手开销

因此,我最终发现,无论是否使用Cloudflare,无论是否使用SSL,加载时间总是在[180-350]ms范围内非常随机,没有明显的解释

这是一个没有Cloudflare和SSL的Chrome计时面板的快照。只需直接在nginx服务器的端口80上建立原始HTTP连接

为什么我在一个速度如此之快的应用程序上看到如此高的时间?接下来我应该检查什么?Linode服务器是我的瓶颈吗

谢谢

编辑
看起来nginx默认启用的gzip压缩将整个过程的速度降低了30%。我现在已经禁用了它,因为Cloudflare将在第二步中对其进行gzip处理。现在请求时间在120到200毫秒之间,但我仍然觉得可以改进。

nginx中是否启用或禁用gzip压缩?可能会有帮助。请尝试查找DNS查询花费的时间(您可能会发现这比您预期的要多)。为了找到时间
#dig-xyourdomain.com
,并在输出中搜索类似“querytime:xmsec”的内容。我希望你能访问Linux机器,这样你就可以运行dig。@chad_u它是开着的。当我禁用它时,计时在[120-200]毫秒范围内下降。一个不错的30%的改善。我想我可以禁用它,因为Cloudflare稍后将对其进行压缩。不过,我相信时机仍然很紧迫。有什么可以改进的吗?ping次数是多少,即纯网络延迟是多少?如果服务器正在对日志文件执行反向ip查找,则如果可能的话,推迟查找会更快。