- PR -

apacheが遅い原因(libhttpd.ep?)

投稿者投稿内容
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2005-06-10 09:36
 いつもお世話になっております。
RH9+Apache1.3.33+PHP4.2.2+Postgres7.2.1
でwebサーバーを立てております初心者です。

サーバーは何も触っておらず、それまでは超快適に動いていたのですが、GWから突然Webコンテンツのロードに時間がかかるようになりました。それも朝方5時から9時くらいまでだけ強烈に遅いのです。確かにアクセスが集中する時間帯なのですが、この日をさかいにクライアントが増えたことも変わったことも何もありません。

速度が通常に戻ってくる9時半頃に ps ax してみてもlibhttpd.epの消費時間は一向に減らず、相変わらずswapされっぱなしです。

メモリを食って、解放しないやつの正体が知りたいのですが、どう調べればよいでしょうか。。
何卒ご教授の程よろしくお願いします。


=======================================================
# ps ax
PID TTY STAT TIME COMMAND
1 ? S 0:03 init
2 ? SW 0:00 [keventd]
3 ? SW 0:00 [kapmd]
4 ? SWN 0:00 [ksoftirqd_CPU0]
9 ? SW 0:00 [bdflush]
5 ? SW 0:02 [kswapd]
6 ? SW 0:00 [kscand/DMA]
7 ? SW 2:43 [kscand/Normal]
8 ? SW 0:00 [kscand/HighMem]
10 ? SW 0:00 [kupdated]
11 ? SW 0:00 [mdrecoveryd]
15 ? SW 0:06 [kjournald]
72 ? SW 0:00 [khubd]
3568 ? SW 0:00 [kjournald]
3569 ? SW 0:13 [kjournald]
3862 ? S 0:00 syslogd -m 0
3866 ? S 0:00 klogd -x
3944 ? S 0:00 /usr/sbin/sshd
3958 ? S 0:00 xinetd -stayalive -reuse -pidfile /var/run/xinetd.pid
3967 ? S 0:00 gpm -t imps2 -m /dev/mouse
3978 ? SW 0:00 [jserver]
3987 ? S 0:00 [cannaserver]
3998 ? S 0:00 crond
4009 ? S 0:00 cupsd
4073 ? S 0:00 [xfs]
4127 ? S 0:05 /usr/local/pgsql/bin/postmaster -S -i
4128 ? S 0:00 postgres: stats buffer process
4129 ? S 0:00 postgres: stats collector process
4131 ? S 0:00 /usr/local/apache/bin/httpd
4132 tty1 S 0:00 /sbin/mingetty tty1
4133 tty2 S 0:00 /sbin/mingetty tty2
4134 tty3 S 0:00 /sbin/mingetty tty3
4135 tty4 S 0:00 /sbin/mingetty tty4
4136 tty5 S 0:00 /sbin/mingetty tty5
4137 tty6 S 0:00 /sbin/mingetty tty6
4138 ? S 1:43 [libhttpd.ep]
4139 ? S 2:19 [libhttpd.ep]
4140 ? S 2:00 [libhttpd.ep]
4141 ? S 1:55 [libhttpd.ep]
4142 ? S 2:04 [libhttpd.ep]
4143 ? S 1:44 [libhttpd.ep]
4146 ? S 1:53 [libhttpd.ep]
4147 ? S 1:43 [libhttpd.ep]
4150 ? S 1:51 [libhttpd.ep]
4153 ? S 1:46 [libhttpd.ep]
2016 ? S 0:04 [libhttpd.ep]
2027 ? S 0:02 [libhttpd.ep]
2249 ? S 0:00 /usr/sbin/sshd
2259 pts/0 S 0:00 -bash
3580 ? R 0:00 postgres: nobody nidb [local] idle
3581 pts/0 R 0:00 ps ax

# free
total used free shared buffers cached
Mem: 1030404 1018036 12368 0 106628 827680
-/+ buffers/cache: 83728 946676
Swap: 2040244 30680 2009564

# vmstat
procs memory swap io system cpu
r b w swpd free buff cache si so bi bo in cs us sy id
1 0 0 30684 9996 106580 827480 1 3 49 5 26 205 5 1 94

hohojp
常連さん
会議室デビュー日: 2005/02/15
投稿数: 31
投稿日時: 2005-06-10 10:14
「ps aux」で、CPUやメモリの消費容量はどうでしょうか?
スワップするようなことが続くようであれば、メモリ消費量のところが、どこか突出し
ていると思うのですが。

その時間帯で、CRONで回しているものとかありませんか?

