[Seasar-user:1491] Re: 【質問】 高負荷時のDBコネクションエラーについて
Yasuo Higa
higa
2005年 2月 15日 (火) 19:23:18 JST
<[E-MAIL ADDRESS DELETED]> の、
"[Seasar-user:1490] 【質問】 高負荷時のDBコネクションエラーについて" において、
"yamagoo <[E-MAIL ADDRESS DELETED]>"さんは書きました:
ひがです。
> はじめまして、やまぐちというものです。
>
> Tomcat5.0.2 + S2 1.10 + S2dao 1.0.18 + oracle10gで
> カウンターの採番処理をするアプリケーションを作っているのですが、
> 負荷を高くしてみる(リロードしまくる)と、ときどき
>
> [ESSR0071]SQLException occured, because java.sql.SQLException:
> Io exception: Socket closed
>
> がでてしまいます。
>
> これはどういった状態なのでしょうか?
> 防げるものなら防ぎたいのですが・・・
>
これは、オラクルが出してるエラー(IOException)が原因で起きてます。
S2, S2Daoは無関係だと思われます。
> 以前このメーリングリストでTomcatのjndi経由のコネクションプールは
> うまくいかないというものがありましたので、
> コネクションプールの設定はデフォルトのs2のものを使っています。
> この場合トランザクションの中ではプールが効くけれども
> 別トランザクションだと効かないのでしょうか?
> jndi経由だと最初にAPサーバが握るので別トランザクション間でも
> プールが効くと個人的には認識してるのですが。
>
プールは効きますよ。
ログが出ると思うので、論理コネクションと物理コネクションの取得
のログを見れば、プーリングの様子が確認できます。
論理コネクションは、プールからの取得、物理コネクションは、
オラクルから取得することになります。
> また、こちらのほうが深刻なのですが負荷をかけてしばらくすると
> OutOfMemoryErrorになってしまいTomcatの再起動が必要になります。
> Tomcatは-server -Xms128M -Xmx256Mで起動してます。
>
> DAOを使ってSelectした後+1してUpdateするコンポーネント
> (syncinterceptor済み)を
> Servletの中から呼び出したのち結果を出力するだけなのですが・・・
>
こっちは経験ないですが、RDBMSをHSQLDBに変えるとどうなりますか。
S2Daoが原因なのかRDBMSが原因なのかを調べる必要があると思います。
後、S2JDBCを使って同じことをするとどうなるでしょうか。
高負荷をかけているやり方もたぶん問題ないとは思いますが、
確認したいポイントですね。
---
Yasuo Higa <[E-MAIL ADDRESS DELETED]>
INFORMATION SERVICES INTERNATIONAL-DENTSU,LTD.
Seasar-user メーリングリストの案内