Ubuntu

當 Windows 8 客戶端連接時,SMBD 守護程序會在 100% 的 CPU 使用率時達到峰值

  • February 24, 2013

我有一個執行 Ubuntu 12.04 的伺服器作為 Samba 伺服器執行。文件系統是物理驅動器 LVM 池上的 XFS 格式虛擬驅動器。

我最近將我們的客戶端升級到 Windows 8,我注意到客戶端連接 Ubuntu 伺服器上的 SMB 共享有 6-8 秒的延遲。在 Windows 7 中,沒有這樣的延遲。在 Ubuntu 伺服器上,在與共享的初始連接期間,SMBD 程序會在幾秒鐘內達到 100% 的 CPU 使用率。

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 7 以來,Windows 8 中的 SMB 實現已發生更改。我可以對 smb.conf 進行更改以解決 CPU 使用率飆升的問題嗎?

通過在 smb.conf 中進行以下更改,我能夠解決從 Windows 8 登錄的延遲問題:

encrypt passwords = yes

引用自:https://serverfault.com/questions/480578