私はCentos 6.3でCactiを使用していますが、サーバーがダウンしたときにその背後にあるプロセスを見つけやすくするために、メモリグラフを使用してメモリを大量に使用する上位10のプロセスのリストを取得したいと思います。
プラグインやテンプレートを使用できますか?
答え1
まず、これらのデータはビジネスで使用するのが難しいです。RRDデータベース。 10個のPID /プロセスが変更されますが、RRDデータソースは静的であるためです。 1〜10までしか録音できませんが、これ以上情報を取得できません。名前/PIDをデータソースにマッピングすることでこの問題を解決できますが、必要な名前をすべて事前に準備する必要があるため、簡単ではありません。あるいは、PIDごとに65536のデータソースを作成できますが、グラフを作成するのは少し面倒です。
次のようにもっと拡張可能なものを試してみる時が来たようです。TSDBを開く
第二に、Linuxで実際のメモリ使用量を監視することは容易ではありません。ps
嘘だLinuxは共有メモリを使用し、プロセス固有のレベルの情報を照会するための単純なインターフェースを提供しません。マシンのメモリパフォーマンスに影響を与えるカーネルメモリとキャッシュもあります。
メモリの問題を強調するのに役立つように追跡できる3つの項目があります。
- 実行ファイルごとの共有とプライベートメモリ
- プロセスごとのプライベートメモリ
- カーネルメモリ
実行ファイルごとの共有とプライベートメモリ
これps_mem.pyスクリプト、これは私が見つけた最高の「既成」推定です。
ノート「これらの価値は以下に基づいています。プログラム、プロセス固有ではない"これは、共有メモリの動作方法とカーネルで実行される計算の副産物です。
プロセスごとのプライベートメモリ
各ファイルのすべての値の合計を計算して、/proc/[0-9]*/smaps
各プロセスの専用メモリを取得できます。プロセス名はまたはから取得できます。Private_Dirty
Private_Clean
/proc/[0-9]*/status
/proc/[0-9]*/stat
メモリ情報
合計メモリ使用量の値は次のものから得られます。/proc/meminfo
MemTotal
MemFree
Buffers
Cached
SwapTotal
SwapFree
AnonPages
Mapped
Dirty
Writeback
Shmem
Slab
KernelStack
PageTables
NFS_Unstable
Bounce
WritebackTmp
/proc/meminfo
これらすべてのデータポイントのみを使用するよりも優れたグラフを作成できるこれらの値から、多くの情報を推論できます。
これら3つの分野では、ほとんどの記憶問題の原因について良いアイデアを得ることができるはずです。
結局、私はLinuxアカウントが割り当てたメモリにまだ「穴」があることを発見しました。穴は仮想→物理メモリマッピングのようです。マシンにメモリが多いほど、穴は大きくなります。
答え2
snmpを使用してprocを使用して監視し、cactiをチャートに出力できるテンプレートがあります。