ruby包括尝试太多的位置

时间:2011-08-27 02:57:11

标签: ruby-on-rails ruby linux

我正在帮助某人通过他们的RoR应用程序诊断出一些缓慢的问题。我不是那么深入到ruby开发中,但是通过在ruby过程中运行一个strace,我注意到以下奇怪之处:<​​/ p>

对于大概包含的每个.rb文件,ruby进程会检查要包含的文件的大约110个不同位置,除了1之外的所有文件都返回ENOENT。这些路径包括本地目录和gem安装目录中的许多不存在的排列。具有讽刺意味的是,尝试的第8个位置找到了正确的路径,但是ruby接着尝试另外100个无效位置,然后返回并打开它在搜索开始时找到的文件。

整个搜索过程每个包含.rb文件大约需要30毫秒,这累积意味着页面加载时间过长,导致网站无法使用。

我已经发布了strace输出的示例,以防它在这里有用:http://pastebin.com/t9LD89dr

那么,为什么要这样做,我该如何让它停止?

1 个答案:

答案 0 :(得分:2)

这是一个known problem with Ruby's require ......显然他们会用Ruby 1.9.3修复它。

因此,在启动Ruby应用程序时,这种缓慢很难避免。