[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 メーリングリストの案内