在 samba 共享中,我们有一个包含大量文件的目录 - 二进制文件和资源,用于运行我们的 ERP 应用程序(大约 20K 个条目)。
应用程序加载时间过长。发现的原因是应用程序尝试以试错方式加载多个文件,按特定顺序查找扩展名(例如:file.dll
、、、file.lbr
file.gnt
file.int
)。其中许多文件不是必需的,甚至不存在。
每次“未找到”事件大约需要 0.2 秒。并且有很多这样的事件。
问题是,Samba 显然没有缓存这个结果。
如果我在 samba 共享中运行此代码(在 Windows 命令提示符中),则需要相当长的时间,而在本机 Windows 共享中则是即时的。
for /L %i in (1,1,50) do @dir \\server\share\not_existing.txt >nul
有什么可以做的吗?
当前smb.conf
内容:
# Global parameters
[global]
netbios name = ***omitted***
realm = ***omitted***
server role = active directory domain controller
workgroup = ***omitted***
idmap_ldb:use rfc2307 = yes
dns forwarder = ***omitted***
vfs objects = acl_xattr
map acl inherit = yes
store dos attributes = yes
#
aio read size = 1
aio write size = 1
aio write behind = true
socket options = TCP_NODELAY SO_RCVBUF=65535 SO_SNDBUF=65535
read raw = yes
write raw = yes
max xmit = 65535
dead time = 0
getwd cache = no
max connections = 5000
time server = yes
环境详情:
- CentOS Linux 版本 7.6.1810(核心)
- Samba 版本 4.8.3
- 应用程序运行时:Microfocus NetExpress (Cobol) v3.1