Nexenta,NFS和LOCK_EX

我目前正在使用灯架构,我期望一个大问题:(

我有几个HTTP Web服务器使用PHP5。 所有正在通过NFS(v3)挂载所有托pipe网站的目录。 文件服务器使用ZFS运行Nexenta存储设备。

问题是所有的NFS客户端试图通过NFS在文件中写入一些东西得到这个问题:

这是在apache2过程中:

open("/nfs/website1/file.txt", ORDWR|OCREAT, 0600) = 11647 fstat(11647, {stmode=SIFREG|0600, st_size=23754, ...}) = 0 flock(11647, LOCK_EX 

而且这个过程永远不会得到LOCK,并始终等待…。

效果如何? 所有的apache2 procces得到使用和等待..我的服务器不能仍然处理其他请求,因为没有更多的可用的进程。

我现在不在哪里find一个解决scheme..对我来说,在NFS服务器端..但至极configuration是错误的或丢失? 我怎样才能find什么是错的? 如果您需要更多关于configuration的信息,请问我能为您提供哪些帮助:)

听起来像锁守护进程没有运行在服务器端。

你可以通过改变你的NFS挂载(在客户端)来使用nolock选项来testing。 使用此选项不会阻止在客户端计算机上进行locking(使用本地locking),但它确实可以防止计算机之间的locking,因此这可能不是您的有效解决scheme。 尽pipe如此,你可以尝试一下,看看它是否阻止你的Web服务器进程被locking。

一旦你知道锁守护程序是否是问题,那么你可以看看它为什么不在服务器端运行(或者是有某种types的防火墙阻止了锁协议在客户端和服务器之间) 。