소켓 연결로 인해 sudo가 느려짐

소켓 연결로 인해 sudo가 느려짐

얼마 전부터 sudo가 우리 서버에서 느리게 작동하기 시작했습니다. 때로는 실행될 때까지 몇 분 정도 기다려야 할 때도 있습니다.

포럼에서 모든 호스트 이름과 DNS 이유를 확인했지만 문제가 여전히 지속됩니다. 이 서버에서 서버 이름이 올바르게 확인되었음을 확인할 수 있습니다.

strace를 사용하여 sudo를 디버깅하면 다음과 같은 흥미로운 결과를 얻을 수 있습니다.

 0.000080 open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
 0.000153 lseek(3, 0, SEEK_CUR)     = 0
 0.000044 fstat(3, {st_mode=S_IFREG|0644, st_size=1809, ...}) = 0
 0.000060 mmap(NULL, 1809, PROT_READ, MAP_SHARED, 3, 0) = 0x7f91b3dd3000
 0.000042 lseek(3, 1809, SEEK_SET)  = 1809
 0.000057 munmap(0x7f91b3dd3000, 1809) = 0
 0.000038 close(3)                  = 0
 0.000077 getgroups(0, NULL)        = 1
 0.000039 getgroups(1, [0])         = 1
 0.000045 getcwd("/home/myself", 4096) = 12
 0.000053 ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
 0.000184 fstat(0, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 6), ...}) = 0
 0.000111 readlink("/proc/self/fd/0", "/dev/pts/6", 4095) = 10
 0.000095 stat("/dev/pts/6", {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 6), ...}) = 0
 0.000079 uname({sys="Linux", node="OUR-SERVER", ...}) = 0
 0.000072 ioctl(2, TIOCGWINSZ, {ws_row=65, ws_col=205, ws_xpixel=0, ws_ypixel=0}) = 0
 0.000055 socket(PF_NETLINK, SOCK_RAW, 0) = 3
 0.000044 bind(3, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0
 0.000042 getsockname(3, {sa_family=AF_NETLINK, pid=43381, groups=00000000}, [12]) = 0
 0.000042 sendto(3, "\24\0\0\0\22\0\1\3T\373\206S\0\0\0\0\0\0\0\0", 20, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 20
 0.418298 recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"$\2\0\0\20\0\2\0T\373\206Su\251\0\0\0\0\0\3\0\3339\0\321\0\1\0\0\0\0\0"..., 4096}], msg_controllen=0, ms
 0.000160 recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\340\3\0\0\20\0\2\0T\373\206Su\251\0\0\0\0\376\377\0\2639\0\321\20\1\0\0\0\0\0"..., 4096}], msg_controll
 ...

마지막 2개의 recvmsg 줄은 약 4000번 반복됩니다! 수신된 4000개의 소켓이 이러한 속도 저하의 원인입니다(첫 번째 호출 시간을 참고하세요. 이는 처음 2개에 불과합니다...).

우리 서버는 sudo 1.8.3p1이 포함된 우분투 12.04입니다.

이 sudo 버전의 소스도 확인했는데 이러한 소켓 호출이 존재하지 않습니다... 도와주세요 :)

답변1

문제가 있는 곳은 다음과 같습니다.https://bugs.launchpad.net/ubuntu/+source/sudo/+bug/1272414

우리 서버에는 많은 ipip 터널이 있으므로 sudo는 모든 인터페이스를 조사하려고 시도합니다.

적절한 무시 기능이 포함된 새 버전으로 문제가 해결되었습니다.

관련 정보