あと、ずっと前ですが、そんな現象が起きたときが、私もありまして。。。多分、
McLarenさんには当てはまらないと思いますが。。。私の場合は、調子が悪いなと思って
いましたら、HDDが故障していまして、そんな現象がでて1週間ぐらいで壊れました。
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2005-06-10 11:12
 今はおちついている時間帯で、普通に動いているのですが、やはり
[kscand/Normal]

[libhttpd.ep]

使いっぱなしになるのです・・・

 もちろんこれを機に新マシンでメモリを2G積んで(今は1G)RH9をやめて最新のVine3.1にして仕切りなおそうと思っているのですが、やはり原因だけは突き止めたいと思い、ご質問させていただきました。

%CPU
の値は下記の通りです。

 また、cronでは夜中2時からpg_dumpをしてそれをtarで圧縮してbackupサーバーにsftpをしておりますが、backupサーバーのファイル更新日時を見ると、朝4時頃には終わっております。

 は!これはsftpでコピーし終わった時刻ではないのでしょうか・・・ 

# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 1364 56 ? S Jun08 0:03 init
root 2 0.0 0.0 0 0 ? SW Jun08 0:00 [keventd]
root 3 0.0 0.0 0 0 ? SW Jun08 0:00 [kapmd]
root 4 0.0 0.0 0 0 ? SWN Jun08 0:00 [ksoftirqd_CPU0]
root 9 0.0 0.0 0 0 ? SW Jun08 0:00 [bdflush]
root 5 0.0 0.0 0 0 ? SW Jun08 0:02 [kswapd]
root 6 0.0 0.0 0 0 ? SW Jun08 0:00 [kscand/DMA]
root 7 0.0 0.0 0 0 ? SW Jun08 2:48 [kscand/Normal]
root 8 0.0 0.0 0 0 ? SW Jun08 0:00 [kscand/HighMem]
root 10 0.0 0.0 0 0 ? SW Jun08 0:00 [kupdated]
root 11 0.0 0.0 0 0 ? SW Jun08 0:00 [mdrecoveryd]
root 15 0.0 0.0 0 0 ? RW Jun08 0:06 [kjournald]
root 72 0.0 0.0 0 0 ? SW Jun08 0:00 [khubd]
root 3568 0.0 0.0 0 0 ? SW Jun08 0:00 [kjournald]
root 3569 0.0 0.0 0 0 ? SW Jun08 0:13 [kjournald]
root 3862 0.0 0.0 1536 136 ? S Jun08 0:00 syslogd -m 0
root 3866 0.0 0.0 1368 4 ? S Jun08 0:00 klogd -x
root 3944 0.0 0.0 3508 24 ? S Jun08 0:00 /usr/sbin/sshd
root 3958 0.0 0.0 2020 4 ? S Jun08 0:00 xinetd -stayalive
root 3967 0.0 0.0 1408 12 ? S Jun08 0:00 gpm -t imps2 -m /
wnn 3978 0.0 0.0 5160 0 ? SW Jun08 0:00 [jserver]
bin 3987 0.0 0.0 2004 44 ? S Jun08 0:00 [cannaserver]
root 3998 0.0 0.0 1428 116 ? S Jun08 0:00 crond
root 4009 0.0 0.0 7508 312 ? S Jun08 0:00 cupsd
xfs 4073 0.0 0.0 4972 56 ? S Jun08 0:00 [xfs]
postgres 4127 0.0 0.0 6376 188 ? S Jun08 0:05 /usr/local/pgsql/
postgres 4128 0.0 0.0 7364 172 ? S Jun08 0:01 postgres: stats b
postgres 4129 0.0 0.0 6404 196 ? S Jun08 0:00 postgres: stats c
root 4131 0.0 0.0 5144 108 ? S Jun08 0:00 /usr/local/apache
root 4132 0.0 0.0 1348 4 tty1 S Jun08 0:00 /sbin/mingetty tt
root 4133 0.0 0.0 1348 4 tty2 S Jun08 0:00 /sbin/mingetty tt
root 4134 0.0 0.0 1348 4 tty3 S Jun08 0:00 /sbin/mingetty tt
root 4135 0.0 0.0 1348 4 tty4 S Jun08 0:00 /sbin/mingetty tt
root 4136 0.0 0.0 1348 4 tty5 S Jun08 0:00 /sbin/mingetty tt
root 4137 0.0 0.0 1348 4 tty6 S Jun08 0:00 /sbin/mingetty tt
nobody 4138 0.0 0.4 6840 4128 ? S Jun08 1:54 [libhttpd.ep]
nobody 4139 0.0 0.4 6844 4132 ? S Jun08 2:30 [libhttpd.ep]
nobody 4140 0.0 0.3 6984 4100 ? S Jun08 2:13 [libhttpd.ep]
nobody 4141 0.0 0.4 6996 4268 ? R Jun08 2:08 [libhttpd.ep]
nobody 4142 0.0 0.4 7608 4348 ? S Jun08 2:16 [libhttpd.ep]
nobody 4143 0.0 0.3 6704 3652 ? S Jun08 1:56 [libhttpd.ep]
nobody 4146 0.0 0.4 7168 4404 ? S Jun08 2:05 [libhttpd.ep]
nobody 4147 0.0 0.3 6764 3756 ? S Jun08 1:53 [libhttpd.ep]
nobody 4150 0.0 0.4 6928 4184 ? S Jun08 2:00 [libhttpd.ep]
nobody 4153 0.0 0.3 6732 3924 ? S Jun08 1:57 [libhttpd.ep]
root 2249 0.0 0.0 6804 520 ? S 07:54 0:00 /usr/sbin/sshd
root 2259 0.0 0.0 5344 776 pts/0 S 07:54 0:00 -bash
postgres 6799 0.0 0.2 6936 2756 ? S 10:56 0:00 postgres: userdev
postgres 6805 0.0 0.2 6848 2380 ? S 10:57 0:00 postgres: nobody
root 6806 0.0 0.0 2648 700 pts/0 R 10:57 0:00 ps aux
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-06-10 11:27
こんにちは。

