ホームページ > php教程 > PHP开发 > Linux システムリソース監視コマンドの概要

Linux システムリソース監視コマンドの概要

高洛峰
リリース: 2016-11-16 09:04:55
オリジナル
1525 人が閲覧しました

Linux システムは、CPU、メモリ、ネットワーク カード、ストレージ デバイスなど、いくつかの主要な物理コンポーネントで構成されています。 Linux 環境を効果的に管理するには、各コンポーネントが処理するリソースの数、ボトルネックがあるかどうかなど、これらのリソースのさまざまなメトリクスを妥当な精度で測定できる必要があります。以下では、Linux リソース監視に関連するコマンドをいくつか紹介します。

システムリリースバージョンを表示

root@cf0c6032ba2f:/# lsb_release -a

利用可能なLSBモジュールがありません。

ディストリビューターID: Ubuntu

説明: Ubuntu 14.04.5 LTS

リリース: 14.04

コードネーム: トラスティ

top(cpu)

Cpu​​(s) この行は、現在の CPU 動作に関する情報を提供します:

Cpu​​(s): 11.4%us、29.6%sy、0.0%ni、58.3%id、0.7%wa、0.0 %hi, 0.0%si, 0.0%st

us: エレガントではないユーザー プロセス (エレガントとは英語で「nicing」という意味で、他のプロセスに基づいて優先度を変更できるプロセスを指します) の実行に費やされたユーザーの CPU 時間の割合。プロセス)。

sy: システム CPU 時間 カーネルお​​よびカーネル プロセスの実行に費やされた CPU 時間の割合。

ni: エレガントな CPU 時間 一部のプロセスの優先順位を変更した場合、このインジケーターはそれらが占める CPU 時間の割合を示します。

id: CPU アイドル時間 これは、非常に高い値が必要なメトリクスの 1 つです。 CPUのアイドル時間の割合を表します。システムの動作が遅いにもかかわらず、このメトリックが特に高い場合、問題の原因は高い CPU 負荷ではないと確信できます。

wa: I/O 待機 この数値は、I/O 操作の実行を待機するために費やされた CPU 時間の割合を表します。これが低い場合は、ディスクまたはネットワーク I/O の問題を簡単に除外できるため、遅いシステムのトラブルシューティングを行うときに非常に貴重な指標です。

hi: ハードウェア割り込み CPU がハードウェア割り込みの処理に費やした時間の割合。

si: ソフトウェア割り込み CPU がソフトウェア割り込みの処理に費やした時間の割合。

st: 経過時間 仮想マシンを実行している場合、このメトリクスは、仮想マシンで実行される他のタスクが占める CPU 時間の割合を示します。

CPUの数を確認する

LinuxサーバーのCPUステータスを判断する基準は次のとおりです:

同じコアIDを持つCPUは、同じコアによってハイパースレッドされます。

同じ物理 ID を持つ CPU は、同じ CPU によってカプセル化されたスレッドまたはコアです。

物理 CPU の数を表示するコマンドは次のとおりです:

cat /proc/cpuinfo | grep "uniq" sort | それぞれのコアの数を表示します。物理 CPU (数) コマンドは次のとおりです:

cat /proc/cpuinfo | grep "cpu cores" | uniq
ログイン後にコピー

コマンドの結果は次のとおりです: cpu cores : 1

論理 CPU の数を表示するコマンドは次のとおりです:

cat /proc/cpuinfo | grep "processor" | wc -l
ログイン後にコピー

コマンドの結果は次のとおりです: 4実際、誰もが次の式から始めます。物理 CPU の数 × コアの数 = 論理 CPU の数が等しくない場合、それはサーバーの CPU を意味します。ハイパースレッディングテクノロジーをサポートします。サーバー アプリケーションを構成するときは、サーバー内の論理 CPU の数を基準にする必要があります。

稼働時間 (平均負荷)

システムの応答が非常に遅いと感じることがありますが、その理由が見つからない場合は、平均負荷をチェックして、多数のプロセスが待機しているかどうかを確認する必要があります。列。特定の時間間隔内の実行キュー内のプロセスの平均数は、システムの混雑度を反映している可能性があるため、通常、Web サイトまたはシステムの速度が低下するとすぐにシステムの負荷、つまり CPU の平均負荷をチェックします。 。平均負荷はどのように確認すればよいでしょうか? 最も単純なコマンドは、以下に示す uptime です:

uptime

このコマンドは、次のように結果を表示します:

11:31:11 up 11 days, 19:01, 2 users, load average: 0.02, 0.01, 0.00
ログイン後にコピー

現在の主流のサーバーは、非常に強力な CPU を搭載したデュアル クアッドコアです。一般的なアプリケーションサービスを利用する場合、Linuxシステムへの負荷を気にする必要はありません。

