この前仕事中にヒヤリとした事。
JDBCデータ・ソースの設定でDBへの接続先を分けようとしたらうまくいかなかったのですよ。
というのはシステムのバージョンアップ案件があり、稼働中の環境に新しいAPとDBを立てたんですね。で旧AP/DBと新AP/DBが共存する環境となるわけです。バージョンアップ当日に旧から新へ切り替えるんですわ。
ただ、当日まで動作確認が出来ないのは困るわけです。
なので新DBへの接続設定をJDBCデータ・ソースに設定して、AP~DB間の接続も旧と新の2つにしたんですね。JDBCデータ・ソースは接続設定の有効範囲を設定できるので
旧AP→有効範囲:APサーバ/接続先:旧DB
新AP→有効範囲:セル/接続先:新DB
こんな風にしました。
本来はセルではなく新AP自体に設定すれば良いのですが、現場のルールではセルに設定するようになってますのであえてこうすることに。今思えばこれが良くなかったんですよねぇ、APサーバ自体に設定すれば良かったんでしょうけど。
この設定をした翌日、ユーザーからAPサーバの動作が遅いという連絡が!
またまた~w たまたまちょっと処理が思いだけでしょ~www、と余裕ぶっこいてたらですね、確かにログインした後の画面遷移が激遅なのですよ!1分以上かかるんです。WEBアプリ・サービスで画面遷移に1分以上なんてお話にならないレベル。こりゃーやばい。
とりあえずどこに問題があるのかを見つけないといけません。
まずはアプリケーション側の問題だと思うのでSystemOut.logを確認するが特に何も無し、いたって正常。ん~、それじゃSystemErr.log見ますか!と見たら出てますよ!
DBへの接続のタイムアウトが
Why??なんで??
エラーを見ると接続しようとしたIPアドレスが表示されているのですが、旧APが新DBに接続しようとしているのです。
なんでニャー!!
なぜか旧APが新DBに接続しようとしていますよ。
どうやらセルに設定したデータ・ソースでタイムアウトした後に、旧APに設定した設定で接続しているみたいです。これはやべえですよ!最悪データーのリカバリーするハメに。
おおお落ち着け!落ち着け自分!
こういう時は素数を数えるって神父さんも言ってたよ!
素数を数えて平静になるんだ。
・・・
よん?
あ、これダメだ。
とりあえず幸いデータ・ソースのIP設定が間違えていたので、データが別のDBに書き込まれることは無いから深刻な影響は無いぞ。まずはひとまずセルの設定を外すんだ!
それでもSystemErr.logには無常にもタイムアウトエラーが出続けます(´;ω;`)
恐らく一度コネクションを貼ってしまっているので、アプリケーションの再起動が必要なのかも。
結局はコンサルを通してユーザーと調整してもらい、APの再起動により問題が解消しました。
はああぁぁ~、もぅマジで焦った。
今回のは大事件になる可能性が高かったもの。
どうやらセルの設定はグローバルなのでこういった影響が出る可能性があるからやめたほうが良いんだって。全てのAPの設定がセルであればこういった問題は無いんだろうけど、複数の接続先がある場合は危険ですね~。
ちょっとこのへんを読んで勉強しないとだね。
今さら人に訊けない JNDI: 第 2 回 「リソース参照って何ですか?」PR
http://aikawarazu.iku4.com/work/jdbc%E3%83%87%E3%83%BC%E3%82%BF%E3%83%BB%E3%82%BD%E3%83%BC%E3%82%B9%E3%81%A7%E8%A4%87%E6%95%B0%E3%81%AE%E6%8E%A5%E7%B6%9A%E5%85%88%E8%A8%AD%E5%AE%9A%E3%82%92%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88%E3%82%BBJDBCデータ・ソースで複数の接続先設定をする場合セルに設定はやめたほうがいいみたい