セッションにDBコネクションを入れていた岡崎図書館のシステム

このコードの場合、DB接続はアクセス元のブラウザ専用として確保(ASPセッションに紐付け)され、ASPセッションがタイムアウトするまでの間(7月の時点で岡崎市立中央図書館では実測で620秒くらいだった)、閉じられることなく(使いもしないのに)占有されてしまう。その間に新しい閲覧者(ブラウザが)接続してくると、次々新しいDB接続が確保され、その最大数に達すると、それ以上のアクセスを受付けなくなってしまう。

この記事を読んで思い出したのだが、以前、とあるシステムのフロントエンドのスクリプト作成を依頼された時、仕様の中に「ブラウザ画面を閉じた時にサーバに通知する」というブラウザでは実現不能のものがあった。事情を聞くと、終了通知を受けて終了処理を行わないとセッションタイムアウトまでリソース占有して困るという内容の事を言っていたので、この図書館のシステムと似たような設計だったのだろう。

もしかすると、一部のシステム開発会社では、何らかのサーバのリソースをセッションにセットし、セッションタイムアウトまで1ユーザがそのリソースを占有するという設計が一般的にされているのかもしれない…。あらかじめ利用者が分かっているイントラネットのWebシステムやサーバクライアントのアプリならば、セッション中にサーバリソースを開放しないという設計もあり得るのだろうが、不特定のユーザにアクセスされる前提のWebアプリでは望ましくない。

…、ていうか蔵書検索システムなんてCouchDBあたりにデータぶっこんで公開しておけば、その辺のスーパーギークがスゲー使いやすいの作ってくれそうな気がするけど、そういうのダメ?