私のウェブサイトは一日の特定の時間に非常に遅いので、原因を探しています。現在、Apacheのメモリ使用量を研究しており、現在使用されているRAMの量を知らせる2つのツールがあります。
Apache 2コンパニオン:
curl -sL https://raw.githubusercontent.com/richardforth/apache2buddy/master/apache2buddy.pl | perl
返品:
apache2 is currently using 8849.18 MB of memory.
その後、使用するコマンドがありますps
。
ps -ylC apache2 --sort:rss | awk '{sum+=$8; ++n} END {print "Tot="sum"("n")";print "Avg="sum"/"n"="sum/n/1024"MB"}'
返品:
Tot=9047860(258)
Avg=9047860/258=34.2473MB
したがって、この行に基づいて、Apache2は約9GBのRAMを使用しており、これはApache2Buddyの結果と一致します。
しかし、これを実行すると、htop
私が得るものは次のようになります。
総メモリ使用量は2.7GBに過ぎないようです。結果の違いはなぜそんなに大きいのですか?
答え1
常駐サイズには共有ページが含まれます。これには共有ライブラリ(この場合はapache2
バイナリ自体)が含まれます。使用しているツールはすべての共有メモリをプロセスごとに1回カウントしますが、物理メモリでは1回しか表示されないため、常駐サイズを追加すると予想されるよりもはるかに少なくなります。
プロセスの実際のメモリ使用量をよりよく理解するには、/proc/<pid>/smaps
ここで説明されている各セクションを調べて値を比較するRss
必要がありますShared_...
。カーネルは、各プロセスのRSS共有(図を参照)を計算して、関心のある計算を実行するのに役立ちますPss
。