- PR -

Apache + mod_auth_pgsql で表示が急に遅くなりました

1
投稿者投稿内容
Psyduck
常連さん
会議室デビュー日: 2004/01/18
投稿数: 39
投稿日時: 2005-04-21 16:54
みなさんこんにちは。
いつもお世話になっております。Psyduckと言います。

みなさんに御教授いただき、順調に動いていたapacheなのですが
昨日から急に表示が遅くなりました。
どなたかアドバイスをいただければありがたいです。

環境:RedHat 7.2、Apache 2.0.53、PostgreSQL 7.4.7、mod_auth_pgsql 2.0.2b1
mod_auth_pgsqlを用いて、あるディレクトリ以下のページをユーザー認証しています

現象:
今まで数秒で表示していたページが、表示に30秒もかかるようになってしまった。
もちろん以前もmod_auth_pgsqlによるユーザー認証を行っていました。
その前後で何も変更しておりません。(思い当たる事がありません)
ある朝突然遅くなっていました。

備考:
httpd.confの記述は以下です
これらの記述を削除すると、瞬時に表示されるようになるため
やはり何かmod_auth_pgsqlの使い方に問題があると思われますが
何しろ今まで問題なく動いていたので釈然としません。

<Directory "/xxxxx/members/">
Auth_PG_encrypted off
Auth_PG_hash_type CRYPT
AuthName "Enter your username and password."
AuthType basic
Auth_PG_host localhost
Auth_PG_port 5432
Auth_PG_user postgres
Auth_PG_database db_name
Auth_PG_pwd_table table_name
Auth_PG_uid_field username
Auth_PG_pwd_field password
Auth_PG_pwd_whereclause " and basic_access='Y'"
<Limit POST GET>
require valid-user
</Limit>
</Directory>

accessログやエラーログを見ても
特に目新しいものはありません。

何が原因なのか、お判りになる方はいらっしゃいますでしょうか?
よろしくお願いいたします。
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-04-21 23:35
この状態での特定は難しいと思いますので、切り分けが必要かと思いますが…

・ブラウザ/Webサーバ間
 HTTPリクエスト・レスポンスを ethereal/tcpdump でキャプチャしたり、Apacheのログで応答時間を調べて、時系列を把握し、どこで待ちが発生しているかを特定する。

・mod_auth_pgsql/PostgreSQL間
 上記に加え、loアダプタを対象に tcpdump を行い(ポート5432番)、DBとの遣り取りも把握する。

・PostgreSQL自体
 長時間 DB を動作させていると効率が落ちてくるので、バキュームを行ってみてどうか確かめる。

・その他システム
 DNSクエリーや、ident 要求による待ちが発生していないかどうか(tcpdump や netstat、lsof)、システム負荷が異常に上がったりしてないかどうか確認する。

差し当たり、問題点の把握のためにも、こういった調査が必要かと。
力技に自信があるなら、Apache のプロセス本体を strace する手もありますね。
Psyduck
常連さん
会議室デビュー日: 2004/01/18
投稿数: 39
投稿日時: 2005-04-23 04:04
angelさん、いつもお世話になります。
早速のレスをどうもありがとうございます。

ethereal/tcpdump を使ってもう少し状況を把握します。
何をどう確かめればいいのかも判らなかったので
とても助かります。

Vacuumはやりましたが、効果はありませんでした。

どうもありがとうございます。
Psyduck
常連さん
会議室デビュー日: 2004/01/18
投稿数: 39
投稿日時: 2005-04-28 05:54
解決しました。\(^o^)/
angelさん、どうもありがとうございました。

教えていただいた tcpdump を使って
正常に表示される通常のページと
遅くなってしまったメンバー制のページとで
reload後にどんなパケットが流れているかを比較したところ
arp who-has が、より頻繁に流れていましたので
サーバ上で arpコマンドでキャッシュを見てみると、
これも表示に10秒もかかっている事に気づき
あれこれ見ていて、参照しているDNSが
機能していないことに辿り着きました。ようやく (^^;

そこで、参照するDNSを変えたらarpのレスポンスも瞬時となり
その後 apacheを再起動する事で、問題の現象はなくなりました。

サーバとクライアントマシンで違うDNSを参照していたため
気づくのに時間がかかってしまいました。

お忙しい中いろいろ教えていただきどうもありがとうございました。
とても助かりました。感謝いたします。 m(__)m
1

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