ここで注意する必要があるのは、負荷平均の出力値です。たとえば、システムに 4 つの論理 CPU がある場合、これら 3 つの値のサイズは通常は大きくなりません。この出力で、負荷平均の 3 つの値が 4 より大きい場合は、CPU が非常にビジーで負荷が非常に高いことを意味し、システムのパフォーマンスに影響を与える可能性があります。ただし、4 を超える場合は、使用しないでください。心配しないでください。通常、システムのパフォーマンスには影響しません。逆に、負荷平均の出力値が CPU の数より小さい場合は、CPU がまだアイドル状態であることを意味します。たとえば、この例の出力は、CPU が比較的アイドル状態であることを示しています。

現時点では、vmstat コマンドを使用して、システムがビジー状態であるかどうかを判断できます。非常にビジーであると判断された場合は、サーバーを交換するか CPU の数を増やすかを検討する必要があります。要約は次のとおりです。 r が 3 または 4 より大きいことが多く、id が 50 未満であることが多い場合は、CPU の負荷が高いことを意味します。

top(mem)

Mem: 1024176k total, 997408k used, 26768k free, 85520k buffers  
Swap: 1004052k total, 4360k used, 999692k free, 286040k cached
ログイン後にコピー

行 1 は、使用可能な物理メモリの量、占有されているメモリの量、空きメモリの量、およびキャッシュされているメモリの量を示します。行 2 では、同様の情報、スワップ ストレージ、および Linux ファイル キャッシュによって使用される RAM の量が表示されます。

プロセスが実際に使用している RAM の量を確認するには、RAM 内のファイル キャッシュをクリアする必要があります。サンプルコードでわかるように、使用される RAM 997,408KB のうち、286,040KB の RAM がファイル キャッシュによって占有されているため、実際には 711,368KB の RAM のみが使用されていることになります。 RAM が不足しているかどうかを判断する良い方法は、ファイル キャッシュを確認することです。

如果实际用的内存减去文件缓存的值很大,同时交换存储的值也很高,很可能的确有内存问题。

free -m(内存)

显示的是当前内存的使用情况,m的意思是以M个字节来显示内容,此命令只在Linux系统下有效,在FreeBSD下是没有此命令的。命令显示结果如下所示:

          total  used  free sharedbuffers cached  
Mem: 3949  1397  2551 0268917  
-/+ buffers/cache:211  3737  
Swap:8001 0  8001
ログイン後にコピー

上述结果中各个参数的详细说明如下:

total:内存总数。

used:已经使用的内存数。

free:空闲的内存数。

shared:多个进程共享的内存总额。

buffers buffer cache和cached page cache:磁盘缓存的大小。

-buffers/cache:(已用)的内存数,即used-buffers-cached。

+buffers/cache:(可用)的内存数,即free + buffers + cached。 由此得出结论,可用内存的计算公式为可用内存=free+buffers+cached 即 2551MB+268MB+917MB=3737MB 注意 上面等式两边的数值并不相等,但这个没关系,-m参数其实是以整数数值来取舍的。大家如果对这个运算结果有怀疑,可以尝试不带-m参数来观看free命令显示的结果,这样就会一目了然了。

可见-buffers/cache反映的是被程序实实在在占用的内存,而+buffers/cache反映的是可以挪用的内存总数。

vmstat(io)
ログイン後にコピー

vmstat是一个相当全面的性能分析工具,通过它可以观察系统的进程状态、内存使用情况、虚拟内存的使用情况、磁盘的I/O、中断、上下文切换、CPU的使用情况等性能信息,建议熟练掌握此命令。

procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----

r b  swpd  free  buff cache  si  sobibo  incs us sy id wa

2 0 0 519024 74732 460656800 3 9510 27 5 68 0 2 0 0 519664 74732 460656800 0 0 1847 1244 20 17 63 0 1 0 0 517296 74732 460656800 0  284 2092 1617 37 17 47 0 3 0 0 515440 74732 460656800 0  164 1620  718 26 17 57 0

其中:

(1)procs r:等待运行的进程数。 b:处于非中断睡眠状态的进程数。

(2)memory swpd:虚拟内存使用情况(单位:KB)。 free:空闲的内存(单位:KB)。 buff:被用来作为缓存的内存数量(单位:KB)。

(3)swap si:从磁盘交换到内存的交换页数量(单位:KB/s)。 so:从内存交换到磁盘的交换页数量(单位:KB/s)。

(4)io bi:发送到块设备的块数(单位:块/秒)。 bo:从块设备接收到的块数(单位:块/秒)。

(5)system in:每秒的中断数,包括时钟中断。 cs:每秒的环境(上下文)切换次数。 (6)cpu 按CPU的总使用百分比来显示。 us:CPU使用时间。 sy:CPU系统使用时间。 id:闲置时间。

