当 Windows 8 客户端连接时,SMBD 守护进程的 CPU 使用率达到 100%

当 Windows 8 客户端连接时,SMBD 守护进程的 CPU 使用率达到 100%

我有一台运行 Ubuntu 12.04 的服务器,它作为 Samba 服务器运行。文件系统是物理驱动器 LVM 池上的 XFS 格式的虚拟驱动器。

我最近将我们的客户端升级到了 Windows 8,我注意到客户端连接 Ubuntu 服务器上的 SMB 共享时有 6-8 秒的延迟。使用 Windows 7 时,不会出现这种延迟。在 Ubuntu 服务器上,在首次连接共享时,SMBD 进程的 CPU 使用率会在几秒钟内达到 100%。

strace显示 smbd 在该连接期间反复打开 /etc/passwd。我的客户端应以访客身份连接(无需身份验证)。

open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 28
_llseek(28, 0, [0], SEEK_CUR)           = 0
fstat64(28, {st_mode=S_IFREG|0644, st_size=1568, ...}) = 0
mmap2(NULL, 1568, PROT_READ, MAP_SHARED, 28, 0) = 0xb6de2000
_llseek(28, 1568, [1568], SEEK_SET)     = 0
fstat64(28, {st_mode=S_IFREG|0644, st_size=1568, ...}) = 0
munmap(0xb6de2000, 1568)                = 0
close(28)                               = 0
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 28
_llseek(28, 0, [0], SEEK_CUR)           = 0
fstat64(28, {st_mode=S_IFREG|0644, st_size=1568, ...}) = 0
mmap2(NULL, 1568, PROT_READ, MAP_SHARED, 28, 0) = 0xb6de2000
_llseek(28, 1568, [1568], SEEK_SET)     = 0
fstat64(28, {st_mode=S_IFREG|0644, st_size=1568, ...}) = 0
munmap(0xb6de2000, 1568)                = 0
close(28)  
... repeats over and over ...

我知道 Windows 8 中的 SMB 实现自 Windows 7 以来已经发生了变化。我可以对 smb.conf 进行哪些更改来解决 CPU 使用率激增的问题?

答案1

通过在 smb.conf 中进行以下更改,我可以解决从 Windows 8 登录的延迟问题:

encrypt passwords = yes

相关内容