Application Server専用ページへもどる
■■■OC4Jのスレッドダンプを取得する例
・OC4Jに対して、kill -QUITを送信することで、標準出力に対しスレッドダンプが出力されます
出力先は$ORACLE_HOME/opmn/logs配下の該当OC4Jインスタンスのログです。
・OC4J~{インスタンス名}~default_island~1
内容例:
...
Full thread dump Java HotSpot(TM) Server VM (1.4.1_03-b02 mixed mode):
at java.lang.Object.wait(Native Method)
- waiting on (a EDU.oswego.cs.dl.util.concurrent.LinkedNode)
at EDU.oswego.cs.dl.util.concurrent.SynchronousChannel.poll(SynchronousChannel.java:353)
- locked (a EDU.oswego.cs.dl.util.concurrent.LinkedNode)
...
■■■データソースの記述例
・ASCからデータソースを追加する際の記述例です。
●名前(N): OracleDS2
●*JNDIロケーション(E) :jdbc/OracleDS2
●JDBC URL(U) :
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=XXX.XX.XX.XX)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)))
●ユーザー名(U):scott
クリアテキスト・パスワードの使用(C): tiger
●その他主要な設定項目例
接続再試行間隔(秒)(I) :1
最大接続試行回数(M) :なし
キャッシュされている接続の非アクティブのタイムアウト(秒)(T) :60
最大オープン接続数(M):10
最小オープン接続数(O):10
空き接続タイムアウトの待機時間(秒)(W) :300
- 「最大接続試行回数(max-connect-attempts)」の値を「最大接続数(max-connections)」よりも大きい値に設定する
- 「接続の妥当性チェック(validate-connection)」をTrueに設定する
●意味について
※非アクティブのタイムアウト(秒)とは?
未使用の接続がプールから削除されるまで非アクティブ状態になっている時間です。
※使用接続タイムアウトの待機時間(秒)とは?
使用されている接続を開放するまでの最大時間です。
※使用接続の最大アクティブ時間(秒)とは?
使用している接続をアクティブにできる最大時間です。
※中止接続タイムアウト(秒)とは?
タイムアウト制限の強制間隔(秒)です。
・ファイルを直接編集する際の記述例です。
●ファイルの場所:$ORACLE_HOME/j2ee/OC4J_sample/config/data-sources.xml
{?xml version = '1.0' standalone = 'yes'?}
{!DOCTYPE data-sources PUBLIC "Orion data-sources" "http://xmlns.oracle.com/ias/dtds/data-sources-9_04.dtd"}
{data-sources}
{!--
An example/default DataSource that uses
Oracle JDBC-driver to create the connections.
This tag creates all the needed kinds
of data-sources, transactional, pooled and EJB-aware sources.
The source generally used in application code is the "EJB"
one - it provides transactional safety and connection
pooling. Oracle thin driver could be used as well,
like below.
url="jdbc:oracle:thin:@host:port:sid"
--}
{data-source class="com.evermind.sql.DriverManagerDataSource" name="OracleDS2" location="jdbc/OracleCoreDS2"
xa-location="jdbc/xa/OracleXADS2" ejb-location="jdbc/OC4J_sample"
connection-driver="oracle.jdbc.driver.OracleDriver"
username="scott" password="tiger"
url="jdbc:oracle:thin:@(DESCRIPTION=(FAILOVER=ON)(LOAD_BALANCE=OFF)
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.XX.XX)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.XX.XX)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=ORCL)))" inactivity-timeout="120"
max-connect-attempts="5"
wait-timeout="60" min-connections="45" max-connections="45"/}
{/data-sources}
■■■HTTPのセッションがMAXを越えているかの調査その1
% dmstool -c 10 -table ohs_server
上記コマンドで取得したメトリック情報から
「busyChildren.value」の値から「1」引いた結果が現在処理中のリクエスト数となる。
この値からMaxClientsを見積もることも可能になる。
■■■セッションMAX調査その2(補足)
最大接続数に達していたかどうかの確認方法について
- デバックログで判断
下記のデバッグオプションを設定し、そのログを解析することによりコネクション数の判断が可能。
"-Dtransaction.debug=true -Djdbc.debug=true"
"-Ddatasource.verbose=true"
- dmstoolツール を利用する(その1補足)
dmstoolで JDBC_Driver メトリック の以下の値を定期的に取得し使用されているコネクション数を確認する方法。
ConnectionCloseCount.count
ConnectionOpenCount.count
※ ただし、min-connectionsとmax-connections が同じ値の場合は特定できない。
■■■OracleASで出力されるHTTP Serverのアクセスログに処理時間を追加する方法
HTTP Server の httpd.conf に記述されているアクセスログの書式設定に「%T」を
追加修正することで、HTTPリクエストを受け付けてからHTTPレスポンスを返すまで
の時間をアクセスログに秒単位で記録することができる。
【設定の流れ】
1) 設定を変更する HTTP Server を停止し、httpd.conf をバックアップ
2) OEM Website から HTTP Server 管理画面の「管理」の
「Advanced Server Properties(拡張サーバ・プロパティ)」をクリックし、
次の画面の「構成ファイル」の中から httpd.conf をクリック。
3) httpd.conf の中に「%T」を含む任意のLogFormatディレクティブを新規に記述
し、CustomLogディレクティブに設定されているログフォーマット名を、
新規に記述した LogFormatの名前に書き換えた後、「適用」ボタンをクリック。
※設定例
LogFormat "%h %l %u %t \"%r\" %>s %b %T" commonPlusT
→ デフォルトで用意されている common ログフォーマットと同様の出力の最後に
「%T」が付くような形になっている。commonPlusTは LogFormat の名前であり、
既存の LogFormat 設定の名前と異なるものを指定。
CustomLog /home/ias902ip/ias902p/portal/Apache/Apache/logs/access_log
commonPlusT
→ 設定したLogFormat名に書き換えます。上記の場合は、commonPlusT 。
デフォルトで設定されているログフォーマット名は common。
4) HTTP Server を起動
その後のアクセスから時間が記録されるようになる。
- カスタムログ書式
(URL)http://httpd.apache.org/docs/1.3/mod/mod_log_config.html#formats
以下はアクセスログの出力例。(デフォルトの出力形式である common の例)
100.20.30.40 - admin [25/Aug/2007:10:18:42 +0900] "GET /manual/index.html HTTP/1.1" 200 4500
アクセスログの出力形式 (デフォルトの出力形式 common 場合)
%h リクエスト元のホスト名 100.20.30.40
%l クライアントの識別情報 -
%u 基本認証使用時のユーザ名 admin
%t リクエストが完了した時刻 [25/Aug/2007:10:18:42 +0900]
%r リクエストの内容 "GET /manual/index.html HTTP/1.1"
%>s リクエストのステータスコード 200
%b バイト単位のデータ転送量 4500
%T 処理時間
Application Server専用ページへもどる