第四章 性能与资源治理
先说一句大实话
“服务器变卡了”通常是三件事之一:磁盘满了、内存不够了、某个东西在疯狂写。 这三件事的症状很像(都是“慢”),但处理方式完全不同。第四章的任务就是教你用三条命令把这三件事分开,然后对症下药。不是电脑玄学,都是可以量化的问题。
三条命令分清病因
登上服务器,按顺序敲这三条,基本就能定案:
# 1. 磁盘满了没?(看 Use% 那一列)
df -h
# 2. 内存够不够?(看 available 那一列)
free -h
# 3. 谁在忙?(看平均负载和 CPU 占用前几名)
uptime
top -bn1 | head -20
| 观察 | 结论 | 去哪一节 |
|---|---|---|
| 磁盘 90%+ | 磁盘满了,先清磁盘 | 4.2 / 4.4 |
| available 内存很小 | 内存不足 | 4.3 |
| 负载很高但 CPU 不满 | 很可能在等磁盘 IO | 4.2 |
| CPU 被某进程占满 | 单个应用的问题 | 4.1 |
| 都正常但就是慢 | 网络或应用本身的瓶颈 | 4.1 |
拿小本本记住这张表,第四章的所有故事都是从这里开始的。
一个反常识:负载高(uptime 里的 load average)不代表 CPU 不行。负载里排队的还包括“等磁盘”的进程——磁盘满了或者 IO 跟不上,负载一样会飚上去。所以顺序永远是先看磁盘,再看内存,最后看 CPU。
负载数字怎么读:load average 通常是三个数(1 分钟、5 分钟、15 分钟)。三个数差不多 = 稳定负载;1 分钟远高于 15 分钟 = 刚刚炸了一下;15 分钟高于 1 分钟 = 刚刚恢复。这篇信息量和“重启试试”完全不是一个量级。
面板里能看什么
1Panel 在系统 → 监控里提供了平均负载、CPU、内存、磁盘 I/O 和网络 I/O 的历史曲线。几个使用要点:
- 看历史比看当前有用——“今天比昨天慢了多少”,曲线一目了然;
- 监控图是空的时候,先确认监控开关开了、时间范围内确实有数据、系统时间和面板服务正常;
- 监控数据是可以设保留天数和采集间隔的——采得更密、留得更久,占用也更大;
- 采集间隔越短越占数据库——小机器别设得太激进,1~5 分钟一采足够日常用了。
监控曲线的读法和主机监控的详细功能,见《1Panel 官方文档:功能手册》中的主机监控一节,以官方文档为准;更偏日常运维视角的用法可以翻翻《1Panel 使用指南:从安装到日常运维》。
一条经验:出问题后第一件事是把监控曲线调出来,看故障是从几点开始的。那个时间点往往就是你做了什么操作(装了个应用、跑了备份、被人刷了)的时间,直接缩小排查范围。
一个核心观念:先治理,再加机器
磁盘满了先删日志,而不是先买硬盘;内存不够先治占内存最大的应用,而不是先升级配置。加资源是最贵但最省事的方案——但有些问题(比如某个失控的日志)买多少硬盘都填不满。第四章的每一节,都先给“怎么治”,治不了再说扩容。
这一章的结构跟前几章一样:先给工具,再给方法,最后给完整的排查故事。每节都会给出可直接复制的命令,照着敲就行。
这一章解决四个问题
| 小节 | 问题 | 一句话答案 |
|---|---|---|
| 4.1 | 面板卡、网站慢 | 先定位是面板的事还是网站的事 |
| 4.2 | 磁盘满 / inode 占用 | 找到大文件再删,别盲目清 |
| 4.3 | 内存高 / OOM / 慢查询 | 抓占用大户,慢查询从日志查 |
| 4.4 | 日志和文件越来越大 | 治标:切割清理;治本:计划任务 |
一个常被忽略的前置检查
所有性能问题排查之前,先确认一件事:最近有没有人改过什么。
- 装了新应用?
- 升级了什么?
- 换了配置?
性能问题往往不是“渐渐”发生的,而是“某次操作之后”发生的。先问一句,能省掉大量盲目排查。操作日志在 日志审计 → 操作日志 里按时间查,SSH 登录日志在 登录日志里看(异常登录也可能是变卡的原因——机器被人拿来挖矿了,详见 5.4 节)。
这一章反复出现的概念
| 概念 | 一句话解释 |
|---|---|
| 负载(load average) | 排队等 CPU/IO 的进程数,不等于 CPU 占用率 |
| available 内存 | 扣掉系统缓存后真正能用的内存 |
| inode | 文件的“户口本”,小文件太多会先耗尽 inode |
| OOM | 内存不够,系统挑了个进程杀掉 |
| 慢查询 | 超过阈值的数据库语句,慢日志里能看到 |
| IO 等待 | 进程卡在读写磁盘上,CPU 干着急 |
| 快照 | 1Panel 系统级的状态备份 |
一个容易混淆的判断
“面板慢”和“网站慢”是两个问题,尽管它们经常同时出现。 判断方法特别简单:
| 情况 | 判断 |
|---|---|
| 面板慢、网站也慢 | 服务器整体性问题(资源) |
| 面板快、网站慢 | 网站自身或 OpenResty 的问题(见第 2 章) |
| 面板慢、网站快 | 面板服务或浏览器的问题(见 4.1) |
用 SSH 连服务器正常、就是面板慢——这种是最让人迷惑的,其实多半是面板服务的资源占用或浏览器缓存问题,4.1 节细说。反过来也一样:面板飞快但网站龟速,说明服务器底子没问题,查网站和 OpenResty 的配置(第 2 章)。
一条朴素的建议
性能问题的排查,难在“症状会骗人”。磁盘满了偏偏表现成数据库连不上(3.1 节的案例),内存不足偏偏表现成网站 502(2.2 节的案例)。保持一个习惯:每隔一段时间看一眼 df -h 和 free -h,或者在面板监控里看看曲线——很多故障在爆发前几小时就有征兆了。
下一节:从最常见的“面板卡顿、网站慢”开始,一套标准的排查流程。
