腾讯云 Ubuntu 服务器在低负载(CPU、内存使用率不高)的情况下仍然出现系统卡顿,可能是由多种非直观因素引起的。以下是一些常见原因及排查建议:
1. I/O 瓶颈(磁盘性能问题)
即使 CPU 和内存负载低,磁盘 I/O 慢也会导致系统“卡”。
-
常见表现:
- 执行命令响应慢(如
ls、cd、vim等)。 - 日志写入延迟、数据库操作变慢。
- 执行命令响应慢(如
-
排查方法:
iostat -x 1 # 查看磁盘使用率和等待时间(%util, await) iotop # 实时查看进程的磁盘 I/O 使用情况 dmesg | grep -i "slow" # 检查内核是否有 I/O 警告 -
可能原因:
- 使用了普通云硬盘(而非高性能 SSD 或增强型云硬盘)。
- 共享型实例(如 t 系列),存在 CPU 或 I/O 积分耗尽的情况。
- 存在大量小文件读写或频繁日志写入。
-
解决建议:
- 升级为更高性能的云硬盘(如 SSD 云硬盘、极速型 NAS)。
- 检查是否为突发性能实例(如 t3/t5),确认 CPU 积分是否耗尽(可通过腾讯云监控查看“CPU 积分余额”)。
2. 网络延迟或带宽不足
某些应用依赖远程服务(如数据库、API、NFS 挂载),网络延迟会导致“卡”。
-
排查方法:
ping 8.8.8.8 # 测试基础网络延迟 mtr google.com # 查看路由跳转和丢包 iftop # 查看实时网络流量占用 ss -tuln # 检查监听端口和服务状态 -
可能原因:
- 带宽被打满(即使平均负载低,突发流量也可能阻塞)。
- DNS 解析慢(可尝试更换为
119.29.29.29或8.8.8.8)。 - 应用连接外部服务超时(如数据库、Redis、对象存储)。
-
解决建议:
- 在腾讯云控制台查看“公网带宽使用率”。
- 使用内网访问其他云服务(如 COS、CDB)以减少延迟。
- 优化 DNS 配置:修改
/etc/resolv.conf使用腾讯云内网 DNS。
3. 内存交换(Swap)使用过多
即使内存使用率不高,但若频繁使用 Swap,性能会显著下降。
-
排查方法:
free -h # 查看 swap 使用情况 vmstat 1 5 # 观察 si/so(swap in/out)是否频繁 cat /proc/meminfo | grep -i swap -
可能原因:
- 内存压力下系统将不常用页换出到磁盘。
- swappiness 设置过高(默认 60)。
-
解决建议:
- 减少 swap 使用:
sudo sysctl vm.swappiness=10 # 临时调整 echo 'vm.swappiness=10' >> /etc/sysctl.conf # 永久设置 - 增加物理内存或优化应用内存使用。
- 减少 swap 使用:
4. 内核或系统调优问题
某些内核参数或文件系统配置不当会影响响应速度。
-
排查方向:
- 文件系统类型(ext4 vs xfs)及挂载选项(如
noatime)。 - 是否启用了透明大页(THP)影响数据库性能。
- 系统最大打开文件数限制。
- 文件系统类型(ext4 vs xfs)及挂载选项(如
-
检查命令:
mount | grep $(df / | tail -1 | awk '{print $1}') cat /sys/kernel/mm/transparent_hugepage/enabled ulimit -n -
优化建议:
- 对于数据库类应用,关闭 THP:
echo never > /sys/kernel/mm/transparent_hugepage/enabled - 添加
noatime,nodiratime到/etc/fstab提升磁盘效率。
- 对于数据库类应用,关闭 THP:
5. 后台任务或定时任务干扰
某些 cron 任务、日志轮转、备份脚本在运行时可能导致短暂卡顿。
-
排查方法:
crontab -l # 查看当前用户定时任务 ls /etc/cron.d/ journalctl -u cron --since "1 hour ago" top 或 htop # 观察是否有短时高消耗进程 -
解决建议:
- 将重负载任务安排在业务低峰期。
- 使用
nice和ionice降低任务优先级。
6. 安全软件或入侵检测干扰
安装了云安全 Agent(如云镜、安骑士)、杀毒软件等,可能在扫描时造成卡顿。
-
排查方法:
ps aux | grep -i "yunjing|qcloud|agent" systemctl status yunjing # 腾讯云主机安全服务 -
解决建议:
- 在腾讯云控制台调整扫描频率或暂停实时监控。
- 排查是否因病毒扫描导致 I/O 上升。
7. 虚拟化层或宿主机问题(较少见)
虽然低概率,但云服务器所在的物理机资源争抢或故障也可能影响性能。
- 排查方法:
- 查看腾讯云监控中的“实例健康状态”、“CPU 百分比(考虑积分)”、“磁盘队列深度”。
- 联系腾讯云技术支持,提供实例 ID 和时间段,请求排查底层问题。
8. 应用程序自身问题
应用存在死锁、线程阻塞、GC 频繁等问题,表现为系统资源空闲但服务响应慢。
- 排查建议:
- 检查应用日志(如 Java 应用的 GC log、Node.js 的 event loop 延迟)。
- 使用
strace或perf分析进程系统调用延迟。 - 对于 Web 服务,使用
ab或wrk测试接口响应时间。
快速诊断脚本建议
你可以运行以下命令快速收集信息:
echo "=== CPU Load ==="; uptime
echo "=== Memory & Swap ==="; free -h
echo "=== Disk I/O ==="; iostat -x 1 3 | tail -5
echo "=== Top Processes by CPU/Memory ==="; ps aux --sort=-%cpu | head -10
echo "=== Network Stats ==="; ss -s
echo "=== Systemd Services Status ==="; systemctl list-units --type=service --state=running | grep -E "(nginx|mysql|redis|http)"
总结:排查思路
| 可能原因 | 排查工具 | 关键指标 |
|---|---|---|
| 磁盘 I/O 慢 | iostat, iotop |
%util 高、await 大 |
| 网络延迟 | ping, mtr, iftop |
丢包、延迟高、带宽打满 |
| Swap 使用 | free, vmstat |
si/so > 0 |
| 后台任务 | crontab, top |
短时高 I/O 或 CPU 进程 |
| 安全 Agent | ps, 腾讯云控制台 |
yunjing/qcloud-agent 占用资源 |
| 应用层问题 | 日志、strace | GC、死锁、阻塞调用 |
✅ 建议操作流程:
- 登录腾讯云控制台,查看实例监控(CPU、网络、磁盘 I/O、带宽)。
- 登录服务器,使用
iostat和iotop确认是否有 I/O 等待。 - 检查是否为突发性能实例,确认 CPU 积分是否耗尽。
- 排查 Swap、网络、安全软件等因素。
- 如仍无法定位,导出日志并联系 腾讯云技术支持 提供实例 ID 和时间段协助分析。
如有具体应用场景(如 Web 服务、数据库、Docker 等),可进一步针对性分析。
云小栈