WebLogic Server勉強会

昨日、外苑前のOracleさんにて、WebLogicの勉強会に参加。
無料でOracleのサポートさんの話が聞けるのは、なかなかうれしい。


一番よかったのはスレッド管理の話。
教えてもらったTIPSは、市販の構築・運用ガイドには書いてないシミジミとした内容で、なるほどと思ったので後学のためメモしておく。

BEA WebLogic Server 9.x/10 構築・運用ガイド (BEA Press)

BEA WebLogic Server 9.x/10 構築・運用ガイド (BEA Press)




日次でAPサーバ再起動してると、朝一でアクセスした時、若干レスポンスが遅い
なぜ?→起動直後はスレッドプール内のスレッドは少ない。スレッドプールは、スループットが測定され、「足りない」と判断されて始めて増える。
どうする?→config.xmlでself-tuning-thread-pool-size-minを設定するか、起動オプションで-Dweblogic.SelfTuningThreadPoolSizeMin=30とか設定しましょう。

<server>
<name>AdminServer</name>
<self-tuning-thread-pool-size-min>30</self-tuning-thread-pool-size-min>
<listen-port>7001</listen-port>
<listen-address>XXX.XXX.XXX.XXX</listen-address>
</server>



高負荷時に、JDBCデータソースの最大接続数を越えた取得が行われる
なぜ?→自動チューニング機能が高負荷に反応し、スレッド数を大幅に増やすから。
どうする?→最大スレッド数制約にデータソース名を指定しましょう。config.xmlで設定。

<max-threads-constraint>
<name>MaxThreadsConstraint-0</name>
<target>AdminServer</target>
<count>-1</count>
<connection-pool-name>AppDataSource</connection-pool-name>
</max-threads-constraint>



Webアプリで503(Service Unavailable)が出るんですが・・・
なぜ?→BEA-000337が発生してるなら、スレッドでスタックが発生しています。スレッドのスタックが検出されると、ワークマネージャがシャットダウンされる仕組みになっているらしい。
どうする?→そもそも、スレッドでスタックが発生する根本原因を解決してください。でも、運用上、根本原因の究明と対処に時間がかかる場合があるので、そんな場合はスタックを無視するように設定したり、スタックを検出する時間、スレッドの数を設定してください。

<work-manager>
<name>stuckthread_workmanager</name>
<work-manager-shutdown-trigger>
<max-stuck-thread-time>1200</max-stuck-thread-time>
<stuck-thread-count>2</stuck-thread-count>
</work-manager-shutdown-trigger>
</work-manager>



5月もあるらしいので、また行きたい。