Название говорит все. в любом случае, я просто обновил свой сервер с 14.04 LTS до 16.04 LTS и понял, что sudo работает слишком медленно, чем 14.04.
Я выпрямился и получил следующий результат:
$ sudo strace sudo true
---------------------------- snip ------------------------------- ... socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 9 bind(9, {sa_family=AF_INET, sin_port=htons(722), sin_addr=inet_addr("0.0.0.0")}, 16) = -1 EADDRINUSE (Address already in use) bind(9, {sa_family=AF_INET, sin_port=htons(723), sin_addr=inet_addr("0.0.0.0")}, 16) = -1 EADDRINUSE (Address already in use) bind(9, {sa_family=AF_INET, sin_port=htons(724), sin_addr=inet_addr("0.0.0.0")}, 16) = -1 EADDRINUSE (Address already in use) bind(9, {sa_family=AF_INET, sin_port=htons(725), sin_addr=inet_addr("0.0.0.0")}, 16) = -1 EADDRINUSE (Address already in use) bind(9, {sa_family=AF_INET, sin_port=htons(726), sin_addr=inet_addr("0.0.0.0")}, 16) = -1 EADDRINUSE (Address already in use) bind(9, {sa_family=AF_INET, sin_port=htons(727), sin_addr=inet_addr("0.0.0.0")}, 16) = -1 EADDRINUSE (Address already in use) bind(9, {sa_family=AF_INET, sin_port=htons(728), sin_addr=inet_addr("0.0.0.0")}, 16) = -1 EADDRINUSE (Address already in use) bind(9, {sa_family=AF_INET, sin_port=htons(729), sin_addr=inet_addr("0.0.0.0")}, 16) = -1 EADDRINUSE (Address already in use) bind(9, {sa_family=AF_INET, sin_port=htons(730), sin_addr=inet_addr("0.0.0.0")}, 16) = -1 EADDRINUSE (Address already in use) bind(9, {sa_family=AF_INET, sin_port=htons(731), sin_addr=inet_addr("0.0.0.0")}, 16) = -1 EADDRINUSE (Address already in use) bind(9, {sa_family=AF_INET, sin_port=htons(732), sin_addr=inet_addr("0.0.0.0")}, 16) = -1 EADDRINUSE (Address already in use) bind(9, {sa_family=AF_INET, sin_port=htons(733), sin_addr=inet_addr("0.0.0.0")}, 16) = -1 EADDRINUSE (Address already in use) bind(9, {sa_family=AF_INET, sin_port=htons(734), sin_addr=inet_addr("0.0.0.0")}, 16) = -1 EADDRINUSE (Address already in use) bind(9, {sa_family=AF_INET, sin_port=htons(735), sin_addr=inet_addr("0.0.0.0")}, 16) = -1 EADDRINUSE (Address already in use) bind(9, {sa_family=AF_INET, sin_port=htons(736), sin_addr=inet_addr("0.0.0.0")}, 16) = -1 EADDRINUSE (Address already in use) bind(9, {sa_family=AF_INET, sin_port=htons(737), sin_addr=inet_addr("0.0.0.0")}, 16) = -1 EADDRINUSE (Address already in use) bind(9, {sa_family=AF_INET, sin_port=htons(738), sin_addr=inet_addr("0.0.0.0")}, 16) = -1 EADDRINUSE (Address already in use) bind(9, {sa_family=AF_INET, sin_port=htons(739), sin_addr=inet_addr("0.0.0.0")}, 16) = -1 EADDRINUSE (Address already in use) ... ---------------------------- snip -------------------------------
Сама команда sudo прошла успешно, это заняло слишком много времени, например 5 секунд.
Диапазон портов 512-1023, похоже, он пытается связать порт привилегии для чего-то вроде гарантии, что он имеет привилегию суперпользователя.
И после успешного завершения sudo netstat -an
показывает:
---------------------------- snip ------------------------------- ... tcp 0 0 192.168.0.10:959 192.168.0.1:617 TIME_WAIT tcp 0 0 192.168.0.10:910 192.168.0.1:617 TIME_WAIT tcp 0 0 192.168.0.10:932 192.168.0.1:617 TIME_WAIT tcp 0 0 192.168.0.10:34470 192.168.0.1:111 TIME_WAIT tcp 0 0 192.168.0.10:966 192.168.0.1:617 TIME_WAIT tcp 0 0 192.168.0.10:903 192.168.0.1:617 TIME_WAIT tcp 0 0 192.168.0.10:875 192.168.0.1:617 TIME_WAIT tcp 0 0 192.168.0.10:45452 192.168.0.1:111 TIME_WAIT tcp 0 0 192.168.0.10:970 192.168.0.1:617 TIME_WAIT tcp 0 0 192.168.0.10:907 192.168.0.1:617 TIME_WAIT tcp 0 0 192.168.0.10:41063 192.168.0.1:111 TIME_WAIT tcp 0 0 192.168.0.10:45659 192.168.0.1:111 TIME_WAIT tcp 0 0 192.168.0.10:948 192.168.0.1:617 TIME_WAIT tcp 0 0 192.168.0.10:50370 192.168.0.1:111 TIME_WAIT tcp 0 0 192.168.0.10:56145 192.168.0.1:111 TIME_WAIT tcp 0 0 192.168.0.10:929 192.168.0.1:617 TIME_WAIT tcp 0 0 192.168.0.10:909 192.168.0.1:617 TIME_WAIT tcp 0 0 192.168.0.10:33648 192.168.0.1:111 TIME_WAIT tcp 0 0 192.168.0.10:33556 192.168.0.1:111 TIME_WAIT tcp 0 0 192.168.0.10:55209 192.168.0.1:111 TIME_WAIT tcp 0 0 192.168.0.10:975 192.168.0.1:617 TIME_WAIT tcp 0 0 192.168.0.10:969 192.168.0.1:617 TIME_WAIT tcp 0 0 192.168.0.10:35903 192.168.0.1:111 TIME_WAIT tcp 0 0 192.168.0.10:888 192.168.0.1:617 TIME_WAIT ... ---------------------------- snip -------------------------------
Где 192.168.0.10 - мой сервер, а 192.168.0.1 - сервер NIS.
Когда я останавливаю ypbind
на моем сервере и запускаю sudo
, больше не происходит бесполезного bind (2) и больше не происходит TIME_WAIT между моим сервером и сервером NIS.
Я не могу остановить ypbind
, и я хочу, чтобы моя старая гибкая sudo
скорость вернулась так плохо B)
Что я могу сделать?
Спасибо
Мы столкнулись с тем же поведением после обновления нескольких систем к 16.04 LTS. Мы используем, разделяют режим с NIS для выборочного выбора, через + @netgroup и +user в/etc/passwd, кто от большего домена NIS может получить доступ к нашим системам.
Мой коллега - кто должен получить весь кредит, но не делает, вещь StackExchange - нашла обходное решение, которое позволяет, Вы сохранить разделяете режим и способность использовать + @netgroup и +user в/etc/passwd. Оставьте разделять режим для passwd и тени, но использования "файлы Нис" для группы в/etc/nsswitch.conf:
passwd: compat
shadow: compat
group: files nis
"compat" режим для/etc/group эквивалентен "файлам Нис", если все, что Вы хотите сделать, включают всю карту группы NIS.
интересовался бы слушанием, работает ли это на Вашу ситуацию.
У меня была та же проблема с помощью групп NIS и пользователей. Каждая аутентификация пользователя является крайне медленной. Вы можете также tcpdump трафик между клиентом и сервером NIS и видеть необычный шторм пакетов, продолжающихся между двумя для подобного минута в моем случае.
я пошел для проигрывания с конфигурацией и имел идею переключить конфигурацию а-ля Redhat, и это полностью изменяет поведение автора, входа в систему, sudo очень быстро. Просто удалите "+::::" от/etc/passwd,/etc/shadow,/etc/group и nsswitch.conf файла для изменения следующих строк:
passwd: files nis
group: files nis
shadow: files nis
Говорят мне, как это идет.