16

有时我们在jboss/server/web/tmp/vfs-nested.tmp 目录中有大量的 JAR 文件 。
例如,今天这个目录包含超过 350k 的 jar 文件。
但在其他主机上,此目录中只有 2 个 jar 文件。
这个问题的根本原因是什么?

我们使用 JBoss 5.1

更新:
我在 JBoss 5.1.0.GA 的发行说明中找到了以下信息:

JBoss VFS 提供了一组不同的开关来控制它的内部行为。JBoss AS 默认设置 jboss.vfs.forceCopy=true。要查看所有提供的 VFS 标志,请查看 VFSUtils.java 类的代码。

所以我不明白我应该设置什么?
我应该设置-Djboss.vfs.forceNoCopy=true还是-Djboss.vfs.forceCopy=false
还是我应该同时设置它们?

更新 1:
我已经阅读了整个线程http://community.jboss.org/thread/2148?start=0&tstart=0 现在我不确定我应该更改 jboss.vfs.forceCopy 或 jboss.vfs.forceNoCopy。
根据这个线程,我将有 OutOfMemory 错误,而不是 tmp 目录中的大量文件。

4

6 回答 6

4

从这里: http: //sourceforge.net/project/shownotes.php ?release_id=575410

“tmp 目录中的nestedjarNNN.tmp 文件过多。VFS 通过将嵌套 jar 解压缩到 java tmp 目录中的 tmp 文件来解开嵌套 jar。这会导致大量文件填满 tmp 目录。您可以禁用通过在用于启动 jboss 的命令行上设置 -Djboss.vfs.forceNoCopy=true 来实现此行为。这将在未来的版本 JBAS-4389 中默认启用。

于 2010-06-24T17:34:00.867 回答
1

我在生产中遇到了上述相同的问题,并通过以下解决方案解决了它。

添加了 java 选项

    -Djboss.vfs.cache=org.jboss.virtual.plugins.cache.IterableTimedVFSCache
    -Djboss.vfs.cache.TimedPolicyCaching.lifetime=1440

我的设置还定义了额外的部署目录,所以我需要将这些额外的目录添加到位于的 vfs.xml 文件中$JBOSS_SERVER_HOME/conf/bootstrap/,以便看到好处。

我认为生命周期设置以分钟为单位,因此我将其设置为一天,因为我计划在夜间重新启动服务器。

在找到这个解决方案之前,我也尝试过使用-Djboss.vfs.forceNoCopy=true-Djboss.vfs.forceCopy=false

这似乎可行,但我注意到应用程序运行得慢了很多——大概是因为这些设置关闭了 vfs 缓存。

我的 Jboss 版本是 jboss-5.1.0.GA,我的应用程序在生产集群中运行。

于 2011-06-16T08:56:34.977 回答
1

jskaggz 有一个很好的答案。另外,我在 run.bat 文件的开头有这个:

rmdir /s /q c:\apps\jboss-5.1.0.ga\server\default\tmp
rmdir /s /q c:\apps\jboss-5.1.0.ga\server\default\work
rmdir /s /q c:\apps\jboss-5.1.0.ga\server\default\log
mkdir       c:\apps\jboss-5.1.0.ga\server\default\tmp
mkdir       c:\apps\jboss-5.1.0.ga\server\default\work
mkdir       c:\apps\jboss-5.1.0.ga\server\default\log
echo --- Cleared temp folders ---

我在使用旧的课程副本时遇到了问题,所以这似乎有帮助。

于 2010-06-24T17:37:31.480 回答
0

我们遇到了同样的问题,并且能够通过使用农场目录作为部署目录来规避这个问题。

在实施该流程后,由于我们的 DEV 环境(我们有集群环境,并且我们有许多开发人员部署在共享的 DEV 环境上)的性质,我们又面临一个问题,即在我们部署 EAR 和WARs 那样。我们通过确保正在部署的 EAR 和 JAR 在服务器上是 TOUCHED ( http://en.wikipedia.org/wiki/Touch_(Unix) ) 来规避这个问题,以确保避免不一致.

于 2014-02-13T19:21:11.270 回答
0

发现很多其他人在集群(或农场)环境中运行时遇到同样的问题。 https://issues.jboss.org/browse/JBAS-7126旨在解决将农场目录作为部署目录的问题。

我在使用第二个部署目录时遇到了同样的问题。我的应用程序中来自第二个部署目录的 jar 文件被复制,直到磁盘已满。

尝试以与https://issues.jboss.org/browse/JBAS-7126中描述的农场目录相同的方式添加第二个部署目录。

它运作良好!

于 2012-10-25T19:03:40.353 回答