Win2k3 でサービスとして実行されている Atlassian Fisheye/Crucible の「MaxPermSize」を設定するにはどうすればよいですか?

Win2k3 でサービスとして実行されている Atlassian Fisheye/Crucible の「MaxPermSize」を設定するにはどうすればよいですか?

2 週間にわたって、Win 2K3 R2 で Atlassian Fisheye/Crucible をサービスとしてセットアップしようとしてきました。さまざまな「java.lang.OutOfMemoryError: PermGen space」エラーが発生し続け、Fisheye がクラッシュしてサービスを再起動せざるを得なくなります。

私はAtlassian サポート サイトで、サービス ラッパー内で MaxPermSize を構成する方法を参照してください。ただし、Fisheye 管理ページとデバッグ ログ内の SysInfo を確認しても、確認は表示されません。Java ヒープ情報は両方の場所にあるため、MaxPermSize 設定は両方の場所に表示されるはずです。

エラーは解決せず、Atlassian サポートもほとんど役に立ちませんでした。

どのような助けでも感謝します。

答え1

これは Wrapper.conf ファイルで設定できます。これが私の設定ファイルです。これは私にとってはうまく機能しています。私はこれを Windows Server 2008 R2 で実行されている Fisheye 2.6.3 で使用しています。このファイルはサンプル/デフォルト設定とほぼ同じですが、最後にコメントするいくつかの重要な追加事項があります。

#********************************************************************
# ラッパープロパティ
#********************************************************************
# 作業ディレクトリ
wrapper.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 から始める必要があります (log4j 構成が最初に読み込まれるように、最初に lib を追加します)
wrapper.java.classpath.1=./fisheyeboot.jar
wrapper.java.classpath.2=ラッパー/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

# 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=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)
wrapper.java.initmemory=64

# 最大 Java ヒープ サイズ (MB)
wrapper.java.maxmemory=1024

# アプリケーションパラメータ。必要に応じて1からパラメータを追加します。
# 最初のアプリケーションパラメータは、メインクラスの名前です。
# メソッドはアプリケーションの起動時に呼び出されます。クラス
# 名前の後に、メインに渡されるパラメータの数が続きます
# メソッド。次に実際のパラメータが来ます。

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

# 開始パラメータの後に、メインクラスの名前が続きます。
# メソッドはアプリケーションを停止するために呼び出されます。停止クラス名
# の後に、ラッパーが
# JVM を終了する前に、デーモン以外のすべてのスレッドが完了するまで待機します。
# フラグの後に渡されるパラメータの数が続きます
# stop クラスのメイン メソッド。最後に実際のパラメーターが来ます。
wrapper.app.parameter.4=com.cenqua.fisheye.FishEyeCtl
wrapper.app.parameter.5=true
wrapper.app.parameter.6=1
wrapper.app.parameter.7=停止

#********************************************************************
# ラッパーのログプロパティ
#********************************************************************
# コンソールの出力形式。(形式についてはドキュメントを参照してください)
wrapper.console.format=M

# コンソール出力のログ レベル。(ログ レベルについてはドキュメントを参照してください)
wrapper.console.loglevel=INFO

# ラッパー出力ログに使用するログ ファイル。
wrapper.logファイル=var/log/wrapper.log

# ログファイルの出力形式。(形式についてはドキュメントを参照してください)
wrapper.logfile.format=LPTM

# ログファイル出力のログレベル。(ログレベルについてはドキュメントを参照してください)
wrapper.logfile.loglevel=INFO

# ログファイルの最大サイズ
# ログはロールされます。サイズはバイト単位で指定します。デフォルト値
# 0の場合、ログローリングが無効になります。 'k' (kb)または
# 'm' (mb) サフィックス。例: 10m = 10 メガバイト。
wrapper.logfile.maxsize=50m

# 古いログファイルを削除する前に許可されるロールログファイルの最大数
# ファイルが削除されます。デフォルト値 0 は制限がないことを意味します。
wrapper.logfile.maxfiles=10

# sys/イベント ログ出力のログ レベル。(ログ レベルについてはドキュメントを参照してください)
wrapper.syslog.loglevel=なし

#********************************************************************
# ラッパーウィンドウのプロパティ
#********************************************************************
# コンソールとして実行するときに使用するタイトル
wrapper.console.title=魚眼レンズ

#********************************************************************
# ラッパー Windows NT/2000/XP サービス プロパティ
#********************************************************************
# 警告 - アプリケーションが
# この構成ファイルを使用するサービスとしてインストールされています。
# このセクションを変更する前にサービスをアンインストールしてください。
# サービスを再インストールできます。

# サービス名
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 'hotspot' サーバー実行可能ファイルへのフル パス。JRE だけでなく、完全な JDK をダウンロードすることに注意してください。

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

上記のいずれも Atlassian のドキュメントには記載されていませんが、私は試行錯誤しながらこれらを時間をかけて追加してきました。FeCru がサービス ラッパーの下で初めて起動されると、メモリ不足エラーで停止することがありますが、'MaxPermSize' 行でこれを修正できます。

また、上記のように FISHEYE_INST を指定する必要があることもわかりました。パスの/..最後に を指定する理由がわかりませんが、私が見つけた例ではそのようになっていました。間違いなく、Linux のクッキーの儀式のようです。他の行は、何のために追加したのか思い出せませんが、何らかの理由で追加し、その理由を文書化しませんでした。完璧な人はいません ;-)

wrapper.java.initmemory=64 wrapper.java.maxmemory=1024

ヒープ メモリの割り当てがデフォルトより増加しました。かなり大きなリポジトリをインデックスしているので、追加のリソースを用意する余裕があります。デフォルトの小さい割り当てで済むかもしれません。

関連情報