努力
加油

腾讯云轻量应用服务器CPU使用率一直很高怎么办?

轻量应用服务器(Lighthouse)CPU 长期飙高,通常不是“玄学”,而是资源瓶颈或配置不当导致的。别急着重启,先按下面的逻辑排查,从最可能的原因入手。

1. 确认是不是“被卖惨”了

很多新手用户买的轻量服务器是突发性能实例(Burstable Instances),比如 T6、T3 等类型。这类实例有 CPU 积分机制:

  • 平时低负载时:积累 CPU 积分。
  • 高负载时:消耗积分,但一旦积分耗尽,CPU 会被限制在基准性能(通常是 10%-20%),表现为系统极慢,且监控显示 CPU 使用率虽然不高,但实际运行卡顿。
  • 检查方法:登录腾讯云控制台 -> 轻量应用服务器 -> 监控页面,查看“CPU 积分余额”。如果积分归零,你需要升级实例规格或购买更多积分,否则怎么优化代码都没用。

2. 定位“真凶”进程

如果积分充足,那确实是 CPU 跑满了。通过 SSH 登录服务器,执行以下命令找出占用最高的进程:

# 实时查看 CPU 排名前五的进程
top -o %CPU

# 或者使用更直观的 htop(需要安装:yum install htop / apt install htop)
htop

重点关注 USER 列和 COMMAND 列。常见嫌疑人:

  • Java 应用:堆内存设置不合理导致频繁 Full GC,或者线程死锁。
  • Python/Node.js:无限循环、未捕获的异常重试、内存泄漏。
  • 数据库:MySQL/PostgreSQL 出现慢查询,全表扫描。
  • XX病毒:如果你发现有个叫 kdevtmpfsi、xmrig 或者随机字母组合的进程,且不在你的业务列表中,大概率是中招了。

3. 常见场景及解决方案

A. 网站/应用访问量突增

如果是正常业务流量上涨:

  • 扩容:轻量服务器适合中小站点,如果确实需要更高并发,考虑迁移到 CVM(云服务器)+ CLB(负载均衡)。
  • 缓存:检查是否缺少缓存层。Nginx 开启 gzip 压缩、静态资源 CDN 提速、后端加 Redis 缓存热点数据。
  • 代码优化:检查是否有 N+1 查询问题,日志是否打印过多 DEBUG 信息(生产环境务必关闭 DEBUG 日志)。

B. 数据库慢查询

MySQL 是 CPU 杀手的高发区。

  • 开启慢查询日志:
    SET GLOBAL slow_query_log = 'ON';
    SET GLOBAL long_query_time = 2; -- 超过2秒的查询记录
  • 分析日志:使用 mysqldumpslow 工具分析哪些 SQL 最耗资源。
  • 加索引:90% 的 CPU 飙升是因为没建索引导致全表扫描。用 EXPLAIN 分析执行计划。

C. 安全事件(XX/CC 攻击)

  • XX:立即 kill 掉可疑进程,查杀后门文件(通常在 /tmp, /var/tmp, /dev/shm 下)。修改 root 密码,检查 crontab 定时任务是否有异常。
  • CC 攻击:如果大量请求来自同一 IP 段,且访问的是动态页面(如 login.php, api接口):
    • 在腾讯云控制台启用“Web 应用防火墙”(WAF)或轻量服务器的“安全组”策略,封禁恶意 IP。
    • Nginx 配置连接数限制:
      limit_conn_zone $binary_remote_addr zone=addr:10m;
      server {
          location / {
              limit_conn addr 10; # 每个 IP 最多 10 个并发
          }
      }

D. 系统级问题

  • 僵尸进程:top 中看到大量 Z 状态的进程,可能是父进程没处理好子进程退出信号。
  • 内核恐慌/驱动问题:较少见,但如果所有进程 CPU 都很低,总 CPU 却很高,可能是中断处理或驱动程序问题,需重启观察。

4. 预防与优化建议

  1. 设置告警:在腾讯云控制台为轻量服务器设置 CPU 使用率 > 80% 持续 5 分钟的告警,短信/微信通知,避免事后诸葛亮。
  2. 自动化脚本:写一个简单的 shell 脚本,当 CPU > 90% 时自动记录日志并重启关键服务(谨慎使用,避免雪崩)。
  3. 定期维护:
    • yum update / apt upgrade 保持系统补丁最新。
    • 清理无用日志:journalctl --vacuum-time=7d 或手动删除 /var/log 下的旧日志。
  4. 架构升级:如果轻量服务器长期满负荷,说明业务已超出其设计边界。轻量服务器主打“简单、便宜”,不适合高并发、高可用场景。此时应规划迁移至 CVM + RDS + CLB 的标准云架构。

总结

先查积分,再查进程,最后看日志。大多数情况下,要么是高流量没做缓存,要么是数据库没索引,要么是中病毒。解决完这些,CPU 自然降下来。