Next Page

1

Previous Page

Thread: CF8.0.1にてFullGCが頻発する原因について

Created on: 08/06/11 04:04 PM

Replies: 4

nikichi3


新米


Joined: 08/06/11

Posts: 2

CF8.0.1にてFullGCが頻発する原因について
08/06/11 4:04 PM

お世話になります、いつも勉強させていただいております。

下記環境にて1日(たまに半日で)連続運用していてサーバからの応答が遅くなります。
原因は、JVMのFull GCが頻繁に実行されているのです。
(現状は、毎朝4時にCF8を再起動しています。これは代替案であり再起動しない方針)
ウェブでも検索してみたのですが、それらしき内容がなかった為、質問させていただきました。


そこで皆さんにお聞きしたいのは、
1.JVMの設定が悪いのか?
(一度、adobeへ質問を投げたのですが、デフォルトの設定で試して下さいとだけ返答されました。)
2.プログラムソースが悪いのか?
3.CF8は、一日一回再起動するものなのか?(サーバ製品としてはありえないと思うですが)

また
原因の特定方法や、ヒントになりそうな事があれば何でも結構ですので、
どなたかご存知の方がいらっしゃいましたらご教授の程、宜しくお願い致します。


サーバー製品 ColdFusion
バージョン 8,0,1,196224
エディション Standard
オペレーティングシステム UNIX
Database: MySQL 5.1
OS バージョン 2.6.18-238.19.1.el5
2CPU
メモリ2G

なお、デバッグとロギングは全て無効としてあります。

------------------------------
サーバー情報
------------------------------
----------
一般設定
----------
リクエストタイムアウト Yes
アプリケーションごとの設定の有効化 Yes
リクエストの時間制限 60 秒
CFToken 用の UUID の使用 No
空白抑制の有効化 Yes
サービスファクトリの無効化 No
シリアル化 JSON の保護 No
シリアル化 JSON 接頭辞の保護 //
見つからないテンプレートハンドラ
サイト全体のエラーハンドラ
HTTP ステータスコードの有効化 Yes
グローバルなスクリプト保護 Yes
デフォルト CFForm ScriptSrc ディレクトリ /CFIDE/scripts/
送信データの最大サイズ 100 MB
リクエストのスロットルしきい値 4 MB
リクエストのスロットルメモリ 200 MB
----------
リクエストの調整
----------
同時リクエスト制限 5
Flash Remoting リクエスト制限 5
Web サービスリクエスト制限 5
CFC リクエスト制限 5
CFThread プールサイズ 10
レポートスレッドの最大数 5
リクエストキューのタイムアウト 60 秒
リクエストキューのタイムアウトページ
実行中の JRun スレッドの最大数 20
実行待ちの JRun スレッドの最大数 50
----------
キャッシュ機能
----------
テンプレートキャッシュサイズ 1024 テンプレート
信頼できるキャッシュの有効化 No
キャッシュされたクエリー制限 100
クラスファイルの保存 No
Web サーバーパスのキャッシュ Yes
----------
クライアント変数設定
----------
デフォルトのクライアント変数ストア Registry
----------
クライアントストア
----------
Cookie
----------
タイプ COOKIE
説明 Client based text file.
時間制限後データを破棄 Yes
時間制限 10 日
グローバルな更新の無効化 No
----------
Registry
----------
タイプ REGISTRY
説明 System registry.
時間制限後データを破棄 Yes
時間制限 90 日
グローバルな更新の無効化 No
----------
メモリ変数
----------
J2EE セッション Yes
----------
アプリケーション変数
----------
アプリケーション変数の有効化 Yes
デフォルトのタイムアウト 1,0,0,0
最大タイムアウト 1,0,0,0
----------
セッション変数
----------
セッション変数の有効化 Yes
デフォルトのタイムアウト 0,0,20,0
最大タイムアウト 0,0,20,0
----------
ColdFusion マッピング
----------
/CFIDE /var/www/html/CFIDE
/gateway /opt/coldfusion8/gateway/cfc
----------
メール接続の設定
----------
デフォルトのサーバーポート 25
接続タイムアウト 60 秒
スプール間隔 15 秒
メール配達スレッド 10
メールサーバーへの接続を維持 No
メッセージのスプール先 disk
メモリにスプールされるメッセージの最大数 50000
デフォルト CFMail 文字設定 UTF-8
SSL 接続の使用 No
TLS の使用 No
----------
デフォルトのメールサーバー
----------
メールロギングの設定
----------
ログの厳格度 warning
ColdFusion から送信された電子メールメッセージをすべてロギング No
----------
チャート
----------
キャッシュタイプ disk イメージ
キャッシュ内のイメージの最大数 50 イメージ
チャートを処理するスレッドの最大数 4
ディスクキャッシュの位置 /opt/coldfusion8/charting/cache
----------
Java と JVM
----------
Java 仮想マシンのパス /opt/coldfusion8/runtime/jre
初期メモリサイズ 1024 MB
最大メモリサイズ 1024 MB
クラスパス -Dcoldfusion.classPath={application.home}/../lib/updates,{application.home}/../lib,{application.home}/../gateway/lib/,{application.home}/../wwwroot/WEB-INF/flex/jars,{application.home}/../wwwroot/WEB-INF/cfform/jars
JVM 引数 -server -Dsun.io.useCanonCaches=false -XX:NewSize=384m -XX:MaxNewSize=384m -XX:PermSize=64m -XX:MaxPermSize=64m -noclassgc -Dcoldfusion.rootDir={application.home}/../ -Dcoldfusion.libPath={application.home}/../lib -Dfile.encoding=UTF-8 -Duser.language=ja -Duser.country=JP -Duser.region=JP -verbose:gc -Xloggc:/opt/coldfusion8/logs/coldfusion_jvm.log -XX:+PrintGCDetails -XX:SurvivorRatio=8 -XX:ParallelGCThreads=2 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=31

Link | Top | Bottom

AXL


長老


Joined: 02/02/08

Posts: 246

RE: CF8.0.1にてFullGCが頻発する原因について
08/06/11 10:15 PM

"ColdFusion JVM Tuning" で検索すればJVM関連は結構でますけどね。

もしJVM関連の設定に手を加えているなら、Adobeの言うとおりにまずはデフォルト設定に戻して様子を見たほうがいいですね。
最近になって出たものなのか、もうしばらくそういう状況が続いているのか分かりませんが、full garbage collectionが頻繁に行われているのはとてもシビアな状況です。
あまり詳しい状況が分からないので何とも言えませんが、たぶんコードの修正または調整が大分必要のように思います。プロセスに時間の掛かるページあるいはタスクなどから中心に見直してみていってはいかがですか。

Link | Top | Bottom

niiya


常連


Joined: 02/20/08

Posts: 46

RE: CF8.0.1にてFullGCが頻発する原因について
08/07/11 11:41 AM

パーマネントサイズ小さすぎ。Adobeの言うとおりデフォルト設定に戻した方が良いと思います。確か最大パーマネントサイズは192Mのハズ。

Link | Top | Bottom

nikichi3


新米


Joined: 08/06/11

Posts: 2

RE: CF8.0.1にてFullGCが頻発する原因について
08/08/11 8:45 AM

AXL様,niiya様 回答ありがとうございます。
adobeの言うとおりにやってみたのですが、改善されませんでした。
この状態は4カ月続いております。
その間にWeb上のサイトを探してみたのですが、試した方法は
1)JVMの引数をいろいろ変更
いろいろ試したのですが、改善されませんでした。

2)JDKのバージョンを変更
1.6.0_04→1.5.0_22だめでした。
1.6.0_04→1.6.0_22だめでした。

あと残るはプログラムソースがおかしいという事ですかね?
メモリの中に残ってしまうようなソースとはどういうものかご存じの方はいらっしゃいませんでしょうか?
例えば、でいいのでどうか宜しくお願い致します。

制作したプログラムの概要)
データベースに登録されている内容(HTMLのbody部分)を取得し、
ブラウザに表示するという簡単なプログラムです。
それがカテゴリ毎(8カテゴリ)に存在しています。
* Last updated by: nikichi3 on 8/8/2011 @ 8:51 AM *

Link | Top | Bottom

AXL


長老


Joined: 02/02/08

Posts: 246

RE: CF8.0.1にてFullGCが頻発する原因について
08/10/11 12:52 AM

大まかなところで注意したいのは、application scope, session scope, cache, thread, dead lockなどですかね。

あとcomponentのmethod内の値のscopeも気をつけたいところです。 "var" を付け忘れるとscopeはvariablesになり、そのcomponentをapplication scopeに収めると、そのvariables scopeの値はapplicationが止まるまでメモリーの中に残りますからね。

ColdFusionのserver Monitorや、数あるフリーのMemory Leak Toolなどを使うのも有効だと思います。

Link | Top | Bottom

Next Page

1

Previous Page

New Post

Please login to post a response.