質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

SVN

SVNは、CollabNet社が開発したソースコードなどを管理する集中型のバージョン管理システムです。 Subversionとも呼ばれ、CVSの問題点を解決すべく開発された次世代のバージョン管理システムとして開発されました。基本的なコマンドはCVSと共通しています。複数人の開発者が共同でひとつのソフトウェアの開発にあたるときなどに、ドキュメント及びソースコードなどを管理するのに使用されます。

Q&A

1回答

2747閲覧

JavaのSVNKitを使用してLinuxでエクスポートをすると、SVNサーバが途中で落ちる

javabigineer

総合スコア87

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

SVN

SVNは、CollabNet社が開発したソースコードなどを管理する集中型のバージョン管理システムです。 Subversionとも呼ばれ、CVSの問題点を解決すべく開発された次世代のバージョン管理システムとして開発されました。基本的なコマンドはCVSと共通しています。複数人の開発者が共同でひとつのソフトウェアの開発にあたるときなどに、ドキュメント及びソースコードなどを管理するのに使用されます。

0グッド

0クリップ

投稿2016/06/22 01:05

JavaのSVNKitを使用してSVNエクスポートを行うと、500件ほどエクスポートするとSVNサーバが落ちてしまいます。
同様のツールで、Windowsからエクスポートすると2000件以上エクスポートできています。
WindowsからとLinuxからではSVNにかける負荷が変わるのでしょうか?
ご存知の方、原因が予想できる方いらっしゃいましたらご教授ください。

ちなみにSVNはWindows Server上に構築しています。

以下、SVNKitをしようしてエクスポートする処理のソースです。

