如何為在 Win2k3 上作為服務運行的 Atlassian Fisheye/Crucible 設定「MaxPermSize」?

如何為在 Win2k3 上作為服務運行的 Atlassian Fisheye/Crucible 設定「MaxPermSize」?

我已經嘗試將 Atlassian Fisheye/Crucible 設定為 Win 2K3 R2 上的服務兩週了。我不斷收到各種「java.lang.OutOfMemoryError: PermGen space」錯誤,這會導致 Fisheye 崩潰並迫使我重新啟動服務。

我已經按照例子在 Atlassian 支援站點上,在服務包裝器中配置 MaxPermSize。但是,當我檢查 Fisheye 管理頁面內的 SysInfo 和偵錯日誌時,我沒有看到任何確認。 Java 堆資訊位於這兩個位置,因此我希望 MaxPermSize 設定出現在這兩個位置。

該錯誤仍然存在,Atlassian 支援幾乎沒有幫助。

我很感激任何幫助。

答案1

您可以在 Wrapper.conf 檔案中進行設定。這是我的配置文件,這對我來說非常有用,我將其與在 Windows Server 2008 R2 上運行的 Fisheye 2.6.3 一起使用。該文件與示例/預設配置基本相同,但有一些重要的補充,我將在最後評論。

#************************************************* ******* ******************
# 包裝屬性
#************************************************* ******* ******************
# 工作目錄
包裝器.working.dir=../../

# Java 應用程式
wrapper.java.command=C:\Program Files\Java\jdk1.6.0_25\bin\java.exe

# Java 主類別。該類別必須實作 WrapperListener 介面
# 或保證 WrapperManager 類別已初始化。幫手
提供了 # 個課程來為您執行此操作。請參閱整合部分
# 文件的詳細資訊。
wrapper.java.mainclass=com.cenqua.fisheye.FisheyeServiceWrapper

