有时我们在 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目录中的大量文件。
答案 0 :(得分:3)
从这里开始: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中启用此功能。“
答案 1 :(得分: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 ---
我遇到了旧版课程的问题,所以这似乎有所帮助。
答案 2 :(得分:1)
我在生产中遇到了上述相同的问题,并使用以下解决方案解决了这个问题。
添加了java选项
-Djboss.vfs.cache=org.jboss.virtual.plugins.cache.IterableTimedVFSCache -Djboss.vfs.cache.TimedPolicyCaching.lifetime=1440
我的设置还定义了其他部署目录,因此我需要将这些附加目录添加到$JBOSS_SERVER_HOME/conf/bootstrap/
中的vfs.xml文件中,以便了解其优势。
我认为生命周期设置以分钟为单位,因此我将其设置为一天,因为我有一整夜的服务器计划重启。
在找到此解决方案之前,我还尝试使用-Djboss.vfs.forceNoCopy=true
和-Djboss.vfs.forceCopy=false
这似乎有效,但我注意到应用程序运行速度慢了很多 - 大概是因为这些设置会关闭vfs缓存。
我的Jboss版本是jboss-5.1.0.GA 我的应用程序在生产中的集群中运行。
答案 3 :(得分:1)
我们通过爆炸部署(适用于战争和耳朵)解决了这个问题,如jboss文档中所述http://docs.jboss.org/jbossas/docs/Administration_And_Configuration_Guide/5/html/ch03s01.html
这是不使用vfs的方式。
答案 4 :(得分:0)
发现很多其他人在群集(或服务器场)环境中运行时遇到同样的问题。 https://issues.jboss.org/browse/JBAS-7126旨在解决将farm目录作为部署目录的问题。
使用第二个部署目录时遇到了同样的问题。 来自第二个部署目录的应用程序中的jar文件被复制,直到磁盘已满。
尝试添加第二个部署目录的方式与针对场目录所描述的https://issues.jboss.org/browse/JBAS-7126相同。
效果很好!
答案 5 :(得分:0)
我们遇到了同样的问题,并且能够通过将farm目录用作部署目录来解决问题。
在完成该流程之后,由于我们的DEV环境(我们有集群环境,我们有许多开发人员在共享DEV环境上部署)在我们部署时无法获得一致的结果,因此我们面临另一个问题这样的EAR和WAR。我们通过确保正在部署的EAR和JAR在服务器上接触(http://en.wikipedia.org/wiki/Touch_(Unix))来确保避免不一致来规避问题。