3

У меня очень странная проблема, которая может быть слишком сложной для диагностики без доступа к машине, но, возможно, кто-то здесь сможет помочь.

Я использую OS X, и на моей локальной машине ls запускается мгновенно. Однако когда я захожу на один конкретный удаленный сервер и выполняю ls в домашнем каталоге, для возврата требуется около 15 секунд. И в домашнем каталоге есть только несколько файлов. Если я переключаюсь на подкаталог или более высокий каталог, ls запускается немедленно.

Теперь вот странная вещь: если я использую другой компьютер для доступа к удаленному серверу и запускаю ls в домашнем каталоге, он немедленно возвращается.

Итак, мой конкретный ноутбук + один конкретный удаленный сервер + один конкретный каталог = медленное выполнение ls

Есть идеи? Или, по крайней мере, способ отладки этого?

РЕДАКТИРОВАТЬ: Хорошо, больше странностей. Это только медленно при первом выполнении ls. Все последующие казни выполняются быстро. Я думаю, я никогда не удосужился напечатать это снова после того, как это было так медленно в первый раз.

2 ответа2

1

Немного сложно быть уверенным, что происходит. Ваши симптомы могут быть легко объяснены сочетанием реальной проблемы (ну, не так уж и плохо) и предвзятого отношения к тестированию.

Например, предположим, что сервер Linux просто работает на холостом ходу, а нужный каталог не находится в кэше (или, возможно, он подключен или связан с устройством, которое вращается как внешний диск).

Тогда первый доступ требует раскрутки / разворота, и там идут 15 секунд.

Вы идете в другой каталог, и это быстро, потому что это либо на другом устройстве, либо на устройстве, которое сейчас вращается.

Вы возвращаетесь в тот же каталог, и теперь он работает быстро (кеш IOSS также может иметь к этому какое-то отношение).

Вы выходите из системы и входите из другого места, но теперь устройство все еще вращается, кэш все еще заполнен, и каталог работает быстро.

Чтобы убедиться, что это не такая проблема, вам нужно подождать подходящее время и повторить попытку входа с третьего компьютера - того, где ls был быстрым, - и проверить, действительно ли ls на самом деле медленный.

1

Отвечая на часть о том, как идти об отладке этого. Попробуйте это в сеансе Linux:

sudo strace ls

И обратите внимание на системный вызов, который висит ~ 15 сек.

(На OS-X можно использовать 'dtruss' или использовать dtrace (man dtrace))

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .