「Web出版サイト」ベータ公開

Q&A集[?]

当サイトでのご質問の受付は終了しました

すべてのコンテンツを読み込み専用としたため、回答欄からも投稿できません

Apache OpenOffice/LibreOfficeのご質問はそれぞれのフォーラムへご投稿ください

質問コーナー

サイト内検索

分類メニュー

関連サイト


本日:2
昨日:0
総数:3588
現在:4


子プロセスから起動したOpenOfficeがハングしてしまいます。

ページOpenOffice.org FAQの登録ページ
投稿者YSMUR
分類
edit/refer
優先順位
edit/refer
状態
edit/refer
カテゴリー
edit/refer
投稿日2008-06-25 22:06:13 (水)
OSWindows 2003 Server
依存するページ
バージョン
edit/refer

メッセージ

回答ページでは行末に「~」を付加する必要はありません

2年近く問題なく動いていたシステムに於いて、問題が発生していますので質問させてください。
・現象
Tomcatのサブプロセスとしてサーバ起動したOpenOfficeが、Tomcatの再起動途中でCPU使用率50%の状態でハング状態に陥ります。
同じシステムを複数動かしていますが、そのうち二つについて問題が発生しています。

・使用状況
Webシステムで使用するために、Tomcatから定期的に再起動をかけています。
(OpenOfficeを長時間起動したまま大量のXLSファイルを生成するとハングするため)
再起動方法はTomcat内のWebアプリからJavaのTimerTaskにより1時間ごと。
起動コマンドは「soffice.exe -invisible -accept=socket,host=0,port=8100;urp;」
再起動時刻にプロセスが使用されている場合は、再起動を延期する場合が有ります。
この状況で2年ほど正しく運用出来ていました。

・検証済みの内容
2.0にて発生しているので、一旦Webアプリを停め、2.0をアンインストールし、2.3をインストールしましたが、同様にsoffice.binがCPU使用率50%でハング。
document and settings\ユーザー名\Application Data\OpenOffice.org2\を削除し、ユーザー登録後再度実行しましたが、同様な症状です
起動コマンドをコマンドプロンプトから実行した場合は問題なくサーバ起動し、ポート8100で接続待ち状態で待機します。
また、このコマンドをWindowsのタスクに登録し動作させた場合もハングし、状況は同様にsoffice.binがCPU使用率50%です。(ただし、この問題が発生していないマシンにおいては、タスクから起動しても正常に動作します)
ハングした状態で、スタートメニューからOpenOfficeを起動すると、正常に起動し、Calcなどは普通に動作します。(タスクマネージャから見るとsoffice.exe,binが2個ある状態)
マシンの再起動は1度のみ行っています。
また、導入時期の古いマシンから発生している様に思えます(発生が2事例のみです)

起動時のログファイルなどが有れば検証可能なのでしょうが、位置がわかりませんでした。
特殊な事例かとおもいますが、対応法があれば教えてください。


まずは、ユーザー設定のデータを初期化してみると改善するかも。

Tora (2008-06-26 01:00:37 (木))

(タスクマネージャから見るとsoffice.exe,binが2個ある状態)

というのは、soffice.exe が2個、soffice.bin も2個ということでしょうか。

もしそうであれば、soffice.exe および soffice.bin をすべて、タスクマネージャなどで終了させてみてください。

そうしておいて、以下のような手順で、アカウント毎のユーザー設定状態を初期化してみると、どうなりますでしょうか。

1. Tomcat を動作させているユーザーアカウントの以下のフォルダに相当するフォルダの名前を変えるなどして、削除したと同じ状態を作る。
C:\Documents and Settings\アカウント名\Application Data\OpenOffice.org2

2. Tomcat のユーザーアカウントにて、OpenOffice.org を一回起動し、ライセンスの認証などを行っておく。
ユーザー登録については、「しない」などを選んでおく。

システムを起動してみると、状況は改善しますでしょうか。


次に、soffice 起動時のオプションを確認しておくと良いかと思います。勉強になりますので。

3. コマンドプロンプトなどで、以下のようなコマンドを実行すると、使用できるオプションが表示されます。
cd C:\Program Files\OpenOffice.org 2.3\program
soffice -h

 -invisible や -headless などが、サーバー利用時には、便利です。
