我一直试图在Win 2K3 R2上设置Atlassian Fisheye / Crucible作为服务两周。 我不断收到各种各样的“java.lang.OutOfMemoryError:PermGen空间”的错误,这将导致Fisheye崩溃,迫使我重新启动服务。
我已经按照Atlassian支持站点上的示例在服务包装器中configurationMaxPermSize。 但是,当我检查Fisheyepipe理页面和debugging日志内的SysInfo,我没有看到任何确认。 Java堆信息在两个地方,所以我希望MaxPermSize设置显示在两个地方。
错误是持续的,Atlassian的支持一直没有帮助。
我感谢任何帮助。
你可以在你的Wrapper.conf文件中设置它。 这里是我的configuration文件,这对我来说很好,我用在Windows Server 2008 R2上运行的Fisheye 2.6.3。 这个文件与样本/默认configuration大致相同,在最后我会对其进行一些重要的补充。
#******************* ******************* #包装器属性 #******************* ******************* #工作目录 wrapper.working.dir = .. / .. / #Java应用程序 wrapper.java.command = C:\ Program Files \ Java \ jdk1.6.0_25 \ bin \ java.exe #Java Main类。 这个类必须实现WrapperListener接口 #或者保证WrapperManager类被初始化。 帮手 提供了#个课程来为你做这个。 请参阅集成部分 详细信息#的文档。 wrapper.java.mainclass = com.cenqua.fisheye.FisheyeServiceWrapper #Java Classpath(包含wrapper.jar)将类path元素添加为 #需要从1开始(添加lib FIRST,以便log4jconfiguration先被加载) wrapper.java.classpath.1 =。/ fisheyeboot.jar wrapper.java.classpath.2 =包装/ lib中/ *。jar子 #Java库path(Wrapper.DLL或libwrapper.so的位置) wrapper.java.library.path.1 =包装/ lib中 wrapper.java.library.path.2 = LIB /天然的/ Linux的I386 wrapper.java.library.path.3 = LIB /天然的/ OSX-PPC wrapper.java.library.path.4 = LIB /天然的/ Solaris的SPARC wrapper.java.library.path.5 = LIB /天然的/ Win32的x86的 #Java附加参数 wrapper.java.additional.1 = -server wrapper.java.additional.2 = -showversion wrapper.java.additional.3 = -Djava.awt.headless =真 #JDK 1.5 jmx的附加参数 wrapper.java.additional.4 = -Dcom.sun.management.jmxremote 将wrapper.java.additional.5 = -Dcom.sun.management.jmxremote.port = 4242 wrapper.java.additional.6 = -Dcom.sun.management.jmxremote.authenticate =假 wrapper.java.additional.7 = -Dcom.sun.management.jmxremote.ssl =假 wrapper.java.additional.8 = -Dcom.sun.management.jmxremote.authenticate =假 wrapper.java.additional.9 = -Dcom.sun.management.jmxremote.password.file =。/包装/ jmxremote.password wrapper.java.additional.10 = -Dwrapper.mbean.name =“wrapper:type = Java Service Wrapper Control” wrapper.java.additional.11 = -Dfisheye.inst = “C:\ Atlassian的\ fecru-2.6.3 \ BIN \ ..” wrapper.java.additional.12 = -XX:MaxPermSize参数=256米 wrapper.java.additional.13 = -Xrs wrapper.java.additional.14 = -Dfile.encoding = UTF-8 #初始Java堆大小(以MB为单位) wrapper.java.initmemory = 64 #最大Java堆大小(以MB为单位) wrapper.java.maxmemory = 1024 #应用程序参数。 根据需要从1开始添加参数 #第一个应用程序参数是其主要类的名称 应用程序启动时将调用#方法。 class上 #名称之后是要传递给它的主参数的数量 # 方法。 然后是实际的参数。 wrapper.app.parameter.1 = com.cenqua.fisheye.FishEyeCtl wrapper.app.parameter.2 = 1 wrapper.app.parameter.3 =启动 #起始参数后面是主类的名字 要调用#方法来停止应用程序。 停止类名称 #后面跟着一个标志,控制包装是否应该 在退出JVM之前,等待所有非守护线程完成。 #该标志后面是要传递给的参数个数 #停止类的主要方法。 最后是实际的参数。 wrapper.app.parameter.4 = com.cenqua.fisheye.FishEyeCtl wrapper.app.parameter.5 =真 wrapper.app.parameter.6 = 1 wrapper.app.parameter.7 =停止 #******************* ******************* #包装logging属性 #******************* ******************* #控制台的输出格式。 (请参阅格式的文档) wrapper.console.format = M 控制台输出的#日志级别。 (请参阅日志级别的文档) wrapper.console.loglevel = INFO #logging文件用于包装输出logging。 wrapper.logfile = VAR /数/ wrapper.log #日志文件的输出格式。 (请参阅格式的文档) wrapper.logfile.format = LPTM 日志文件输出的#日志级别。 (请参阅日志级别的文档) wrapper.logfile.loglevel = INFO #日志文件允许增长到的最大大小 #日志被滚动。 大小以字节为单位。 默认值 #为0,禁用日志滚动。 可能会缩写为'k'(kb)或 #'m'(mb)后缀。 例如:10米= 10兆字节。 wrapper.logfile.maxsize =50米 #旧的允许的滚动日志文件的最大数量 #个文件被删除。 默认值0意味着没有限制。 wrapper.logfile.maxfiles = 10 sys /事件日志输出的#日志级别。 (请参阅日志级别的文档) wrapper.syslog.loglevel = NONE #******************* ******************* #包装Windows属性 #******************* ******************* #作为控制台运行时使用的标题 wrapper.console.title =鱼眼 #******************* ******************* #包装Windows NT / 2000 / XP服务属性 #******************* ******************* #警告 - 不要在应用程序中修改任何这些属性 #使用此configuration文件已被安装为服务。 #请在修改本节之前卸载服务。 该 #服务可以重新安装。 #服务的名称 wrapper.ntservice.name =鱼眼 #显示服务的名称 wrapper.ntservice.displayname =鱼眼 #服务的描述 wrapper.ntservice.description =鱼眼 #服务依赖关系。 从1开始添加依赖项 wrapper.ntservice.dependency.1 = #安装服务的模式。 AUTO_START或DEMAND_START wrapper.ntservice.starttype = AUTO_START #允许该服务与桌面进行交互。 wrapper.ntservice.interactive = FALSE
wrapper.java.command = C:\ Program Files \ Java \ jdk1.6.0_25 \ bin \ java.exe
JDK“热点”服务器可执行文件的完整path。 请注意,请下载完整的JDK,而不仅仅是JRE。
wrapper.java.additional.11 = -Dfisheye.inst = “C:\ Atlassian的\ fecru-2.6.3 \ BIN ..”
wrapper.java.additional.12 = -XX:MaxPermSize参数=256米
wrapper.java.additional.13 = -Xrs
wrapper.java.additional.14 = -Dfile.encoding = UTF-8
以上都没有在Atlassian文档中显示,我已经通过反复试验添加了这些内容。 当FeCru首次在服务包装下启动时,可能会因内存不足错误而停止运行,“MaxPermSize”行将修复该错误。
我也发现有必要指定FISHEYE_INST如上所示。 我不知道为什么path是用/..指定的,就像我发现的例子。 毫无疑问,一些烹饪linux的仪式。 其他的路线,我不记得他们是为了什么,但我因为某种原因添加了他们,没有logging为什么。 没有人是完美的 ;-)
wrapper.java.initmemory = 64 wrapper.java.maxmemory = 1024
堆内存分配从默认增加 – 我索引一些相当丰富的存储库,我可以承担额外的资源 – 你可以逃脱默认较小的分配。