我如何设置“MaxPermSize”作为Atlassian Fisheye / Crucible在Win2k3上运行的服务?

我一直试图在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

堆内存分配从默认增加 – 我索引一些相当丰富的存储库,我可以承担额外的资源 – 你可以逃脱默认较小的分配。