[PHP-users 32022] Re: IIS+PHPでDB接続エラーについて

aug721 @ gmail.com aug721 @ gmail.com
2007年 4月 23日 (月) 18:07:10 JST


オカムラです。

一番負荷のかかる週末を終えての結果を書かせてもらいます。

結論から言いますと、障害は発生しなくなりました。

頂いた情報等を参考に実施した内容は、下記になります。

・php.iniセッション設定の見直し
 デフォルトのまま運用していたため、セッションファイルが保存場所
 されている場所をガベージコレクションが見つけられなかったようです。
 これにより20万件以上のファイルができていました。
 session.save_path = /tmp
  ↓
 session.save_path = c:\tmp

・負荷軽減を目的にPEAR::Cache_Lite、Smartyのキャッシュ機能を実装

上記により、CPUの利用率が数値的に明らかに低下し、今のところ障害は
発生していません。
セッションファイルが大量にあった事で、挙動がおかしくなっていた
というのが現時点の考えられ原因です。


> > 障害時のデータでは無いので参考程度ですが、SQLプロファイラを使って
> > デットロックを確認していますが、発生していないようです。
>
> デッドロックが発生していたら同じDBに接続している他のPHPやASPも
> 止まっちゃいそうなので、この可能性は低いかも。
> イベントログには載らないんだったかな?これ。

実際に障害が発生していた時間帯で、SQLプロファイラで確認してみましたが、
デットロックは発生していませんでした。


> > 独自のログ以外(WindowsやIISが吐き出すログ等)で、この値を
> > 見た方が良い等があればアドバイスをお願いします。
>
> IISでPHP動かすと、エラーはIISログに吐き出されるのかな?
> 見るのはまずこれだと思います。
> IIS6.0は各ウェブサイトごとのアクセスログの他にエラーログを
> 別途吐くので、こちらも確認。
> あとは二つのサーバのイベントログに、SQLのログくらいでしょうか。

エラーログの件は、知りませんでした。
あまり情報が無いのですが、下記サイトに書かれているログと同意
のものでしょうか?
http://www.atmarkit.co.jp/fwin2k/dnsvrguide/iis03/iis1.html
また、SQLのログというのは、SQL Serverが吐き出すイベントログという
意味でしょうか?
今後、利用していきたいと思いますので、情報をお願いします。


> > > コネクションプーリングなどを利用している様な事はないでしょうか?
> > 利用していません。
>
> OLE DBはODBCの接続プールと同じように、プーリングの機能を
> 持っています。
> PEAR::DBがどの接続方式を使ってるのかは知りませんけれども。
> 毎回律儀に接続しにいってたりはしないと思うので、意図的に
> 接続を新規に行わない限りはプーリングするんじゃないでしょうか?

勉強不足ですみません。
詳細を調べてみたいと思います。


> IISの運用管理のノウハウになっちゃうので、Windows系の情報が
> 集まるところで調べた方がいいかも。。
> なんかできたような気はしますが。

以前は、USERS GROUPを活用していましたが、最近は投稿数も減っている
ようなので、良いコミュニティを探しています。
オススメがありましたら情報をお願いします。


> > > ずいぶん昔の話ですが、WEBサーバとDBサーバ間の接続数に
> > > Win2003は制限が設けられており、上限に達するとDBが落ちた
> > > ような現象が発生していました。
> > > KBに載ってたと思いますが、昔過ぎてキーワード思い出せません。。
> >
> > Windows XP/2003のTCP同時接続数制限とその回避
> > http://itpro.nikkeibp.co.jp/article/Watcher/20060812/245765/
> > 辺りでしょうか?
>
> 時期的には2〜3年前の話のことです。
> 接続数が制限されている、という部分で似てはいますけれど、この記事の
> 制限は「不完全な外向きの〜」と書いてあるので、WEBとDBサーバ間の
> ローカル接続には関係ないような気もします。
> そもそもあったら致命的な欠陥になりそうですし。
> DBとの接続方法によっては該当するとかかもしれませんが。

WebサーバとDBサーバの接続数が40前後で推移していますので、
ここでいう「不完全な外向きの〜」には、該当しないようです。
ただ、このような制限がある事を知ることが出来てよかったです。


> ところでオカムラさんはシステムモニタのお話を出していらっしゃいましたが、
> 管理ツールのパフォーマンスでログの取得ができませんか?
> 「パフォーマンス ログと警告」ってところ。
> なんかこの辺かなと適当に触ったら、それっぽいのがありましたけれど。

間隔を指定して記録を残すことができました。
情報ありがとうございました。


PHP-users メーリングリストの案内