[PHP-users 107] Re: 暴走するhttpd プロセスの正体を確かめたい

SAWADA Hodaka php-users@php.gr.jp
Tue, 19 Jun 2001 12:32:17 +0900


改行位置をいじってます。

At Tue, 19 Jun 2001 05:34:19 +0900,
Ryuzi Kambe wrote:

> > > >現在、RedHat 6.2(kernel 2.2.16)、Apahce 1.3.14上で
> > > >PHP 4.0.5を使っています。先日PHPLibを導入したのですが、
> > > >その時期からなぜか突然httpdプロセスが暴走するように
> > > >なってしまいました。
> 
> 原因となるものを突き止めることが出来ました。
> Apacheのhttpd.confで、HostnameLookupを
> offにしたところ、httpdのプロセスが暴走することは
> なくなりました。

ということから、

> おそらく、名前を引きに行って戻って来なくなって
> しまったのだと思います。

これは、納得できるのですが、

> ちょっとしたアクセス制限
> などにホスト名を利用する時があるのですが、
> それで名前がひけないと、Webサーバのプロセス全体が
> ロックしてしまうような感じでした。

こちらは、上記設定とは無関係ではないでしょうか。

> 結局、Apache - PHP の間でどこがロックの現任になって
> いたのかというのを、ApacheとPHPの設定をそれぞれ
> 見比べて、突き止める必要がありそうです。
> #ちなみに、apacheのmod_phpモジュールでPHPを利用しています。
> 
> もしかして、DNSに対する問い合わせのタイムアウトの
> 部分も、PHPの中でコーディングしてやるべきなのでしょうか。

そんなに厳しい条件なんですか?

例えば named を PHP の動いているマシンでも動かして、
キャッシュとして使えば、既知のものに関しては速くなると思いますが、
未知の名前を解決するのに、ある程度時間がかかるのは
しょうがないと思います。

とりあえず、Apache の log を見ながら、
引けたところと引けなかったところを
それぞれどれくらいの時間で解決できたか統計でもとって、
タイムアウトを吟味する必要があるでしょうね。

手っ取り早く nslookup で調べてみてはいかがでしょうか。

time nslookup example.co.jp とか
time nslookup 192.168.0.0 とかすると、おおよその時間がわかります。

# でも、この件は DNS 回りではないところじゃないかなぁ。
-- 
         =^^= HODA =^^=          http://www.tail.gr.jp/~hoda/
澤田保隆@しっぽアルゴリズム情報研究所  mailto:hoda@tail.gr.jp