F_WRLCK调用在NFS上花费很长时间

我有30个群集节点共享的NFS。 这些节点是Debian 5和6. NFS服务器是OpenSolaris 2009.我们有很好的硬件和一个20Gbit的Infinibandnetworking。

在群集节点上,fs操作很快,但是在涉及到:

  • 傻子
  • SQLITE3
  • 一个R lib。 例如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服务器切换到OpenIndiana oi_148修复?

这些系统调用获取文件的locking。 也许另一个进程目前有一个锁,你卡住的进程正在等待该锁被释放。 在O'Reilly的Managing NFS and NIS第2版​​的第11章中 ,有一些故障排除提示(对于较旧版本的Solaris,但它们可能仍然有帮助)。

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

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