我有一台 Linux 机器(OpenSuse),并且网络驱动器(NFS)上有一个挂载点。在包含日志文件(经常修改)的文件夹中,文件删除(仅命令rm
)非常慢。每个文件需要 5 秒。
请注意,虽然位于同一驱动器、同一安装点,但并非每个文件夹都会发生这种情况。它主要发生在包含日志的文件夹中(但没有任何具体内容)。
在捕获 时strace
,我注意到系统调用unlinkat
是瓶颈。比预期多花了整整 5 秒。在下面的例子中,需要 5.002059 秒,而您预计需要 0.002059 秒。
关于根本原因有什么想法吗?
1092 17:59:32.923094 newfstatat(AT_FDCWD, "1.log", {st_dev=makedev(0, 35), st_ino=3476, st_mode=S_IFREG|0644, st_nlink=1, st_uid=2248, st_gid=2005, st_blksize=1048576, st_blocks=0, st_size=0, st_atime=2023/04/22-17:59:09, st_mtime=2023/04/22-17:59:09, st_ctime=2023/04/22-17:59:09}, AT_SYMLINK_NOFOLLOW) = 0 <0.000291>
1092 17:59:32.923528 newfstatat(AT_FDCWD, "1.log", {st_dev=makedev(0, 35), st_ino=3476, st_mode=S_IFREG|0644, st_nlink=1, st_uid=2248, st_gid=2005, st_blksize=1048576, st_blocks=0, st_size=0, st_atime=2023/04/22-17:59:09, st_mtime=2023/04/22-17:59:09, st_ctime=2023/04/22-17:59:09}, AT_SYMLINK_NOFOLLOW) = 0 <0.000083>
1092 17:59:32.923756 faccessat(AT_FDCWD, "1.log", W_OK) = 0 <0.000430>
1092 17:59:32.924345 unlinkat(AT_FDCWD, "1.log", 0) = 0 <5.002059>