OpenOffice.org 2.3 では、soffice -h で表示されませんでしたが、-nocrashreport も付けておくと良いかと思います。
というのは、OpenOffice.org が異常終了した後に、メニューなどから起動すると、エラーの回復をしましょうか。とか、エラーレポートを送信しましょうか。などのようなダイアログが表示されますでしょ。そのような動作を抑制するためのオプションです。


さらに、根本的な改善として、最近の方法で起動するように、Tomcat 上で動作する Java プログラムを書き直すことを、ご提案いたします。
というのは、現在お使いの方法は、デベロッパーズガイドに記述されている方法だと思います。その方法では、すでにお気づきの通り、あらかじめ soffice を起動しておかなければいけません。また、定期的に再起動させるなど、手間が掛かります。

最新の方法では、まだデベロッパーズガイドに反映されていませんが、Java から soffice に接続を行おうとしたときに、soffice が起動していなければ自身で起動してから、すでに起動していればそのまま、soffice を Java 側で指定した名前つきパイプで接続するようになっています。しかも、接続がすべて閉じられた後数秒経過すると自動的に soffice が終了するようになっています。そのようにすることによって、長時間起動しっぱなしという状態を回避できるようにしてあります。

OpenOffice.org 2.3 とのことですので、こちらから SDK をダウンロードし、インストール(展開)し、その中のサンプルプログラムを参考にしてみてください。今までよりも、さらに簡単に soffice に接続できるようになっています。
http://openoffice-ja.org/pub/openoffice.org/stable/2.3.0/

C:\Program Files\OpenOffice.org_2.3_SDK\examples\DevelopersGuide\FirstSteps フォルダ内の FirstConnection.java などが参考になるかと思います。

コンパイルおよび運用には、C:\Program Files\OpenOffice.org 2.3\program\classes フォルダ内の juh.jar ファイルが必要となります。
そのパスから一つ上のフォルダに上がって、soffice.exe を見つけるようになっていますので。

参考: faq/4/1077

invisibleオプションを外した状態で起動した場合、プログレスバーは4分の1程度しか進んでいません。

スプラッシュスクリーンのイメージの中に表示されるプログレスバーの進み具合は、以下のソースコード内の
http://framework.openoffice.org/source/browse/framework/desktop/source/app/app.cxx

void Desktop::Main()
        SetSplashScreenProgress(25);
        SetSplashScreenProgress(100);

などで、どこまで処理が進んだのか、確認できます。OpenOffice.org 2.3 のソースコードについては、タグ名が OpenOffice_2_3_0 です。

1/4 程度とのことですから、25 (値は0から100まで) の部分の次に行う処理内容を見てみると、やはり、soffice.bin へ接続は確立したが、その soffice.bin から応答が来ない(つまり、暴走しているか、フリーズしている)ので、ずっと待ちつづけている。というような状態に陥っているのではないかと診断できます。

回答ありがとうございます。

YSMUR (2008-06-26 14:09:06 (木))

(タスクマネージャから見るとsoffice.exe,binが2個ある状態)~
 というのは、soffice.exe が2個、soffice.bin も2個ということでしょうか。~

その通りです。
ユーザーデータの削除後の再起動は一応行っていますが、
確認のためもう一度、指示していただいた1,2を行いましたが、状況は変わりません。

また、起動時のオプションなども確認しましたが、症状は変わらずです。

納得がいかないのが、
「soffice.exe -invisible -accept=socket,host=0,port=8100;urp;」
の内容のバッチファイルを作成し、
・コマンドプロンプトから実行
・ダブルクリックで実行
はOKで、このコマンドを
・Tomcat内のWebアプリからRuntime.getRuntime().execで実行
・Windowsタスクの実行するファイルに指定し実行
の場合がCPU使用率50%でハングとなることです。
実行アカウント等怪しい物は見直したつもりですが、まだ何か引っかかっているような気もしますし、Windowsのサブプロセスでの起動についての何らかの制限が有るような気もします。

根本的な対策の為、Javaプログラムを書き直すことも考えてみます。
StarSuite8SDKで時代が止まっていた状態ですので、再度勉強してみます。
情報ありがとうございました。

類似する現象が報告されていますね。

Tora (2008-06-26 20:17:16 (木))

