NFS日志损坏

我们有几个WebSphere应用程序服务器login到一个中央NFS挂载。 应用程序服务器和NFS服务器都在VMWare中运行,应用程序服务器是RHEL 5,NFS服务器是Ubuntu 8.04。 所有的服务器都至less通过千兆以太网连接。 我们正在经历日志的随机腐败,其中会有大量的空白空间。 我们过去直接挂载到NetApp服务器,但是迁移到这个设置。 NetApp没有这个问题。

在NFS服务器上,我已经设置了以下的sysctl命令:

sysctl -w net.ipv4.tcp_wmem="4096 87380 8388608" sysctl -w net.ipv4.tcp_rmem="4096 87380 8388608" sysctl -w net.ipv4.tcp_sack=0 sysctl -w net.ipv4.tcp_dsack=0 sysctl -w net.ipv4.tcp_max_syn_backlog=8192 sysctl -w net.ipv4.tcp_synack_retries=3 sysctl -w net.ipv4.tcp_retries2=5 

在/ etc / exports中使用此命令导出文件系统:

 /srv/export/logs 192.168.0.0/255.255.255.0(rw,no_root_squash,no_all_squash,sync,no_subtree_check) 

并使用此命令在应用程序服务器上进行装载:

 mount -t nfs -o rsize=8192,wsize=8192 192.168.0.1:/srv/export/logs /webspherelogs/ 

我不确定是否有足够的信息来回答这个问题。 你有没有尝试从你的各种服务器写入大量的数据到NFS挂载,这些文件展示腐败? 如果不是这可能是一个websphere特定的问题或websphere和NFS之间的交互。 也许有一些东西在写数据到日志文件的方式….

无论哪种方式,我不build议logging到NFS挂载,如果可能的话,通过使用本地syslog守护进程通过tcplogin进行集中式syslog-ng守护进程,可以更好地提供服务。 一般来说,这将是一个更灵活的解决scheme,可以实现更大的冗余,并消除NFS中固有的大量复杂性。

如果这种体系结构的改变是不可能的,那么在你把Websphere带入等式之前,我首先会排除NFS服务器本身。

当两个应用程序login到同一个文件时,我们有类似的行为。 特别是如果一个应用程序在日志文件滚动而另一个应用程序尝试写入日志文件时,可能会发生混淆的文件中的位置。

所以确保只有一个进程写入每个文件。 同时避免一个进程中的两个不同线程直接写入文件。 如果两个应用程序写入同一个文件,它只会产生麻烦。