F_WRLCK 调用在 NFS 上需要很长时间

F_WRLCK 调用在 NFS 上需要很长时间

我有 30 个集群节点共享的 NFS。节点是 Debian 5 和 6。NFS 服务器是 OpenSolaris 2009。我们有良好的硬件和 20Gbit Infiniband 网络。

在集群节点上,fs 操作非常敏捷,但在以下情况下则不然:

  • 杂种狗
  • SQLite3 的
  • 一个 R 库。例如Rscript <(echo "library(GOstats)")

它们都会在以下系统调用后卡住几分钟:

  • fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741824, len=1}或者
  • fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}

可能是什么原因?如何诊断和修复?

将 NFS 服务器切换到 OpenIndianaoi_148使固定?

答案1

这些系统调用获取文件上的锁。也许另一个进程当前有一个锁,而您的卡住进程正在等待释放该锁。有一些故障排除技巧(适用于较旧版本的 Solaris,但它们可能仍然有用)第 11 章奥莱利的管理 NFS 和 NIS,第二版。

答案2

查看服务器上 NFS 锁服务是否正在运行。

答案3

升级到最新的 OpenIndiana。问题消失了。

相关内容