Назад | Перейти на главную страницу

Поиск пользователей, ответственных за разрушение монтирования NFS

У меня большая многопользовательская система, NFS монтирует большой кусок общего хранилища. Я могу определить источник всего моего сетевого трафика - сузив его до определенного хоста - благодаря nfsstat.

Однако мне все еще трудно отследить который пользователей делают это - их несколько сотен, и нет ни одного очевидный виновные в списке процессов. (Обычно я начинаю с поиска экземпляров find)

Но у нас определенно получается 2,5 тыс. Операций ввода-вывода в секунду, и это вызывает проблемы с ресурсами на хосте.

Может ли кто-нибудь предложить мне способы определения виновных процессов / пользователей?

Box - это RedHat Linux, общающийся с файловым агентом NetApp.

Может быть, хороший совет - узнать, сколько открытых файлов NFS у пользователя (со стороны клиента).

я хотел бы использовать lsof -N. Этот лайнер может вам помочь:

for user in $(who|awk '{print $1}'|sort -n|uniq); do echo $user ; lsof -N -u $user -a |wc -l; done

Предполагая, что действительно есть виновник (один пользователь), ответственный за большую часть 2,5 тыс. Операций ввода-вывода в секунду:

Я бы начал с top - при этом вы должны увидеть одного или нескольких пользователей и процессов, выделяющихся среди активных процессов на поле, в основном спящих, но довольно часто в состоянии готовности - я бы нажал i (чтобы скрыть неактивные процессы), затем нажмите и удерживайте пробел для очень быстрого обновления.

Я бы выделил пользователей, которые появляются чаще, и отображал их процессы только в top для более стабильного просмотра.

Если вы видите много процессов от одного и того же пользователя (например, сложная сборка, выполняемая на NFS) - проверьте дерево процессов для этого пользователя, чтобы подтвердить pstree -ps <user>. Может быть трудно доказать, что такой сбор процессов является причиной, кроме запуска / остановки его и наблюдения за корреляциями в изменениях активности на стороне netapp.

Если виноват один процесс, я бы ожидал, что он будет постоянно присутствовать в top вывод. В дополнении к find Я также ищу:

  • rsync, dd, cp, rcp, scp, tar, решения для резервного копирования и т. д.
  • типичные интерпретаторы программирования высокого уровня: python, java и т. д. (запуск пользовательских скриптов)
  • веб-приложения / приложения для баз данных
  • Системы CI / QA (если сервер участвует в разработке ПО)

Но это также может быть что-то совершенно нестандартное, вы не найдете его «по названию».

Также возможно, что скорость является коллективным эффектом такого количества пользователей (хранится ли на сервере NFS их домашние каталоги и / или общие разделы проекта?) - мало что вы можете с этим поделать - может быть, пора расширить хранилище NFS?

Есть отличный инструмент wirehark. В терминальной версии tshark вы можете найти клиент и uid:

$ tshark -i any -Y 'rpc.msgtyp == 0' -f 'port 2049' -Tfields -e frame.time -e ip.src -e nfs.main_opcode -e rpc.auth.uid

Вы получите такой результат:

Jun 23, 2015 11:41:13.306857000 aaa.bbb.ccc.ddd 9   0

с меткой времени, IP клиента, операцией nfs и uid. Соберите данные за несколько минут, а затем вы сможете использовать свои любимые инструменты, чтобы найти лучших пользователей:

$ cat nfs-capture.txt | sort -n -k 7 | uniq -c