soffice.bin の CPU 使用率が 50% で、フリーズしている。というような内容のようです。
http://www.oooforum.org/forum/viewtopic.phtml?t=70085

2年近く問題なく動いていたシステムに於いて、問題が発生していますので質問させてください。 


という状況に陥ってしまったとのことですので、まず思いつくのは、Windows Update / Microsoft Update を行った。そのアップデートの内容と OpenOffice.org や JRE との相性が悪かった。

次に、ディスク容量不足。

さらに、ディスクの論理的な状態に何かしらの異常が起きてしまった。chkdsk などで確認。

上述の Forum の投稿では、OpenOffice.org をコンロトールパネルからアンインストールし、さらに、残っていたフォルダを削除し、それから、再びインストールしてみたところ、状況が改善した。とのようなことが書かれているようです。

プログラムを変更しましたが、同様の症状です

YSMUR (2008-07-01 12:38:24 (火))

回答ありがとうございます。

さらに、根本的な改善として、最近の方法で起動するように、Tomcat 上で動作する Java プログラムを書き直すことを、ご提案いたします。


上記の内容の通りに新規に作成してみましたが、
パイプから起動されていると思われるsoffice.binがCPU使用率50%という、同様の症状でハングする状態になってしまいました。
正常動作しているシステムに導入した物は正しく動いています。
ただ、Excelファイル生成ごとに2〜3秒余分に必要となるので、従来どおりの事前起動ポート待ち受け方式で行こうと思っています。

また、

2年近く問題なく動いていたシステムに於いて、問題が発生していますので質問させてください。 
という状況に陥ってしまったとのことですので、まず思いつくのは、Windows Update / Microsoft Update を行った。
そのアップデートの内容と OpenOffice.org や JRE との相性が悪かった。
次に、ディスク容量不足。

についてですが、
サーバ設置地が遠隔地なので、再起動などの手間があり、WindowsUpdate等は半年近く行っていません。
JRE等の変更も、もちろん行っていません。
ディスク容量ですが、システム領域・保存領域・バックアップ領域ともに全く問題有りません。

さらに、ディスクの論理的な状態に何かしらの異常が起きてしまった。chkdsk などで確認。

RAID構成のDBがインストールされているシステムですので、論理状態のチェックなどは行っていません。
これは出来るタイミングで行ってみます。

上述の Forum の投稿では、OpenOffice.org をコンロトールパネルからアンインストールし、
さらに、残っていたフォルダを削除し、それから、
再びインストールしてみたところ、状況が改善した。とのようなことが書かれているようです。


前回のアンインストールでは、上記のようにアンインストール・インストールを行っております。レジストリのチェックも行っています。

残念ですが、状況は好転していません。

Issue 登録しました。

Tora (2008-09-30 21:09:13 (火))

約3ヶ月も前の件ですが、現象がわかってきましたので、Issue 登録いたしました。

soffice -accept=socket falls into an infinite loop with 100% CPU consumption
http://www.openoffice.org/issues/show_bug.cgi?id=94471

上記の不具合は、以下のような場合などに、CPU使用率 100% (デュアルコアだと 50%)の状況に陥るという不具合です。

本スレッドの事象については、
(a) IP アドレスが変わった。その結果、host= 部分の IP アドレスが自ホストのIPアドレスと一致しなくなってしまった。
soffice "-accept=socket,host=1.1.1.1,port=8100;urp;"

(b) DNS を止めた。その結果、OpenOffice.org が host= 省略時の文字列 localhost に対応する IP アドレスを解決できなくなった。
soffice "-accept=socket,port=8100;urp;"

などが考えられるかと思います。

該当しませんでした

YSMUR (2008-10-07 23:38:27 (火))

連絡ありがとうございます。
上記の状態には該当しませんでした。
(a)についてIPアドレスは変更していません。
(b)DNSでの運用は行っていません。Hostsファイルの変更もありませんでした。

気になったのでhost=0等を変更して試したみましたが、同様の状況です。

納得がいかない、
「Windowsのタスクからのbatファイル起動は駄目、直接クリックで起動はOK」
についても、実行時のセキュリティなど試行錯誤しましたが、やっぱり駄目です。
LANインターフェースが2枚ある状態がまずいのでしょうか・・・・。

こちらも引き続き試行錯誤し、わかり次第報告いたしますので
よろしくお願いします。

お名前:
題名: