オープンソースCMS「DotNetNuke」のセットアップ
前回はMicrosoft Web Platform Installerを利用して、DotNetNukeとWebMatrixをインストールする方法を紹介した。今回は、DotNetNukeのインストール方法を紹介する。
ブックマークされました!
ブックマークがエラーになりました。もう一度お願いします。
作者 エスエムジー株式会社 投稿日 2008年11月6日
エスエムジーでは、Java全般を対象にしたトラブルシューティングサービス「JaTS」を提供しています。 この記事では、前回に引き続き、JaTSにて蓄積したトラブル事例とその解決ノウハウの一部をお送りしている「Javaトラブルシューティングメールマガジン」(JTSMM)の総集編として、過去2ヶ月のトラブル事例と追加情報をダイジェストとして提供いたします。
8月~9月にかけて、JTSMMでは以下のトラブルを扱いました。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
■「メモリリークしているオブジェクトが一般的なため、発生箇所が特定できません。」【JTSMM vol.005-006】
________________________________
[問題]
長時間プログラムを実行することで、メモリリークが発生していることは確認できました。
しかし、メモリリークしているオブジェクトjava.util.Dateがプログラムの様々な場所で使われており、メモリリークの発生箇所を特定できません。
[解説]
以下の理由でメモリリークしているオブジェクトの特定が困難な場合があります。
- 該当クラスがソースコードの様々な場所で使われている
- データ構造が複雑で該当クラスと関連するクラスが分からない
このような場合には、該当クラスがどの場所で利用され、メモリリークしているかを分析する必要があります。
今回はパフォーマンスの低下が少なく網羅的な調査ができる、Javaのヒープダンプ結果についてjhatを利用した解析方法を紹介します。
■jhatを使ったヒープダンプの解析
ヒープダンプ結果の解析はJDK6.0より追加になったコマンドjhatを使います。jhatコマンドは次のように利用します。
> jhat heap.bin
jhatの起動が完了したら、ブラウザで、http://localhost:7000/ にアクセスします。その後、以下の手順でヒープダンプの解析を行います。
- 該当クラスのインスタンス数を確認します。
- 複数の該当クラスのうち1つのインスタンス情報を表示します。
- インスタンスの参照元を確認します。
- 関連している該当クラスのインスタンス数を調べます。
- ヒープ全体のインスタンス数と比較します。
今回は画像を示しながらjhatの使い方をお伝えします。
説明には、メールマガジン vol.005に掲載したサンプルプログラムを利用します。
また、ヒープダンプの取得方法についても、メールマガジン vol.005をご覧ください。
"Show instance counts for all classes (including platform)"をクリックして各クラスのインスタンス数を確認します。
他のクラスのインスタンス数に比べるとjava.util.Dateのインスタンスが桁違いに大量に発生していることがわかります。
このように多機能なjhatですが、現在のjhatには大きな制限があります。
現在公開されているJDK 6.0u7までのjhatでは、ファイルアクセスの実装に問題があるため、データサイズが2GBを超えるダンプファイルの解析に失敗します。 このため、ヒープメモリの使用量が2GBを超過したプロセスのヒープダンプについて、jhatで解析することは出来ません。
2GB以上のダンプファイルを解析した場合には、コンソールに以下のエラーメッセージが表示され、異常終了します。
$ jhat -J-mx512m java_pid24928.hprof.1218444379104
Reading from java_pid24928.hprof.1218444379104...
Dump file created Mon Aug 11 17:46:48 JST 2008
java.io.IOException: Bad record length of -1997781102 at byte 0xa4f089 of file.
at com.sun.tools.hat.internal.parser.HprofReader.read(HprofReader.java:192)
at com.sun.tools.hat.internal.parser.Reader.readFile(Reader.java:79)
at com.sun.tools.hat.Main.main(Main.java:143)
この不具合すでにbugdatabaseにも報告されています。先日公開されたJava6の最新版、Java6u10にて修正されています。
このため、現時点では正式リリース前となりますが、2G以上のヒープダンプを取得する場合には、Java6u10nのインストールが必要になります。 この問題については、Bug Databaseにも登録されています。
[参考]http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6614052
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
[対策]
■「メモリを大量確保しないアプリケーションでOutOfMemoryErrorが発生しました。」【JTSMM vol.007】
________________________________
[問題]
複数のWebアプリケーションをtomcat上で動かしています。 メモリを大量確保していないアプリケーションばかりなのですが、長時間運用しているとOutOfMemoryErrorが発生してしまい、tomcatが異常終了してしまいます。
[解説]
この現象はJava VMのPermanent領域が大量に必要な場合に発生します。
tomcatなどのように、起動した後に外部のjarファイルを読み込んで実行する仕組みをもったプログラムの場合、起動した後にもPermanent領域への情報追加が行われる場合があります。
この情報追加が大量に行われるプログラムの場合には、デフォルトで決められたPermanent領域が枯渇してしまい、ヒープが枯渇した場合と同じように、OutOfMemoryErrorが発生して、プログラムが強制終了してしまいます。
Permanent領域のサイズを指定するには-XX:MaxPermSizeオプションを利用します。-Xmxオプションはヒープのメモリサイズを設定するオプションですので、Permanent領域のサイズとは別になることにご注意ください。
Permanent領域のデフォルトでのサイズはJavaのバージョンやモードによって異なります。
permanent領域のOutOfMemoryErrorは、発生時にはスタックトレースから発生箇所が特定できます。しかし、発生前に問題の兆候を確認したりするには、jstatなどを使いメモリ使用量の変化を解析する必要があります。
通常この処理は定型的な処理が確定しておらず、また、リアルタイムに解析が行えないため、手間がかかります。
当社のENdoSnipeでは、メモリリーク検出機能を提供し、従来の方法に比べて容易に行うことが可能です。 プログラムにENdoSnipeを適用することで、下図のようにメモリリークの発生をグラフィカルに確認することができます。

ENdoSnipeは、他にも、システムを診断しパフォーマンスに影響を与える各種問題を検出する機能など、障害解析/障害解決に役立つ様々な機能を備えています。詳細は、ENdoSnipeの製品ページをご覧下さい。
メルマガ vol.007 でもお伝えしましたが、SMGではJTSMMの発行と並行して、FindBugsのバグ詳細についての日本語版の公開を始めました。
FindBugs は、事実上Java開発の必須ツールとなりつつある静的解析ツールですが、レポートとして出力されるバグのパターン(バグ詳細)が英語で記述されているた め、英語が母国語でない日本の開発者にとっては簡単には対処策が分からないのが実情だと思います。そこで、日本国内におけるFindBugsの効果的利用 のため、バグ詳細を順次日本語訳し、公開を行うことにいたしました。リリースされたばかりのFindBugs 1.3.5の追加バグ詳細も含め、全バグ詳細を公開する予定ですので、開発の効率化にご活用ください。
FindBugsバグ詳細の日本語版はこちらからご覧ください。
以上、Vol.007までのJTSMMのダイジェストをお送りしました。
Javaトラブルシューティングメールマガジンは、2週間を目処に不定期で無料配信しております。メールマガジンの無料配信登録は、こちらから行うことができます。メールマガジンでは、これからもJavaのトラブル解決に役立つ情報をお届けして参ります。
ダイジェストにつきましては、次回は11月末を予定しております。ご期待下さい。
前回はMicrosoft Web Platform Installerを利用して、DotNetNukeとWebMatrixをインストールする方法を紹介した。今回は、DotNetNukeのインストール方法を紹介する。
DotNetNukeは、Windows Serverで動作するCMS(Contents Management System)である。この記事ではWeb Platform Installer を利用して人気CMS「DotNetNuke」と無償Web開発環境「WebMatrix」のインストールする方法を紹介する。
クラウドコンピューティングを前提とした大規模データ技術が利用可能となってきています。Big Dataが一過性のブームで終わるかどうかにかかわらず、スケーラブルな分散アーキテクチャーの基盤はデータベース技術に主導されつつあります。RDBとORM主体のエンタープライズシステムは、HadoopやNoSQLとの組み合わせにより複合的なデータモデルに発展しました。
2011年12月8日~2011年12月9日に、ロンドンのSkills Matter eXchangeにて開催された「Groovy & Grails eXchange 2011」の参加報告を、日本Grails/Groovyユーザーグループのメンバーが3回に渡って紹介します。
Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します
去る1月12日、定理証明支援系ツールCoqの初心者向けチュートリアルが開催さ れた(http://kokucheese.com/event/index/23667/)。今後も2月2日 (http://kokucheese.com/event/index/23744/)、2月9日、2月16日と引き続���開 催されていく予定である。本記事では、開催の様子をレポートする。
Neal Gafter氏はOracleによるJava買収の影響に関する議論、Javaにセグメンテッドスタックやメタオブジェクトプロトコルを追加することについての主張、そしてJavaとC#との比較について話をしてくれた。
No comments
スレッド表示 返信