# Java 類別路徑(包括wrapper.jar)新增類別路徑元素為
# 需要從 1 開始(先新增 lib,以便先載入 log4j 配置)
wrapper.java.classpath.1=./fisheyeboot.jar
wrapper.java.classpath.2=wrapper/lib/*.jar

# Java 函式庫路徑(Wrapper.DLL 或 libwrapper.so 的位置)
wrapper.java.library.path.1=包裝器/lib
wrapper.java.library.path.2=lib/native/linux-i386
wrapper.java.library.path.3=lib/native/osx-ppc
wrapper.java.library.path.4=lib/native/solaris-sparc
wrapper.java.library.path.5=lib/native/win32-x86


# Java 附加參數
wrapper.java.additional.1=-伺服器
wrapper.java.additional.2=-showversion
wrapper.java.additional.3=-Djava.awt.headless=true

# jmx 的 JDK 1.5 附加參數
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=false
wrapper.java.additional.7=-Dcom.sun.management.jmxremote.ssl=false
wrapper.java.additional.8=-Dcom.sun.management.jmxremote.authenticate=false
wrapper.java.additional.9=-Dcom.sun.management.jmxremote.password.file=./wrapper/jmxremote.password
wrapper.java.additional.10=-Dwrapper.mbean.name="wrapper:type=Java 服務包裝器控制項"
wrapper.java.additional.11=-Dfisheye.inst="C:\Atlassian\fecru-2.6.3\bin\.."
wrapper.java.additional.12=-XX:MaxPermSize=256m
wrapper.java.additional.13=-Xrs
wrapper.java.additional.14=-Dfile.encoding=UTF-8


# 初始 Java 堆大小(以 MB 為單位)
包裝器.java.initmemory=64

# 最大 Java 堆大小(以 MB 為單位)
包裝器.java.maxmemory=1024

# 應用程式參數。根據需要新增參數,從1開始
# 第一個應用程式參數是其 main 的類別的名稱
# 方法將在應用程式啟動時呼叫。班上
# 名稱後面跟著要傳遞給其 main 的參數數量
# 方法。然後是實際參數。

wrapper.app.parameter.1=com.cenqua.fisheye.FishEyeCtl
包裝器.app.parameter.2=1
包裝器.app.parameter.3=開始

# 啟動參數後面是其 main 的類別的名稱
# 呼叫方法來停止應用程式。停止類別名稱
# 後面跟著一個標誌,控制 Wrapper 是否應該
# 在退出 JVM 之前等待所有非守護執行緒完成。
# 標誌後面是要傳遞給的參數數量
# 停止類別的 main 方法。最後是實際參數。
wrapper.app.parameter.4=com.cenqua.fisheye.FishEyeCtl
包裝器.app.parameter.5=true
包裝器.app.parameter.6=1
wrapper.app.parameter.7=停止

#************************************************* ******* ******************
# 包裝器日誌記錄屬性
#************************************************* ******* ******************
# 控制台的輸出格式。 (有關格式,請參閱文件)
包裝器.console.format=M

# 控制台輸出的日誌等級。 (有關日誌級別,請參閱文件)
wrapper.console.loglevel=訊息

# 用於包裝器輸出日誌記錄的日誌檔案。
wrapper.logfile=var/log/wrapper.log

# 日誌檔案的輸出格式。 (有關格式,請參閱文件)
wrapper.logfile.format=LPTM

# 日誌檔案輸出的日誌等級。 (有關日誌級別,請參閱文件)
wrapper.logfile.loglevel=訊息

# 日誌檔案之前允許增長的最大大小
# 日誌已滾動。大小以位元組為單位指定。預設值
# of 0,停用日誌滾動。可以縮寫為“k”(kb) 或
# 'm' (mb) 字尾。例如:10m = 10 兆位元組。
wrapper.logfile.maxsize=50m

# 老舊之前允許的滾動日誌檔案的最大數量
# 個檔案被刪除。預設值 0 表示沒有限制。
包裝器.logfile.maxfiles=10

# 系統/事件日誌輸出的日誌等級。 (有關日誌級別,請參閱文件)
wrapper.syslog.loglevel=NONE

#************************************************* ******* ******************
# 包裝 Windows 屬性
#************************************************* ******* ******************
# 作為控制台運行時使用的標題
wrapper.console.title=魚眼

#************************************************* ******* ******************
# 包裝 Windows NT/2000/XP 服務屬性
#************************************************* ******* ******************
# 警告 - 應用程式運行時請勿修改任何這些屬性
# 使用此設定檔已安裝為服務。
# 修改本節前請先卸載服務。這
# 然後可以重新安裝服務。

# 服務名稱
wrapper.ntservice.name=魚眼

# 服務的顯示名稱
wrapper.ntservice.displayname=魚眼

# 服務描述
wrapper.ntservice.description=魚眼

# 服務依賴關係。根據需要新增依賴項,從1開始
包裝器.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「熱點」伺服器可執行檔的完整路徑。請注意,下載完整的 JDK,而不僅僅是 JRE。

wrapper.java.additional.11=-Dfisheye.inst="C:\Atlassian\fecru-2.6.3\bin.."
wrapper.java.additional.12=-XX:MaxPermSize=
256mwrapper.java.additional.13 = -Xrswrapper.java.additional.14
=-Dfile.encoding=UTF-8

Atlassian 文件中沒有顯示上述內容,我透過反覆試驗添加了這些內容。當 FeCru 在服務包裝器下首次啟動時,它可能會因記憶體不足錯誤而停止,「MaxPermSize」行修復了該問題。

我還發現有必要指定 FISHEYE_INST,如上所示。我不知道為什麼/..最後指定了路徑,就像我找到的範例一樣。毫無疑問,有些 cookie 的 Linux 儀式。其他幾行,我不記得它們的用途,但我出於某種原因添加了它們,並且沒有記錄原因。沒有人是完美的 ;-)

包裝器.java.init記憶體=64 包裝器.java.max記憶體=1024

堆記憶體分配從預設值開始增加 - 我索引了一些相當豐富的儲存庫,並且我可以負擔額外的資源 - 您可能會擺脫預設的較小分配。

相關內容