Я помогаю кому-то диагностировать медлительность с помощью приложений RoR.Я не настолько глубоко разбираюсь в разработке ruby, но, запустив процесс ruby, я заметил следующую странность:
Для каждого включенного файла .rb
процесс ruby проверяет около 110 различных мест длявключаемый файл со всеми, кроме 1, возвращающими ENOENT
.Эти пути включают в себя множество несуществующих перестановок в локальных каталогах и каталогах установки gem.По иронии судьбы, восьмая попытка определения местоположения находит правильный путь, но затем ruby пытается попробовать еще 100 неверных расположений, прежде чем вернуться назад и открыть файл, который он нашел в начале поиска.
Весь процесс поиска занимаетпочти 30 мс на включенный .rb
файл, что в совокупности означает, что загрузка страницы занимает так много времени, что сайт становится непригодным для использования.
Я опубликовал пример выходных данных strace на случай, если это будет полезно здесь: http://pastebin.com/t9LD89dr
Итак, почему он это делает, и как мне его остановить?