メモリやCPUの使用量を見るのであれば、top もお奨めです。cron ジョブ等に組み込むなら、“-b”オプションが良いです。
リアルタイムに top を動作させているなら、各使用量毎のソートもできます。
※ たしか M でメモリ使用量でのソート … 詳しくは top 実行中に ? を。

あと、少しツッコミなのですが、引数無し vmstat の出力は、マシン起動時からの平均値ですから、インタバル等の引数をつけて、2行目以降のリアルタイムの数値も見た方が良いですよ。( “vmstat 1 2” とか、“vmstat 2”とか… )

…で、free の出力を見る限りでは、1GB のメモリに対して 30MB のスワップ使用は、特に問題ないと思いますが…。問題発生時のスワップ使用量はどうでしょうか。
ps の出力結果からも kscand と libhttpd.ep が元凶かどうかは判断し辛いですし。
※ トータルCPU時間ではなく、問題発生時のCPU使用率で見た方が良いと思いますよ。

以上、ご参考まで。
たろちゃん
会議室デビュー日: 2005/06/10
投稿数: 3
投稿日時: 2005-06-10 12:07
はじめまして。

提供された情報からですと、特に問題ないと思われます。
Linux系の free コマンドによるメモリの空き容量は、
free + buffers + cached になります。
つまり、ディスクの入出力を軽減するために、
バッファ、キャッシュをかなり使用するものです。

スワップ領域はメモリ容量に関係なく使用されるものですので、
むしろ、安定したスワップ使用が確認されるのであれば、
正しくシステムが稼動していると考えられるのではないでしょうか?

もし特定プロセス (httpd?) のメモリ使用量に問題があるのでしたら、
httpd.conf の MaxRequestsPerChild あたりを疑ってみてもいいかもしれませんね。

以上の内容がはずしていましたら、すいません。

ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2005-06-10 12:50
引用:

McLarenさんの書き込み (2005-06-10 09:36) より:
速度が通常に戻ってくる9時半頃に ps ax してみてもlibhttpd.epの消費時間は一向に減らず、相変わらずswapされっぱなしです。


時間はプロセス起動以来の積算ですので、減ることはありません。
swapアウトされたままということは、動かなくてもいい・必要とされていない、
ということになりますが...

引用:

# free
total used free shared buffers cached
Mem: 1030404 1018036 12368 0 106628 827680
-/+ buffers/cache: 83728 946676
Swap: 2040244 30680 2009564


とりあえず、ファイルキャッシュの使用量が目立ちますね。
「設計時の予想以上に多い」のか「予定通りの動作」なのか、
これだけではなんともわかりませんが。

スワップを使っていいかどうかという点については...
パフォーマンスを問題とする場合、少量でも使ってしまったら負け、
という見方もアリです。

引用:

 また、cronでは夜中2時からpg_dumpをしてそれをtarで圧縮して


これまでの情報から考えると、これが原因でしょうね。
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2005-06-10 13:59
 ご返信ありがとうございます。

引用:

引用:
--------------------------------------------------------------------------------


 また、cronでは夜中2時からpg_dumpをしてそれをtarで圧縮して

--------------------------------------------------------------------------------


これまでの情報から考えると、これが原因でしょうね。


例えばsftpのshellスクリプトの最後でapacheをrestartしてみて朝のパフォーマンスが回復すれば、これが原因と考えられますでしょうか。もしくは思い切ってサーバー再起動でもいいです。
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-06-10 14:20
そういえば…。

PostgreSQL を使っているのであれば、定期的な vacuum ってのもありましたね…。

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