- - PR -
apacheが遅い原因(libhttpd.ep?)
投稿者 | 投稿内容 | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-06-14 19:10
私としてもあんまり分かっていないので、かなり当てずっぽうで
言ってしまってるところはあるのですが...
その線も確認しておいたほうがいいような感じですねえ。 どんなプロセスが動いているのか?なにか余計なことをしていないか?
ん〜と、データ全体じゃなくて、「ふだんアクセスされるデータ」が 増えていないか、ということです。でもその線は薄そうなのかな?
ふむふむ。アクセス数が多過ぎて遅くなるということが過去にあった、 ということでいいですかね。
ログは見ていないのでしょうか?アクセス数に変化は? 単純に「アクセス過多でメモリを使い切った」ということも ありそうな...
OSを再起動したほうがよいかもです。 仮に、ダンプしてtarしているのが重くなる「きっかけ」になって いるのだとすると、その後、OSのメモリ管理がうまく行かなくて 残すべきメモリページと捨てるべきメモリページとの判定がうまく 働かなくなって、やらなくていいスワップをやってしまうように なっている、という可能性もあるかもしれないので。 ・・・でも、あまり期待できなさそうな... まず、「どんなプロセスが動いているのか把握すること」と、 「ログの確認」ですかねえ。 [ メッセージ編集済み 編集者: ぽんす 編集日時 2005-06-14 19:15 ] | ||||||||||||||||||||
|
投稿日時: 2005-06-14 19:33
いろいろアドバイスありがとうございます!
まずは明日の結果を見て、即こちらにご報告させていただきたいと思います。 | ||||||||||||||||||||
|
投稿日時: 2005-06-15 09:55
私もLinuxのメモリ管理機構についてはよく分かっていないことがあるので、ついでに教えていただければと思うのですが、
free + buffer + cacheのメモリ量が空きメモリとの認識ですが、ここに提示されているvmstatの結果によりますと、これらの合計は1GB近くもあります。それでいながら、swapが多発しているようです。Solarisなどではこのようなことは起こっていないようですので、散々ディスクキャッシュにメモリを使用しておきながらメモリがないとしてswapするLinuxのメモリ管理機構がよく分かりません。 もし、この辺に詳しい方がいらっしゃれば教えていただけると幸いです。 | ||||||||||||||||||||
|
投稿日時: 2005-06-15 10:13
お世話になります。
先日例のshellスクリプトをcronから削除しましたところ、何とサクサク動きました。朝から非常に快適でした。 下記はcronで実行していたスクリプトですが、まずい点があればご指摘願います。 #!/bin/sh # backup.sh # 2003.08.02 McLaren # PGCMDPATH="/usr/local/pgsql/bin/" BKPATH="/usr/local/Data/app_dev/databk/" DATED=`date +%d` DATEW=`date +%w` MYDBFILE="${BKPATH}mydb" DATAFILE="${BKPATH}data" APPPATH="/usr/local/apache/htdocs/ni/" DAT="/root/shells/backup.sftp" SSHSERVER="root@webbkserver" # # function # ExecBackup() { # Set backup.sftp _SNM=$1 echo "put ${MYDBFILE}.dump ${MYDBFILE}_${_SNM}.dump" >> $DAT echo "put ${DATAFILE}.tar.gz ${DATAFILE}_${_SNM}.tar.gz" >> $DAT } # # vacuum db # if [ -x ${PGCMDPATH}vacuumdb ] then su - postgres -c "${PGCMDPATH}vacuumdb -z mydb > ${BKPATH}vacuumdb.log" fi # # dump db # if [ -x ${PGCMDPATH}pg_dump ] then su - postgres -c "${PGCMDPATH}pg_dump mydb > ${MYDBFILE}.dump" fi # tar czvf ${DATAFILE}.tar.gz ${APPPATH}app/data # # ExecBackup # rm -f $DAT echo "cd $BKPATH" > $DAT # # Dayly Backup # ExecBackup d # # Mouthly Backup on 5th day # if [ $DATED = 05 ] then ExecBackup m fi # # Weekly Backup on Sunday # if [ $DATEW = 0 ] then ExecBackup w fi # # Sftp # sftp -b $DAT $SSHSERVER # exit 0 # end of script [ メッセージ編集済み 編集者: McLaren 編集日時 2005-06-16 12:28 ] | ||||||||||||||||||||
|
投稿日時: 2005-06-15 11:39
おはようございます。
Linux V2.4 カーネル内部解析報告 ドラフトのページ開放処理詳細はいかがでしょうか? 私も詳しく理解できているとは思っていないのですが、このようなイメージを持っています。 (1) 再利用のことを考え、キャッシュは簡単に開放しない (2) (1)の戦略により、利用頻度の低いページは「優先度低」と印をつけるのみ (3) (2)においてダーティなページは、いざ開放する時に楽ができるよう、スワップおよびスワップキャッシュに移す (4) 本当にヤバくなったら、実行中のプロセスのページもどしどしスワップアウトする(これがスラッシング) 今回のような、実メモリの3〜4%程度のスワップは、(3)の戦略によるもので、致命的ではないと捕らえています。 キャッシュを開放せずにスワップとはこれいかに? という疑問については、 ・開放したページ(ファイル)が欲しくなったときに、またディスクから読み直すというペナルティと、スワップアウトしたページがスワップキャッシュからも失われた状態で必要となり、スワップインを行うというペナルティとの比較。 ※スワップキャッシュに残っていれば、スワップインのペナルティはない。 ・急激にメモリ不足が発生した時に一気にスワップアウトを行うリスクを残して、普段は全くスワップを使用しないか、普段から多少のI/O負荷は覚悟して、予め優先度の低いページを徐々にスワップアウトさせておく(しかしスワップキャッシュには残る)か。 ※時間軸で見たI/Oの分散 を考慮すると、少量であれば害は無いと思っています。 以上、ご参考まで。 ※私も定性的・定量的に確信が持てない所なので、他の方の意見も是非聴きたい… [ メッセージ編集済み 編集者: angel 編集日時 2005-06-15 11:51 ] | ||||||||||||||||||||
|
投稿日時: 2005-06-15 12:24
昨日 「実験しようと思います」 とおっしゃっていた内容と、だいぶ違いますね… # プロセスやログの状態も分かりませんし… shellスクリプトに書いてある内容(vacuum やらバックアップやら)は、今朝はまったく実施していない、という認識でよろしいですか? _________________ はゆる Smile, Smiles make me happy. | ||||||||||||||||||||
|
投稿日時: 2005-06-15 12:28
どうも、こんにちわ。
私の場合、ソース及び文献などによる裏づけがなく 自分で使っていた時の経験というか感想的な物になります。 RH9を使っていてメモリの開放タイミングについてふと思ったことがあります。 どのファイルをメモリに残しておくかということですが これは、容量と使用頻度でやっているのでは?と思いました。 バックアップの際にメモリを確保する。 で、そのあとのSQLを使っているページにアクセスした際に容量的にバックアップデータの方が優先度が高くなっている。 で、SQLを使っているページに対して一定のアクセスがあり、使用頻度の面か容量の面でバックアップデータより優先度が高くなった。 その時点で、SQLをつかってるページのアクセス速度が元にもどる。 それが、今回では朝の10時頃だった。と、思います。 解決策としては、バックアップが終わった時点でリスタート(メモリ開放)をかけるか メモリ増設。かな。 以上、参考になれば幸いです^^ | ||||||||||||||||||||
|
投稿日時: 2005-06-15 12:31
うまく行ってよかったですね。やや意外ですが。 この結果からすると、ダンプしてtarするところでメモリが足りなくなったのが きっかけで、カーネルのメモリ管理がうまく行かなくなった、ということに なるかと思います。 対策案: 1. sftpが終わったところでOSを再起動する 2. カーネルをアップデートしてみる。効果があるかどうか、??? 3. ダンプをバックアップ機に書き出す(そもそも可能なのかどうか知りませんが) 4. tarの処理をバックアップ機のほうで行う こんなところでしょうか。 |