我最近设置了一个运行在 Ubuntu 14.04 上的虚拟服务器,以取代我们用于文件共享的 Mac 服务器。共享文件目录可能有数万个文件,这里的 50 多个用户使用 OSX 进行连接。第一个用户连接后,smbd CPU 利用率立即跃升至 99%,如果第二个用户连接,它会生成另一个进程并将 CPU 分成 49%,如果有 10 个用户连接,则每个用户的 CPU 利用率约为 12%。
主机服务器运行双 Intel Xeon CPU(我认为是 2.3Mhz),每个 CPU 有 8 个核心,我尝试为客户机分配更多 RAM(16GB)和更多 vCPU(4),但最终 CPU 仍然在努力运行,vmware 报告使用了 10Ghz,我确信这都是 smbd。
我也尝试过使用 netatalk 和 AFP 来代替 SMB,但 CPU 受到的打击同样严重。此主机上可能还有其他 7 个虚拟机,每个虚拟机仅分配 1 个 vCPU。我发现其他线程报告了类似的问题,但没有答案,smb/afp 真的占用这么多 CPU 吗?还是 OSX 客户端的问题?或者可能是配置问题?
Samba 配置
#Disable Printer Stuff
load printers = No
printing = bsd
printcap name = /dev/null
disable spoolss = Yes
#Disable nmbd
disable netbios = yes
#Logging
log level = 0
[Shared Docs]
path = "/usr/local/Shared/Files/Shared Docs"
valid users = adminuser
browsable = yes
writable = yes
guest ok = no
read only = no