JSVR-Webサービスの利用クライアントがリクエストを発行してから、レスポンスを返すまでの処理の流れは「図2.1 リクエストからレスポンスまでの処理の流れ」のとおりです。この図中の(1)~(6)のそれぞれの段階で、接続待ちや処理待ちが発生します。ここでは、本製品固有の処理(3)と(4)について説明します。
図2.1 リクエストからレスポンスまでの処理の流れ
◆「(3)DB接続処理」におけるタイムアウト
JDBCデータソース管理が、最大待ち時間以内にDB接続返却処理を完了できなかった場合に、次の例外が発生します。
[2011/07/25 21:55:40] WSCMN100:Cannot get DB connection. java.sql.SQLException: [SymfoWARE ODBC Driver][SymfoWARE Server] JYP2608E 利用者制御機能における実行資源の制限を超えました.code = “1” at com.fujitsu.symfoware.jdbc.rda.Jdbc3AbsTrace.logSQLUtil(Jdbc3AbsTrace.java:699) … at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) at com.fujitsu.jsvr.util.ConnectionManager.getConnection(ConnectionManager.java:69) …
方法 | 説明 |
---|---|
最大待ち時間を増やす | 本製品の運用条件として「レスポンスに時間がかかることがあってもよい」とできるのであれば、最大待ち時間を増やし、例外発生を防ぐ(タイムアウトを回避する)ことができる。 |
最大接続本数を増やす | メモリー使用量やDB負荷増加による別の問題が発生することが危惧される。そのため、この方法は非推奨である。 もしもこの方法をとる場合は、運用環境で負荷テストをし、問題ないことを確認する必要がある。 |
内部データベースの処理で、最大待ち時間以内に検索結果返却処理を完了できなかった場合に、次の例外が発生します。
[29/07/2011 08:59:03:093 +0900] [2011/07/29 8:59:03] WSWRD100:Dictionary retrieval cannot be executed. [29/07/2011 08:59:03:093 +0900] com.fujitsu.jsvr.db.DBException: Cannot access DB. [29/07/2011 08:59:03:093 +0900] at com.fujitsu.jsvr.db.AbstractRecordSet$SQL.next(AbstractRecordSet.java:257) … [29/07/2011 08:59:03:109 +0900] Caused by: java.sql.SQLException: [SymfoWARE ODBC Driver] JYP1002U サーバーとの通信時間を超えました. [29/07/2011 08:59:03:109 +0900] at com.fujitsu.symfoware.jdbc.rda.Jdbc4AbsTrace.logSQLUtil(Jdbc4AbsTrace.java:138) …
方法 | 説明 |
---|---|
時間がかかる処理を実行させない | 一般的な環境/状況/リクエスト(マシンスペック、負荷状態、利用シーン等)で、処理に5秒以上かかることはない。しかし、例えば、何のフィルターもかけずにテーブルの全レコードをグループ化してソートするなど、大量データの処理を伴う場合は、環境/状況次第で、最大待ち時間を超えることがある。 このような処理を実行しないようにする。 |
最大待ち時間を増やす | 上記のような、時間がかかる処理をどうしても実行させたい場合で、かつ、運用条件として「レスポンスに時間がかかることがあってもよい」とできるのであれば、最大待ち時間を増やし、タイムアウトを防ぐことができる。 しかし、時間がかかる処理は、他の処理も妨げてしまう。時間がかかる処理が不特定他者から実行されないよう、注意が必要である。 現状で、この方法は非推奨としている。 |