一、服务器性能四大资源
Linux 服务器性能主要看:
- CPU
- 内存
- 磁盘 IO
- 网络
还有一个贯穿所有资源的因素:进程管理
1. 内存(RAM)——稳定性的第一因素
作用
内存决定:
- 能同时运行多少服务
- 数据缓存能力
- 数据库性能
- 是否触发 OOM
内存不足表现
典型:
- 服务器变慢
- SSH卡顿
- 宝塔打不开
- 数据库掉线
- Python进程消失
- OOM Killer
查看内存
$ free -h
重点看:available,不要只看:free
例如:
Mem:
total 4G
used 2G
free 200M
available 1.5G
这是正常的。
优化方向
① 增加内存
通常:4G → 8G,收益非常明显。
② 控制服务内存
例如:
- MySQL:限制 buffer pool
- Java: 限制 JVM heap
- Python:控制 worker 数量
③ 保留 Swap
Swap 是:内存不足时的缓冲区,不是替代内存。
建议:
内存 Swap
- 2G 1~2G
- 4G 1~4G
- 8G 2~4G
查看:
$ swapon –show
2. CPU —— 决定计算速度
CPU不足表现
- 接口响应慢
- 程序计算慢
- 请求排队
- load升高
查看 CPU
$ lscpu
实时:
$ top
关注:
us
sy
wa
id
例如:99% id,说明 CPU 很空闲。
CPU优化
① 减少无效进程
查看:
$ ps aux –sort=-%cpu | head
② 调整并发
例如:
Gunicorn:
不要:worker=20,在小机器上可能:worker=2~4 更合理。
3. 磁盘 IO —— 经常被忽略
很多“服务器慢”其实是磁盘慢。
表现
- CPU很低
- 内存够
- 但是网页慢
- 数据库慢
查看
top:
关注:
wa
例如:wa 50%,说明:大量等待磁盘。
工具:
iostat
安装:
yum install sysstat
查看:
iostat -x 1
优化
① 使用 SSD
云服务器:普通盘 -> SSD,提升明显。
② 数据库优化
例如:
MySQL:
- 索引
- 慢查询
- buffer pool
4. 网络 —— 决定传输能力
影响:
- 下载
- 图片
- 视频
- API流量
查看:
iftop
或者:
sar -n DEV 1
3Mbps,对于:网站后台、API、数据库 通常够;对于:文件下载、图片站 可能不足。
二、Linux 性能检查顺序
遇到服务器慢:
不要乱重启。
按顺序:
第一步:看整体
uptime
看:
load average
例如:0.5 0.8 1.0,正常。
第二步:看 CPU
top
关注:
CPU
wa
第三步:看内存
free -h
关注:
available
swap
第四步:找大户
CPU:
ps aux –sort=-%cpu | head
内存:
ps aux –sort=-%mem | head
第五步:看日志
系统:
journalctl -xe
OOM:
dmesg | grep -i oom
三、服务部署前资源规划
不要:
安装软件
↓
出问题
↓
再优化
应该:
评估机器
↓
估算资源
↓
安装
↓
限制资源
四、不同服务资源特点
| 服务 | 主要消耗 |
|---|---|
| MySQL | 内存 + IO |
| Redis | 内存 |
| Elasticsearch | 内存 + CPU |
| Python FastAPI | 内存 + CPU |
| PHP-FPM | 内存 |
| Nginx | 少量资源 |
| Gitea | 内存 |
五、小服务器优化原则
1. 控制服务数量
不要:
- MySQL
- ES
- Redis
- Docker
- Gitea
全部塞一起。
2. 限制服务资源
例如:
Java:
-Xmx
Python:
worker数量
MySQL:
buffer pool
3. 保留安全余量
不要让:RAM 使用 >90% 长期运行。
建议:70%左右,比较健康。
六、升级服务器判断
不要只看 CPU。
升级优先级:
Web + 数据库服务器
通常:
内存
↓
磁盘
↓
CPU
↓
带宽
七、一套日常巡检命令
# 系统负载
uptime
# CPU/内存实时
top
# 内存
free -h
# 磁盘
df -h
# 磁盘IO
iostat -x 1
# 大内存进程
ps aux –sort=-%mem | head
# 大CPU进程
ps aux –sort=-%cpu | head
# OOM记录
dmesg | grep -i oom
# 网络
sar -n DEV 1