由于套接字连接,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 个......)。

我们的服务器是 ubuntu 12.04,带有 sudo 1.8.3p1。

我什至检查了这个 sudo 版本的来源,并且这些套接字调用不存在......请帮助:)

答案1

这就是问题所在:https://bugs.launchpad.net/ubuntu/+source/sudo/+bug/1272414

我们的服务器上有很多 ipip 隧道,因此 sudo 尝试探测所有接口。

具有适当忽略的新版本解决了问题。

相关内容