```

public boolean SVNExport(String messagepath, String propath, DBAccess acc,
ReleaseData reldata, String VLR, String osName, String fullpath)throws IJXException {
/** 抜出結果 */
boolean result = false;

/** SVN格納パス */ String svnpath = ""; /** モジュール名 */ String module = ""; /** SVNリビジョン */ int svnrevision = 0; /** SVNルートパス */ // String svnroot = ""; /** SVNユーザー */ String svnuser = ""; /** SVNパスワード */ String svnpass = ""; try { // プロパティファイルから情報を取得 Properties property = acc.propertyread(messagepath, propath); svnuser = property.getProperty("svnuser");// SVNユーザーを取得 svnpass = property.getProperty("svnpass");// SVNパスワードを取得 // DBから情報取得 svnpath = reldata.getSvn_path(); // SVN格納パスの取得 module = reldata.getModule_name(); // 抜出モジュール名の取得 svnrevision = reldata.getSvn_revision(); // SVNリビジョンの取得 // File型に変換 File file = new File(fullpath); // StringBuilder型に変換(文字列操作) System.out.println("SVN格納パス:" + svnpath); StringBuilder sb = new StringBuilder(svnpath); // SVN格納先(絶対パス)を取得 sb = sb.append(module); svnpath = sb.toString(); System.out.println("SVN格納パス:" + svnpath); // SVNURL型に変換 String url = SVNEncodingUtil.autoURIEncode(svnpath); SVNURL svnUrl = null; svnUrl = SVNURL.parseURIEncoded(url); // SVNRevision型に変換 SVNRevision revision = SVNRevision.create(svnrevision); System.out.println(revision); // SVNKitの初期化 setupLibrary(); // SVNクライアントマネージャー生成 SVNClientManager _svnClient = SVNClientManager. newInstance(SVNWCUtil.createDefaultOptions(true), svnuser, svnpass); SVNUpdateClient client = _svnClient.getUpdateClient(); ISVNOptions comit = client.getOptions(); boolean ch = comit.isUseCommitTimes(); System.out.println("コミット判定:"+ch); // 抜出先に同ファイルが既に存在していれば削除(初期化) FileWrite fw = new FileWrite(); fw.Deletefile(file); // boolean same = fw.Deletefile(file); /*if(same){ String updator = reldata.getUpdate_user_id(); }*/ System.out.println("SVNリビジョン" + revision + "を" + file + "に抜き出します"); // 抜出対象リビジョン番号(戻り値) long revisionnumber = 0; // 抜出処理(Export) // SVNRevision.HEAD revisionnumber = client.doExport(svnUrl, file, SVNRevision.HEAD, revision, null, true, SVNDepth.INFINITY); SVNInfo svninfo = _svnClient.getWCClient().doInfo(svnUrl, SVNRevision.HEAD, revision); file.setLastModified(svninfo.getCommittedDate().getTime()); // 引数6番目のtrue = 同じファイル名があった場合は置き換える System.out.println("SVNリビジョン" + revisionnumber + "を" + file + "に抜き出しました"); result = true; } catch (SVNException e) { result = false; // システムエラーログ出力 LogUtil.writeLog(LogUtil.ERROR, this.getClass().getSimpleName(), METHOD_NAME, LogUtil.MSG_SYSTEM_ERR, null, e); e.printStackTrace(); throw new IJXException(); } finally { // メソッド終了ログ出力 LogUtil.writeLog(LogUtil.DEBUG, this.getClass().getSimpleName(), METHOD_NAME, LogUtil.MSG_METHOD_END); } return result; } /**SVNKitの初期化メソッド*/ private static void setupLibrary() { // SVNURLが svn:// and svn+xxx://の場合 SVNRepositoryFactoryImpl.setup(); }

}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tanat

2016/06/22 01:20

SVNサーバ側のログには何か記載されていませんか?
javabigineer

2016/06/22 02:34

イベントログには予期せぬエラーによりサービスが落ちましたと記載されていました。
mryo0826

2016/06/22 02:50 編集

回答先を間違えたので削除しました。
eripong

2016/06/22 09:42

SVNサーバは、何を使っていますか?バージョンはいくつでしょうか?
guest

回答1

0

Javaでエキスポートする処理を行われているようなので実行されたWindowsとLinuxのJavaVMのヒープサイズ、VMのモードなどを確認されては如何でしょうか?
事象を見る限りjavaのプログラムがOutOfMemoryで落ちているように見えます。Javaのプログラム側ではどのようなエラーになっているでしょうか?

投稿2016/06/22 02:50

mryo0826

総合スコア77

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

javabigineer

2016/06/22 02:55

>WindowsとLinuxのJavaVMのヒープサイズ、VMのモードなどを確認されては如何でしょうか? →恐れ入りますが、確認方法を教えていただけないでしょうか? JavaのプログラムのログにはOutOfMemoryは出ておらず、SVNサーバが落ちたことによりSVNに接続できないエラーが出ております。
mryo0826

2016/06/22 04:18

オプションの確認はこちらになります。 java -XX:+PrintFlagsFinal -version 見方はこちらのサイトを参照下さい。 また、上記のプログラムはどのように実行されているでしょうか? コンソール上でコマンドラインで動かしたのか、Tomcatなどから動かしたのかでどこでエラーになっているのか、またJVMのオプションが異なっている可能性などがあります。
javabigineer

2016/06/22 04:36

ご回答ありがとうございます。 申し訳ありませんが、サイトのURLを確認できないのですが。。 jarプログラムをシェルにてコマンドラインで動かしています。
mryo0826

2016/06/22 04:42

すいません、貼りそこねていました。 http://x1.inkenkun.com/archives/367 ちなみにWindows,Linuxともネットワーク越しの接続でしょうか?Windowsはlocalhost接続しているということはないでしょうか?
javabigineer

2016/06/22 04:56 編集

Windows,Linuxともネットワーク越しの接続です。 Windowsはlocalでツール実行して、サーバ上のSVNに接続しています。(localhost接続の意味を誤認識していたら申し訳ありません。。)
mryo0826

2016/06/22 05:01

Windowsがローカルで接続、Linuxがネットワーク越しで接続となると、ネットワーク絡みで接続が途中で落ちている可能性があります(例えばTCP/IPのタイムアウトなど) 上記のプログラムでSVNException以外の例外は発生してないでしょうか?
javabigineer

2016/06/22 05:38

確認してみます。 ネットワーク絡みで接続が途中で落ちるのとSVNのサービスが落ちるのは関連があるのですか?(私の知識不足かもしれませんが。。)
mryo0826

2016/06/22 06:45

SVNのサーバをどのように構築されているのかが分かりませんが、例えばwindows-Linuxとでネットワーク経由でつないでいて、今回で言うSVNのエクスポートで時間がかかりすぎていて、SVNのapacheサーバがタイムアウト、または出力するファイルが多すぎてサイズ制限などがかかっている可能性はあると思います。 Windowsからアクセスする場合はSVNのパスがfile://、Linuxの場合はhttp://でつないでいるとかつなぎ方が異なったりしていないでしょうか?
javabigineer

2016/06/22 09:11

SVNのパスはどちらもsvn://でつないでいます。 一点確認ですが、上記のlocal接続というのはJavaプログラムをlocalで起動するという意味で合っていますでしょうか?それともSVNサーバ上でJavaプログラムが動くという意味でしょうか?
mryo0826

2016/06/23 00:58

SVNサーバのWindows上で上記のJavaプログラムを動かしたかどうかを確認した次第です。 ネットワーク関係なのか、今回だとsvnserver側なのか、JavaVM側が原因なのかを切り分けるためです。
javabigineer

2016/06/28 07:54

SVNサーバ上では動かしていません。
mryo0826

2016/06/29 09:38

SVNサーバ上で動かしていないとなるとどちらもネットワーク接続で繋いで差異があるということになりますが、WinとLinuxでJavaVMのヒープサイズなどに差異はあったでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問