- PR -

F5連打アタックを防止する策って・・

投稿者投稿内容
raystar
ぬし
会議室デビュー日: 2003/01/16
投稿数: 251
お住まい・勤務地: Tokyo/Japan
投稿日時: 2003-07-24 02:01
こんばんわ。

引用:

コネクションプーリングを使っていれば普通は最大接続数を設定しませんか?
ライセンス数やらパフォーマンスチューニングやらで。


最大数設定しています。
簡単な検索SQLしか走らないページであっても
F5押しっぱなしでConnectionPoolないのActiveConnectionが
増えていきます。
最大数に到達すると、処理待ち状態で止まってしまうんですよね。

正常に複数クライアントからのアクセスでConnectionを使うのは良いのですが、
1クライアントで一時的に複数のリソースを占有されてしまうということが
問題なのです。

アプリ側で synchronized(session) しようとしたのですが、
どうやらTOMCATでは sessionIDは同じモノのインスタンスが同一のものとは
保証されていないようです。

でも、一応

HttpSession session = request.getSession();

synchronized(session){

Boolean reloadFlg = (Boolean)session.getAttribute("isResponsed");

if(reloadFlg == null){
sesson.setAttribute("isResponsed", Boolean.FALSE);
} else {
reloadFlg = Boolean.TRUE; // まだレスポンスおわってない。
}

if(reloadFlg == Boolean.FALSE) {
// 処理
// 必要な情報は全てセッションにぶちこむ
}

}

RequestDispatcher rd = request.getRequestDispatcher("なんとか.jsp");
rd.forward(request, response);

として

JSPの最後に

session.removeAttribute("isResponsed");

としたら、複数クライアントの同時アクセスはふせげるかなぁ。。。と
考えております。

今、パっと適当に書いたコードなので、おいおい。これやばいだろと
いうところがあれば、ご指摘ください。

スキルアップ/キャリアアップ(JOB@IT)