NFS服务器| 洪线程

我们有四个lpars,每个运行一个java实例。 他们对共享的NFS服务器进行大量的读/写操作。 当NFS服务器突然中断时,试图在这四台服务器上读取映像的所有线程都进入挂起状态。 下面跟踪显示相同(进程是一个websphere applciation服务器进程)

1)虽然我们正在处理NFS服务器端的问题,有没有办法从代码方面避免这种情况?

2)如果底层连接是基于tcp的(我认为是这样),tcp读/连接超时是否照顾这个? 基本上我想线程被返回到游泳池,而不是等待无限的对方回应。

3)或者这是源应用程序中的nfs客户端应该注意的事情? 客户端的一些configuration设置与nfs有关(因为FileInputStream.open不知道它正在尝试读取的文件是在本地服务器还是在nfs服务器中的共享文件夹)

在此先感谢您的答案:)

我们在WAS 7.0上使用java 1.6

[8/2/15 19:52:41:219 GST] 00000023 ThreadMonitor W WSVR0605W: Thread "WebContainer : 77" (00003c2b) has been active for 763879 milliseconds and may be hung. There is/are 110 thread(s) in total in the server that may be hung. at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.<init>(FileInputStream.java:113) at java.io.FileInputStream.<init>(FileInputStream.java:73) at org.emarapay.presentation.common.util.ImageServlet.processRequest(Unknown Source) at org.emarapay.presentation.common.util.ImageServlet.doGet(Unknown Source) at javax.servlet.http.HttpServlet.service(HttpServlet.java:718) at javax.servlet.http.HttpServlet.service(HttpServlet.java:831) at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1694) at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1635) at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:113) at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:80) at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:908) at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:965) at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:508) at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl 

这可能取决于如何挂载NFS共享。 默认情况下,使用“hard”参数装载NFS共享,这意味着访问无响应的NFS共享将无限期地阻止。

您可以更改客户端挂载点,添加以下参数之一(我在这里使用Linux手册页,也许您的具体选项有点不同):

  • soft:如果指定了soft选项,则NFS客户端在重新传输重新发送后,会失败NFS请求,导致NFS客户端向调用应用程序返回错误
  • intr:select是否允许信号在此安装点上中断文件操作。 使用intr选项比使用软选项更可取,因为它明显不太可能导致数据损坏。 仅供参考,在Linux 2.6.25+内核中已弃用

来源:Linux的nfs手册页