しばらく前から、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を含むUbuntu 12.04です。
このsudoバージョンのソースも確認しましたが、これらのソケット呼び出しは存在しません...助けてください:)
答え1
問題のある場所は次のとおりです。https://bugs.launchpad.net/ubuntu/+source/sudo/+bug/1272414
私たちのサーバーには多くのipipトンネルがあるので、sudoはすべてのインターフェースを調べようとします。
適切な無視機能を含む新しいバージョンで問題が解決されました。