Tomcat上已挂载的Samba文件夹

时间:2015-11-02 14:58:35

标签: java linux tomcat samba

我们有一个不规则的,不可复制的问题(到目前为止今年三次)。我们有一个双节点Tomcat集群,每个节点上运行的webapp有时从外部文件夹(已安装的SAMBA文件夹)读取(导入)文件。有时会出现问题:其中一个Tomcat实例无法从给定文件夹中读取数据,我们变为FileNotFoundException(Permission denied)。

例如,XLS导出的模板位于该文件夹中,当出现此问题时,用户将无法再使用该节点上的XLS导出功能。

对于那些在该文件夹中是全新的文件也是如此,并且Tomcat之前都没有尝试过这些文件。

似乎这不是一个简单的权限问题,tomcat用户可以访问给定的文件夹/文件,并在Tomcat重启后(只有一个有FileNotFoundException!)我们没有更多的问题!所以,我认为,这不是一个并发问题。

有人知道它怎么会发生?

=============================== UPDATE:

绝对没有并发问题:当Node2停止时,我们在Node1上的一段时间内上次收到错误。

另一个有趣的事情: 我构建了一个Quartz作业,每小时检查一次文件夹。这项工作在我们的应用程序内运行并执行以下操作:

       for (String path : getFolderPaths()) {
            if (StringUtils.isEmpty(path))
                continue;
            java.io.File folder = new java.io.File(path);
            if (!folder.canRead()) {
                // NOW WE HAVE a PROBLEM AGAIN :-(
            }
        }

Node1在00:05停止,在00:15开始,然后Node2在0:25停止,然后Node1上的作业在00:30处于活动状态。所有其他工作都在那段时间内停止了,我们没有得到HTTP请求,Node1在重启后做的第一件事是这个检查。并且第一个文件夹的检查成功,但第二个文件夹没有!

然后在一个小时内他们都失败了。这两个文件夹都是像/ mnt / fileshare / invoices /和/ mnt / fileshare / orders /这样的兄弟,所以问题可以在/ mnt / fileshare /

那是我们第一次检查导致问题吗?怎么会发生?

=============================== UPDATE:

我研究了定期检查有问题路径的工作结果。同一服务器上的其他Tomcat实例同时出现问题。另一台服务器上的其他Tomcat实例有时是同时进行的,有时是独立的。像

  • 服务器上的Tomcat foo_A问题/ mnt / fileshare / foo / invoices /
  • 服务器上的Tomcat bar_A问题/ mnt / fileshare / bar / invoices /
  • 服务器B上的Tomcat foo_B使用/ mnt / fileshare / foo / invoices /
  • 确定
  • 服务器B上的Tomcat bar_B使用/ mnt / fileshare / bar / invoices /
  • 确定

  • 服务器上的Tomcat foo_A问题/ mnt / fileshare / foo / invoices /
  • 服务器上的Tomcat bar_A问题/ mnt / fileshare / bar / invoices /
  • 服务器B上的Tomcat foo_B与/ mnt / fileshare / foo / invoices /
  • 有关
  • 服务器B上的Tomcat bar_B与/ mnt / fileshare / bar / invoices /
  • 有关

0 个答案:

没有答案