打开/关闭搜索
搜索
打开/关闭菜单
60
773
73
2331
md5.pw
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
上传文件
打开/关闭外观设置菜单
通知
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。
user-interface-preferences
个人工具
登录
请求账号
查看“︁VPS 资源监控基础与异常排查(CPU/RAM/磁盘/网络使用及异常检测)全指南”︁的源代码
来自md5.pw
分享此页面
更多语言
查看
阅读
查看源代码
查看历史
associated-pages
页面
讨论
更多操作
←
VPS 资源监控基础与异常排查(CPU/RAM/磁盘/网络使用及异常检测)全指南
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
不知道你平时有没有遇到这种情况:当你的 VPS 成功开机并部署了几个 Docker 容器后,网站突然打不开了?SSH 敲击键盘感觉非常卡顿?一键脚本执行到一半就卡死报错了? 大多数时候,这些问题并不是因为你的配置写错了,而是服务器的硬件资源(CPU、内存、磁盘、网络)耗尽了。 我们购买的这种 linux 服务器是没有显示器的,它无法像 Windows 电脑那样弹出一个“内存不足”的警告框。作为一个合格的 VPS 用户,你必须学会使用命令行工具,查看这台机器的内部运行状态。这篇文章将用最直白的操作和命令,教你如何建立一套完整的资源监控与排错逻辑。 ---- == 一、 监控利器准备:安装必备工具包 == 大多数纯净版的 Linux 系统只自带了最基础的 <code>top</code> 命令,界面简陋且不直观。在开始排查之前,我们先安装一套现代化的资源监控工具包。 通过 SSH 连接到你的服务器,执行以下命令(以 Ubuntu/Debian 为例): apt update apt '''install''' htop iotop nethogs nload vnstat -y</code> [[File:Imageziyuan1.png|center|thumb|1005x1005px]] 这五个软件分别对应了:综合资源看板、磁盘 I/O 监控、进程网络监控、实时网速看板、历史流量统计。接下来,我们将逐一使用它们。 ---- == 二、 CPU 监控与异常排查 == CPU 是服务器的大脑。如果 CPU 长期满载,系统所有的响应都会变慢。 == 1. 使用 htop 查看全局状态 == 在终端输入 <code>htop</code> 并回车。 你会看到一个彩色的交互式界面。屏幕左上角的横条代表了你的 CPU 核心数(例如 <code>0</code> 和 <code>1</code> 代表双核)。横条内部不同颜色的填充代表了不同的 CPU 消耗类型。 [[File:Imageziyuan2.png|center|thumb|1015x1015px]] == 2. 核心指标解析:Load Average(平均负载) == 在 <code>htop</code> 界面的右上角,或者直接在终端输入 <code>uptime</code> 命令,你会看到三个数字,比如: <code>Load average: 1.25 0.80 0.50</code> [[File:Imageziyuan3.png|center|thumb|926x926px]] 这三个数字分别代表系统在 过去 1 分钟、5 分钟、15 分钟 的平均负载。 * 如何判断是否过载? 负载的健康阈值取决于你的 CPU 核心数。如果你的 VPS 是 1 核,那么负载达到 1.0 就说明 CPU 已经满负荷运转了;如果是 2 核,负载达到 2.0 才是满负荷。 * 异常表现: 如果 1 分钟的负载高达 5.0,而你的机器只有 1 个核心,说明有大量的任务在排队等待 CPU 处理,系统现在处于极度卡顿的状态。 == 3. CPU 异常情况与排查策略 == * 情况 A:某个陌生进程占用 100% CPU 在 <code>htop</code> 界面下方是进程列表,按键盘的 <code>P</code> 键可以按 CPU 占用率对进程进行排序。如果你发现一个你不认识的名字(比如一段随机字母的程序)长期占用 90% 以上的 CPU,极大概率是你的服务器被黑客入侵,并植入了挖矿木马。 处理方法: 记录下该进程的 PID(进程号),选中它并按 <code>F9</code> 键,选择 <code>SIGKILL</code> 强制结束它。随后必须立刻排查防火墙规则和木马文件。 * 情况 B:Steal Time(被窃取的时间)过高 如果你使用传统的 <code>top</code> 命令,注意观察 CPU 状态行中的 <code>%st</code>(Steal Time)指标。 VPS 是多台虚拟服务器共享一台物理母机的 CPU。如果母机上其他的 VPS 邻居疯狂占用 CPU,导致物理机无法分出算力给你,你的 <code>%st</code> 数值就会飙升(比如大于 10%)。 处理方法: 这是服务商母机超售或邻居折腾导致的。你自己在系统内无法解决,只能提交工单要求客服协助调查或者更换节点。 ---- == 三、 RAM (内存) 监控与 OOM 异常 == 内存耗尽是导致 VPS 突然崩溃、SSH 断开连接的最头号元凶。 == 1. 正确阅读内存指标 == 很多新手看到面板上显示内存快满了,就非常恐慌。其实 Linux 的内存管理机制和 Windows 完全不同。退出 <code>htop</code>,在终端输入以下命令: '''free -h'''</code> 屏幕上会输出类似下面的表格: [[File:Imageziyuan4.png|center|thumb|1006x1006px]] '''total''' used free shared buff/cache available '''Mem''': 1.9Gi 400Mi 100Mi 10Mi 1.4Gi 1.3Gi '''Swap''': 0B 0B 0B</code> * total(总内存): 你的 VPS 物理内存总量。 * used(已使用): 应用程序真正占用的内存。 * free(完全空闲): 还没有被系统触碰过的内存。(在 Linux 中,free 的数值小是非常正常的) * buff/cache(缓存): Linux 系统的原则是“闲置的内存就是浪费”。它会把经常读取的硬盘文件塞进内存里当缓存,以加快下次读取速度。当程序真正需要内存时,这部分缓存会立刻释放。 * available(可用内存):这是你唯一需要关心的核心指标。 它代表了你的系统目前还能腾出多少内存给新的程序使用。只要 <code>available</code> 还有余量,系统就完全健康。 == 2. 内存异常情况与排查策略 == * 异常情况:OOM (Out of Memory) 现象 当 <code>available</code> 内存彻底耗尽,且没有设置 Swap(虚拟内存)时,Linux 内核为了自保,会触发 OOM Killer 机制。系统会冷酷无情地直接杀掉那个占用内存最大的进程。 表现形式:你部署的数据库突然停了,或者你的监控面板自己退出了,没有任何错误提示。 * 如何确认是否发生了 OOM? 执行以下命令查看系统底层日志: dmesg -T | grep -i 'out of memory'</code> 如果输出了包含 <code>Killed process</code> 的日志,说明你的程序确实因为内存不足被系统强杀了。 处理方法: 优化你的程序配置(比如降低数据库的缓存池大小),或者在系统中添加一部分 Swap 虚拟内存作为缓冲。 ---- == 四、 磁盘空间与 I/O 监控 == 磁盘问题通常分为两类:空间塞满(没地方存数据了)和 I/O 拥堵(读写速度太慢卡住了)。 == 1. 查找是谁吃光了硬盘空间 == 执行基础命令查看各个分区的总空间使用率: df -h</code> [[File:Imageziyua5.png|center|thumb|1013x1013px]] 如果看到挂载点为 <code>/</code>(根目录)的使用率达到了 100%,你的系统将会出现各种极其诡异的报错,比如无法写入数据库、Tab 键无法自动补全等。 如何揪出占用空间的大文件? 很多时候是由于 Docker 容器产生的日志没有被限制,导致把硬盘撑爆了。使用以下组合命令,可以快速列出当前目录下最大的几个文件或文件夹: cd / du -sh * | sort -rh | head -10</code> 如果你发现 <code>/var/lib/docker</code> 目录占据了几十 GB,可以清理一下对应的 Docker 日志。 == 2. 监控磁盘 I/O 拥堵 == 有时候你的 CPU 负载很高,但你看 <code>htop</code> 里并没有程序在占用 CPU 算力。这通常是因为大量的进程在等待硬盘读写数据(I/O Wait)。机械硬盘或劣质的 SSD 很容易出现这个问题。 输入我们在第一步安装的命令: '''iotop'''</code> 这就像是一个专门针对硬盘的 <code>htop</code>。你可以清楚地看到当前到底是哪个程序在疯狂读取或写入硬盘。如果长时间有很多程序处于 <code>IO></code> 状态,说明硬盘性能已经成为这台 VPS 的瓶颈。 [[File:Imageziyuan6.png|center|thumb|1035x1035px]] ---- == 五、 网络流量监控与异常检测 == 搞清楚机器上的流量都去哪儿了,对于购买了“按流量计费”套餐的玩家来说至关重要。 == 1. 实时网速监控 == 想知道当前这一秒钟,服务器的下载和上传速度是多少?输入: '''nload'''</code> 界面上方是入站流量(Incoming,比如你向服务器上传文件),下方是出站流量(Outgoing,比如服务器向外提供网页访问)。按 <code>q</code> 键退出。 [[File:Imageziyuan7.png|center|thumb|1021x1021px]] == 2. 是哪个程序在跑流量? == 如果 <code>nload</code> 显示当前有很高的上传速度,但你明明没有在下载东西,这时必须查出“内鬼”。输入: '''nethogs'''</code> 这个命令会列出具体的进程(如 <code>nginx</code>、<code>sshd</code> 甚至某个未知的木马程序)及其对应的实时发送(SENT)和接收(RECEIVED)速度。直接就能定位到消耗带宽的源头。 [[File:Imageziyuan9.png|center|thumb|1021x1021px]] == 3. 查看月度总流量消耗 == 如果你想知道这个月还剩多少流量配额,<code>vnstat</code> 是最好的记录员(注意:vnstat 安装后需要等待几分钟收集数据才会显示完整内容)。 直接输入: '''vnstat'''</code> 它会清晰地列出今天、昨天、以及本月的总接收(rx)、总发送(tx)和总合计(total)流量估算值。 [[File:Imageziyuan10.png|center|thumb|1005x1005px]] == 4. 网络异常检测:不明的开放端口 == 如果你怀疑服务器上运行了来路不明的服务,可以使用以下命令查看当前系统开放了哪些端口,以及对应的程序名: '''ss -tunlp'''</code> 仔细检查 <code>Local Address:Port</code> 这一列,结合最右侧的 <code>Process</code>。除了你熟知的 <code>sshd</code>(SSH服务)、<code>docker-proxy</code> 等,如果出现了未知的程序在监听端口,请立刻结合前文提到的 UFW 防火墙将其封堵,并排查该进程。 [[File:Imageziyuan12.png|center|thumb|1005x1005px]] ----监控资源并不是要你每天盯着终端看,而是让你在系统出现异常的第一时间,拥有清晰的排查逻辑:先看 CPU 负载是否异常,再查 <code>available</code> 内存是否耗尽,接着排查磁盘空间是否 100%,最后查看网络流量是否被盗刷。 通过熟练运用 <code>htop</code>、<code>free -h</code>、<code>df -h</code> 和网络监控组件,你已经掌握了给 Linux 系统“看病”的基本功。
返回
VPS 资源监控基础与异常排查(CPU/RAM/磁盘/网络使用及异常检测)全指南
。
查看“︁VPS 资源监控基础与异常排查(CPU/RAM/磁盘/网络使用及异常检测)全指南”︁的源代码
来自md5.pw