标准情况下r和b值应该为:r<5,b≈0。 如果user%+sys%<70%则表示系统性能较好,如果user%+sys%>=85%或以上,这表示系统性能比较糟糕,这时就要对系统进行全方面检查了。其中: user%表示CPU处在用户模式下的时间百分比。 sys%表示CPU处在系统模式下的时间百分比。

ps auxf(进程)

要查看系统中用户正在运行的所有进程,可以在ps命令后面使用以下选项:

a(表示所有用户)

u(以面向用户的格式显示,或显示拥有每个进程的用户)

x(没有控制tty或终端屏幕的进程,“显示每个进程”的另一种方法)

ps aux
ログイン後にコピー

请注意"ps -aux"不同于"ps aux"。POSIX和UNIX的标准要求"ps -aux"打印用户名为"x"的用户的所有进程,以及打印所有将由-a选项选择的过程。如果用户名为"x"不存在,ps的将会解释为"ps aux",而且会打印一个警告。这种行为是为了帮助转换旧脚本和习惯。它是脆弱的,即将更改,因此不应依赖。

要查看进程树,除了使用上一节用过的a、u和x选项,还要加上个f(其名称源于ASCII art forest)选项。

ps auxf
ログイン後にコピー

ps -ef(进程)

ps aux是用BSD格式来显示结果.ps -ef是用全格式的System V格式,显示出来就是带全路径的进程名.

一个影响使用的区别是aux会截断command列,而-ef不会。因此当需要结合grep的时候,优先选择-ef命令,避免误判

netstat(网络)

netstat命令的功能是显示网络连接、路由表和网络接口的信息,可以让用户得知目前都有哪些网络连接正在运作。 下面是它的重要参数,以及详细的说明:

-A:显示任何关联的协议控制块的地址。主要用于调试。

-a:显示所有套接字的状态。在一般情况下不显示与服务器进程相关联的套接字。

-i:显示自动配置接口的状态。那些在系统初始引导后配置的接口状态不在输出之列。

-m:打印网络存储器的使用情况。

-n:打印实际地址,而不是对地址的解释或显示主机、网络名之类的符号。

-r:打印路由选择表。

-f address:family会对于给出名字的地址簇打印统计数字和控制块信息。到目前为止,它唯一支持的地址簇是inet。

-I interface:表示只打印给出名字的接口状态。

-p protocol-name:表示只打印给出名字的协议的统计数字和协议控制块信息。

-s:打印每个协议的统计数字。

-t:表示在输出显示中用时间信息代替队列长度信息。

我们用得最多的,也是最习惯的参数有两个,即netstat-an,如下所示:

netstat -an | grep –v unix
ログイン後にコピー

lsof(文件)

lsof(list open files)是一个列出当前系统打开文件的工具。在UNIX环境下,任何事物都是以文件的形式存在的,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以像传输控制协议(TCP)和用户数据报协议(UDP)套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符都会为应用程序与基础操作系统之间的交互提供通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序的信息,因此通过lsof工具查看这个列表对系统监测,以及排错非常有帮助。顺便提一下,这工具首先出现在UNIX系统中,后才移植到Linux平台下。

工作中用得最多的是-i参数,可以用它来查看特定端口的情况,比如,我可以用lsof -i:22查看22端口是由哪些程序占用的。

fdisk -l(硬盘分区)

查看硬盘及分区信息,如下所示: fdisk –l 命令显示结果如下:

Disk /dev/sda: 160.0 GB, 160040803840 bytes 255 heads, 63 sectors/track, 19457 cylinders Units = cylinders of 16065 512 = 8225280 bytes   Device Boot Start End Blocks  Id System /dev/sda1    1 13 104391  83 Linux / /dev/sda2 14320025599577+ 83 Linux /dev/sda332013582 3068415  82 Linux swap / Solaris /dev/sda43583  19457  127515937+  5 Extended /dev/sda53583  19457  127515906  83 Linux

以上结果表明这是一块160GB的服务器硬盘。

df(硬盘空间)

检查文件系统的磁盘空间占用情况,命令如下所示:

df –h 命令显示结果如下:

FilesystemSize Used Avail Use% Mounted on /dev/sda2 24G 5.9G  17G 26% /

/dev/sda5 118G 8.8G 103G  8% /data

/dev/sda1 99M  20M  75M 21% /boot

tmpfs 859M 0 859M  0% /dev/shm

du(目录大小)

查看Linux系统中某目录的大小,这在工作中经常会遇到。可以使用如下命令查看:

du -sh 目录名
ログイン後にコピー

例如du -sh /data 命令显示结果如下所示: 8.6G /data/ 检查是否有分区使用率(Use%)过高(比如超过90%),如发现某个分区空间接近用完,可以进入该分区的挂载点,用以下命令找出占用空间最多的文件或目录,然后按照从大到小的顺序,正好可以找出系统中占用最多空间的前十个文件或目录:

du -sh * | sort -hr | head -n 10
ログイン後にコピー

doc

ps aux 和ps -aux和 ps -ef的选择


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート