阿里云轻量 2核2G 38元/年起 · 新客秒杀限量 去看看

云服务器新手常见坑与避坑指南:少走弯路省钱省心

WeHosts技术团队·2026年3月25日·更新于 2026年10月20日

快速结论

  • 续费涨价:新用户优惠到期后价格翻倍,提前 30 天规划续费
  • 安全组配置错误:导致网站 404 或无法连接,最常见的坑
  • 快照费用爆炸:自动快照堆积,可能月费 ¥500+
  • 带宽选错:选了按流量计费,突发流量时费用爆表
  • IP 被 DDoS 打爆:被恶意攻击,一夜损失千元
  • 没有备份:服务器故障,数据全部丢失(无法恢复)
  • 公网 IP 长期不用还在扣费:云厂商坑你没商量
  • 数据库密码过于简单:被扫库,网站被挖矿
  • 超出免费额度无告警:突然被扣费,毫无预警
  • 磁盘满了导致系统崩溃:日志、临时文件堆积,恢复困难

这 10 个坑,每一个都能让你损失 ¥1000+。本文教你一一避开。


坑 1:续费涨价——买的时候 ¥24/月,续费要 ¥99/月

问题描述

新用户首购享受 8 折、5 折甚至 2 折优惠,但优惠只对"首购期"有效。续费时会恢复原价,导致续费价格是首购价的 2-4 倍。

实际案例:

首购:¥24/月(腾讯云轻量应用,2 折优惠)
续费:¥99/月(恢复原价)
涨幅:+312%(一夜涨价 75 元/月)
年度损失:¥900

2026 年的更优解:现在有「续费同价」机型可以直接绕开这个坑——阿里云 ECS 经济型 e 2核2G 99 元/年、续费同价(2026-10 采集,以活动页为准)。买之前先在云服务器比价按配置比一遍,用TCO 计算器算 3 年总成本,别只看首年价。

避坑方案

方案 A:提前 15 天申请退款重新购买

优点:省 60-70%
步骤:
1. 登录云厂商控制台
2. 找到你的云服务器,选择"申请退款"
3. 工单通常 1-3 天批准
4. 退款到账后,重新下单购买(享受新用户优惠)

代码提醒(日历提醒脚本):

#!/bin/bash
# 检查云服务器到期日期,提前 15 天提醒

EXPIRE_DATE="2026-04-25"  # 你的到期日期
TODAY=$(date +%Y-%m-%d)

# 计算天数差
DAYS_LEFT=$(($(date -d "$EXPIRE_DATE" +%s) - $(date -d "$TODAY" +%s)))
DAYS_LEFT=$((DAYS_LEFT / 86400))

if [ $DAYS_LEFT -eq 15 ]; then
    echo "WARNING: 服务器将在 15 天后到期,建议申请退款重新购买"
    # 可接入邮件告警
    mail -s "云服务器续费提醒" your_email@example.com << EOF
你的云服务器将在 $EXPIRE_DATE 到期
现在申请退款重新购买,可省 ¥500+/年
EOF
fi

方案 B:续费前领取优惠券

云厂商"券中心"常有优惠券可领:

  • 腾讯云:控制台 -> 费用中心 -> 券中心,免费领 ¥50-200 券
  • 阿里云:控制台 -> 费用中心 -> 代金券,通常有可领券

方案 C:选择按月自动续费

虽然月价格高,但每月都有机会参与促销:

按月续费:¥99/月 × 12 = ¥1188/年
但在 618、双 11 等促销期间,月费降到 ¥60-80
如果全年参与 3 次促销:¥1188 - (¥20 × 3) = ¥1128
省 ¥60(不如年付,但比直接年付更灵活)

方案 D:选择续费时升级配置

某些云厂商在续费+升级时会重新计算优惠:

原配置续费:¥99/月
升配续费(2核改4核):可能只要 ¥120/月(而非 ¥180)
反而升配更便宜

监控续费日期

自动提醒脚本(推荐方案):

创建一个 Google Sheet 追踪所有资源到期日期:

资源名到期日期金额提醒天数
云服务器-web-0012026-04-25¥600/年15
RDS MySQL2026-05-10¥1200/年15
CDN2026-06-30¥1000/年15

设置 Google Sheet 自动邮件提醒(可在 Sheet 中设置 Script)。


坑 2:安全组配置错误——网站打不开或无法连接

问题描述

安全组是云服务器的"防火墙",控制进出的网络流量。配置错误会导致:

  • 网站 404(无法访问)
  • SSH 无法连接(被锁定在外面)
  • 数据库无法访问(应用连接超时)

常见错误配置

错误 1:没有开放 80 和 443 端口

症状:网站打不开,浏览器显示"无法连接"
原因:HTTP/HTTPS 流量被阻止

正确配置:
入方向规则:
  - 协议:TCP
  - 端口:80(HTTP)和 443(HTTPS)
  - 源:0.0.0.0/0(允许所有来源)

错误 2:限制了 SSH 连接源

症状:SSH 无法登录(Permission denied)
原因:限制了源 IP,你的 IP 不在允许列表

解决:
如果是临时外出需要 SSH:
1. 暂时添加 0.0.0.0/0(所有来源,很危险,用完后删除)
2. 或用跳板机/VPN 连接(跳板机与密钥登录的命令见[Linux 运维命令速查](/article/linux-server-commands))

正确配置(如果能固定 IP):
  - 协议:TCP
  - 端口:22(SSH)
  - 源:你的 IP/32(不是 0.0.0.0)

错误 3:没有开放数据库端口

症状:应用无法连接数据库(Connection timeout)
原因:MySQL 3306 端口被阻止

正确配置:
MySQL:
  - 协议:TCP
  - 端口:3306
  - 源:应用服务器 IP/32(不要用 0.0.0.0,安全风险)
PostgreSQL:
  - 协议:TCP
  - 端口:5432
  - 源:应用服务器 IP/32

避坑清单

创建安全组时,逐个检查:

  • [ ] 开放 80(HTTP)和 443(HTTPS)给 0.0.0.0/0
  • [ ] 开放 22(SSH)给你的 IP 或跳板机 IP(不要 0.0.0.0)
  • [ ] 开放数据库端口(3306/5432)给应用服务器 IP
  • [ ] 出方向全开(Allow All)
  • [ ] 删除不用的规则(减少攻击面)

验证安全组是否正确

# 从本地测试连通性
# 测试 SSH
ssh -v -p 22 root@你的服务器IP

# 测试 HTTP
curl -v http://你的IP

# 测试数据库(如果远程访问)
telnet 你的数据库IP 3306

坑 3:快照费用爆炸——一个月 ¥500+

问题描述

云厂商的"快照"(Snapshot)是磁盘的完整备份。自动快照政策会每天创建快照,堆积后费用可能高达 ¥500/月。

费用计算:

每个快照 = 磁盘大小
快照保留 = 7 天(默认)

示例:
磁盘大小:200GB
快照数量:7 个(每天 1 个)
总快照大小:200GB × 7 = 1400GB
快照费用:1400GB × ¥0.2/GB/月 = ¥280/月

如果保留 30 天:¥280 × (30/7) ≈ ¥1200/月

避坑方案

方案 A:关闭自动快照

进入云厂商控制台:
腾讯云:实例 → 磁盘 → 快照和镜像 → 自动快照策略 → 禁用
阿里云:实例 → 磁盘 → 自动快照策略 → 删除策略

优点:省钱
缺点:失去自动备份保障(需手动备份)

方案 B:设置合理的保留策略

保留 7 天(而非 30 天):
费用:200GB × 7 × ¥0.2/GB = ¥280/月(可接受)

保留 3 天(最小):
费用:200GB × 3 × ¥0.2/GB = ¥120/月(最省)

建议:
- 测试环境:0 天(不保留)
- 生产环境:7 天(足够应对大多数问题)
- 关键数据:配合云备份服务(成本可能更低)

方案 C:定期清理旧快照

# 查看快照列表
aliyun ecs DescribeSnapshots --RegionId cn-beijing

# 删除超过 7 天的快照(需自己写脚本)
for snapshot in $(aliyun ecs DescribeSnapshots --query "Snapshots[].SnapshotId" | grep "snap-"); do
    snapshot_date=$(aliyun ecs DescribeSnapshots --SnapshotId $snapshot | grep "CreationTime" | awk '{print $2}')
    current_date=$(date +%s)
    if [ $((current_date - snapshot_date)) -gt 604800 ]; then  # 7天 = 604800秒
        echo "删除快照 $snapshot"
        aliyun ecs DeleteSnapshot --SnapshotId $snapshot
    fi
done

监控快照大小

定期审计(月度):

云厂商控制台 → 费用中心 → 费用分析
查看快照费用:
- 如果 >¥200/月,说明策略需要调整
- 如果 >¥500/月,立即停止自动快照,手动删除旧快照

坑 4:带宽选错——按流量计费导致费用爆表

问题描述

云服务器有两种带宽计费模式:

  1. 按使用量(按流量):¥0.5-1.0/GB
  2. 按峰值(按带宽):¥3000-5000/Mbps/月

选错模式会导致:

  • 流量突增(流量被攻击或突发业务):账单爆炸
  • 带宽选太小:网站打不开(被限速)

实际案例:

一个网站突然刷屏(被转发或活动),单日 100GB 流量

按流量计费:100GB × ¥0.8/GB = ¥80/天 = ¥2400/月
按带宽(选 5Mbps):¥5000/月

差异:如果是短期突发,用流量便宜;
     如果是持续高流量,用带宽便宜

避坑方案

方案 A:如何选择计费模式

场景推荐模式理由
流量稳定(如企业官网)按峰值成本可控,不用担心突发
流量不稳定(如短视频)按流量低谷期便宜
不确定按流量 + 告警可随时切换,但需告警防止爆表

方案 B:使用 CDN 降低直连流量

CDN 成本通常比直连便宜 50-70%:

直连带宽(按流量):1000GB × ¥0.8/GB = ¥800/月
用 CDN:1000GB × ¥0.3/GB = ¥300/月(节省 ¥500/月)

CDN 的额外成本:
阿里云 CDN:¥0.21-0.35/GB
腾讯云 CDN:¥0.15-0.28/GB

总费用:¥300(CDN)+ ¥50(源站回源)= ¥350/月
节省:¥450/月(比直连省 56%)

方案 C:设置流量告警

防止突发流量导致账单爆炸:

腾讯云设置方法:
1. 控制台 → 云监控 → 告警管理 → 新建告警
2. 选择指标:带宽 或 出流量
3. 设置阈值:比如 ¥100/天(自定义金额)
4. 告警方式:邮件、短信、电话

示例告警规则:
  - 条件:出流量 > 100GB/天
  - 执行动作:限速到 10Mbps(防止继续涨)
  - 通知:立即邮件+短信

方案 D:在业务代码中限流

# Python 限流示例(使用令牌桶算法)
from ratelimit import limits, sleep_and_retry
import time

# 限制每秒最多 10MB 的数据传输
@sleep_and_retry
@limits(calls=10, period=1)  # 10MB per second
def download_file(file_id):
    # 获取文件内容
    return fetch_file(file_id)

# 使用
for file_id in file_list:
    content = download_file(file_id)
    save_to_disk(content)

坑 5:IP 被 DDoS 打爆——一夜损失千元

问题描述

恶意用户通过大量请求攻击你的服务器 IP,导致:

  1. 网站无法访问(用户体验差)
  2. 按流量计费的话,费用爆炸(一夜 ¥1000+)
  3. IP 可能被云厂商封禁(需要更换 IP)

避坑方案

方案 A:使用 CDN(推荐)

CDN 本身自带 DDoS 防护,而且不会直接暴露你的源站 IP:

没有 CDN:
用户 → 你的服务器 IP(直接)→ 被攻击容易

用 CDN:
用户 → CDN 节点 → 你的源站 IP(隐藏)
       DDoS 攻击 CDN
       CDN 的 DDoS 防护吸收大部分流量

方案 B:启用云厂商的 DDoS 防护

厂商产品免费额度付费价格
腾讯云DDoS 防护2Gbps¥3000/月起
阿里云DDoS 防护5Gbps¥1000/月起
CloudflareDDoS 防护无限免费版包含

推荐:用 Cloudflare CDN(免费版有足够的 DDoS 防护)

方案 C:源站隐藏策略

不要在公开地方暴露你的服务器真实 IP:

❌ 错误做法:
- 在 DNS A 记录直接指向服务器 IP
- 在网站底部写"本站由 XX.XX.XX.XX 托管"
- 用 nslookup/whois 能直接查到

✅ 正确做法:
- 域名 CNAME 到 CDN(不指向服务器 IP)
- 反向 DNS 隐藏源站信息
- 定期扫描是否泄露 IP(用工具 Shodan)

检查 IP 是否被暴露:

# 查看 DNS 记录
dig example.com

# 查看是否有历史记录
nslookup example.com  # 看是否有旧 IP 记录

# 用 Shodan 查(https://www.shodan.io/)
# 搜索你的 IP,看有多少人知道

方案 D:配置速率限制

在应用层限制单 IP 的请求频率(这里用 Flask 示例;Gunicorn + Nginx 的生产部署见 Python Web 部署指南):

# Flask 示例
from flask_limiter import Limiter
from flask_limiter.util import get_remote_address

limiter = Limiter(
    app,
    key_func=get_remote_address,
    default_limits=["200 per day", "50 per hour"]
)

@app.route('/api/data')
@limiter.limit("10 per minute")  # 限制 10 次/分钟
def get_data():
    return {"data": "..."}

# Nginx 配置示例
limit_req_zone $binary_remote_addr zone=general:10m rate=10r/s;
server {
    limit_req zone=general burst=20 nodelay;
}

坑 6:没有备份——服务器故障数据全部丢失

问题描述

云服务器硬件故障、被黑客删除、或误操作删除文件时,如果没有备份:

  • 数据永久丢失(无法恢复)
  • 业务中断(停机数小时甚至数天)
  • 损失评估:可能 ¥10000+

避坑方案

方案 A:启用自动备份

腾讯云:
1. 实例 → 磁盘 → 自动快照 → 设置策略
2. 建议:每天 1 个快照,保留 7 天

阿里云:
1. 实例 → 磁盘 → 自动快照 → 创建策略
2. 建议:每天 02:00 创建快照,保留 7 天

费用估算:

磁盘 100GB,保留 7 天快照
费用:100GB × 7 × ¥0.2/GB = ¥140/月(可接受)

方案 B:定期手动备份到其他地方

# 备份整个磁盘到本地(需要云厂商提供的导出工具)
# 阿里云示例
aliyun ecs CreateSnapshot --InstanceId i-xxxxxx --SnapshotName backup-$(date +%Y%m%d)

# 导出快照为镜像
aliyun ecs CopySnapshot --SourceSnapshotId snap-xxxxx --DestinationRegionId cn-hangzhou

# 备份数据库到 OSS(对象存储)
mysqldump -u root -p database_name | aliyun oss cp - oss://my-bucket/backup-$(date +%Y%m%d).sql

方案 C:数据库增量备份

关键数据库不只依赖磁盘快照,还要做增量备份:

# MySQL 二进制日志备份(重要)
# 每小时备份一次 binlog 到 OSS
#!/bin/bash

MYSQL_USER="root"
MYSQL_PASS="password"
OSS_BUCKET="my-backup-bucket"
DATE=$(date +%Y%m%d_%H%M%S)

# 冲刷日志
mysql -u$MYSQL_USER -p$MYSQL_PASS -e "FLUSH LOGS;"

# 获取最新的 binlog
LATEST_BINLOG=$(mysql -u$MYSQL_USER -p$MYSQL_PASS -N -e "SHOW MASTER STATUS\G" | grep "File" | awk '{print $2}')

# 上传到 OSS
aliyun oss cp /var/lib/mysql/$LATEST_BINLOG oss://$OSS_BUCKET/binlog_backup/$DATE.binlog

方案 D:定期测试备份恢复

备份了不测试 = 没有备份

每季度(或每月):
1. 从备份恢复到测试服务器
2. 验证数据完整性和一致性
3. 记录恢复时间(评估 RTO)

备份成本对比

方案成本/月保留时间恢复时间
自动快照(7天)¥1407 天5-10 分钟
跨地域快照¥2007 天10-15 分钟
云备份服务¥300-50030 天1-2 小时
本地+云备份¥50060 天依赖上传速度

推荐:自动快照 + 月度云备份(成本 ¥400-500,但保障最好)


坑 7:公网 IP 长期不用还在扣费

问题描述

云服务器的公网 IP 是要付费的,即使不用也会持续扣费:

费用:

  • 腾讯云:¥0.2/小时 × 24 小时 × 30 天 = ¥144/月
  • 阿里云:¥0.04/小时 × 24 × 30 = ¥28.8/月(按带宽制)

避坑方案

方案 A:及时释放不用的 IP

找到不用的公网 IP:
腾讯云:实例 → 网络 → 公网 IP → 释放
阿里云:实例 → 网络和安全 → 弹性公网 IP → 释放

注意:
- 释放后不能恢复(谨慎操作)
- 如果需要保留 IP,可以改为"包年包月"(便宜 20%)

方案 B:监控未使用的资源

定期审计(月度):
1. 查看有多少个云服务器有公网 IP
2. 哪些是活跃使用,哪些是闲置
3. 标记闲置 IP,计划释放或改为按需

方案 C:API 自动清理

# Python 自动释放 30 天未使用的弹性 IP
import boto3
from datetime import datetime, timedelta

ec2 = boto3.client('ec2')

# 获取所有 EIP
response = ec2.describe_addresses()

for addr in response['Addresses']:
    ip_id = addr['AllocationId']
    association_id = addr.get('AssociationId', None)

    # 如果没有被关联到实例(unused)
    if not association_id:
        # 检查是否已闲置 30 天
        alloc_time = addr['PublicIpOwnerId']
        if datetime.now() - alloc_time > timedelta(days=30):
            print(f"释放未使用 IP: {addr['PublicIp']}")
            ec2.release_address(AllocationId=ip_id)

坑 8:数据库密码过于简单——被扫库,网站被挖矿

问题描述

弱密码数据库容易被:

  1. 批量扫描破解(暴力破解数据库)
  2. SQL 注入(通过应用漏洞进入)
  3. 被黑后遭到敲诈(勒索赎金)

避坑方案

方案 A:设置强密码

-- ❌ 错误示例
CREATE USER 'admin'@'%' IDENTIFIED BY '123456';  -- 太简单
CREATE USER 'root'@'%' IDENTIFIED BY 'password';  -- 太简单

-- ✅ 正确示例
CREATE USER 'prod_user'@'10.0.0.0/8' IDENTIFIED BY 'Kj8$#mP9!xQwZ2aB';
-- 要求:
-- - 16 位以上
-- - 包含大小写字母、数字、特殊字符
-- - 不要用字典词、生日、项目名称

方案 B:限制数据库访问源

-- ❌ 错误(允许所有来源)
GRANT ALL PRIVILEGES ON database.* TO 'user'@'%' IDENTIFIED BY 'xxx';

-- ✅ 正确(只允许应用服务器)
GRANT ALL PRIVILEGES ON database.* TO 'user'@'10.0.1.5' IDENTIFIED BY 'xxx';
-- 或用应用服务器安全组白名单限制

方案 C:启用 SSL 加密连接

确保数据库和应用之间的连接被加密:

MySQL 配置:
[mysqld]
require_secure_transport = ON
ssl_key=/path/to/key.pem
ssl_cert=/path/to/cert.pem

应用连接时:
mysql --ssl-mode=REQUIRED -h db_host -u user -p

方案 D:定期更换密码

#!/bin/bash
# 每 90 天自动更换数据库密码

CURRENT_PASS="old_password"
NEW_PASS=$(openssl rand -base64 16)

# MySQL 更换密码
mysql -u root -p$CURRENT_PASS -e "ALTER USER 'prod_user'@'10.0.0.0/8' IDENTIFIED BY '$NEW_PASS';"

# 更新应用配置文件
sed -i "s|db_password = .*|db_password = $NEW_PASS|" /app/config.php

# 更新密钥管理系统(如 AWS Secrets Manager)
aws secretsmanager update-secret \
    --secret-id prod/database \
    --secret-string "{\"password\":\"$NEW_PASS\"}"

echo "密码已更新"

方案 E:启用数据库审计

-- 记录所有数据库操作,及时发现异常
SET GLOBAL log_bin = ON;
SET GLOBAL binlog_format = 'ROW';

-- 查看访问日志
SHOW MASTER LOGS;
SHOW BINLOG EVENTS IN 'mysql-bin.000001';

坑 9:超出免费额度无告警——突然被扣费

问题描述

很多云厂商给新用户免费额度(如 CDN 免费 100GB/月),超出后自动计费,如果没设告警会有惊喜账单。

费用示例:

CDN 免费额度:100GB/月
实际使用:300GB/月
超出额度:200GB × ¥0.3/GB = ¥60/月

如果一年没有发现:¥60 × 12 = ¥720

避坑方案

方案 A:设置成本告警

每个云厂商都有费用告警功能:

腾讯云设置:
1. 费用 → 费用中心 → 成本分析
2. 右上角"支付告警"
3. 设置月度上限:¥500(或你能接受的金额)
4. 超过上限立即邮件+短信+电话

阿里云设置:
1. 费用 → 费用中心 → 成本中心
2. 设置预算告警
3. 选择具体产品(CDN、RDS 等)
4. 设置每日消费上限

方案 B:定期审计消费明细

每周(或每月)检查:
1. 登录云厂商控制台
2. 费用中心 → 账单管理 → 本月消费
3. 按产品分类,对比上月
4. 如果某项费用突增 > 20%,立即排查原因

排查步骤:
- 是新增服务?是否需要?
- 是使用量增加?是否合理?
- 是价格调整?是否有优化空间?

方案 C:自动化成本监控

# Python 自动获取账单并告警
import os
import requests
from datetime import datetime, timedelta

# 腾讯云示例(其他厂商类似)
def check_bill(api_key, secret_key):
    # 这里需要调用云厂商的账单 API
    # 伪代码示例

    bill_api = "https://tke.tencentcloudapi.com/billing"

    # 获取今天的费用
    response = requests.get(
        bill_api,
        headers={
            'Authorization': f'Bearer {api_key}'
        },
        params={
            'start_date': str(datetime.now().date()),
            'end_date': str(datetime.now().date()),
        }
    )

    total_cost = response.json()['total']

    # 如果超过每日预算,告警
    daily_budget = 100  # ¥100/天
    if total_cost > daily_budget:
        send_alert(f"今日费用 ¥{total_cost},超出预算 ¥{daily_budget}")

def send_alert(message):
    # 发送邮件/短信/钉钉告警
    requests.post(
        'https://oapi.dingtalk.com/robot/send',
        json={'text': {'content': message}}
    )

if __name__ == '__main__':
    check_bill(os.getenv('API_KEY'), os.getenv('SECRET_KEY'))

# 设置定时任务
# crontab: 0 * * * * python /path/to/check_bill.py

坑 10:磁盘满了导致系统崩溃

问题描述

日志、临时文件、缓存不断增长,磁盘满了会导致:

  1. 应用无法写入数据(数据库插入失败)
  2. 系统无法正常运行(无法创建临时文件)
  3. SSH 可能无法连接(最坏情况)
  4. 恢复困难(磁盘满了甚至 fsck 无法执行)

实际案例:

一个网站因为日志没有轮转,/var/log 占用 50GB
导致数据库无法写入数据,网站中断 8 小时
修复时间:删除日志 2 小时 + 恢复数据 6 小时

避坑方案

方案 A:定期检查磁盘使用

# 查看磁盘使用情况
df -h

# 输出示例
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 100G 85G 15G 85% /

# ⚠️ 当使用率 >80% 时,立即处理

# 查看具体目录大小
du -sh /*

# 找出大文件
find / -type f -size +1G 2>/dev/null

# 按大小排序
du -sh /* | sort -h | tail -10

方案 B:启用日志轮转

防止日志文件无限增长:

# Linux 使用 logrotate

# 编辑 /etc/logrotate.d/myapp
/var/log/myapp.log {
    daily                  # 每天轮转一次
    rotate 7               # 保留 7 个日志文件
    compress               # 压缩旧日志
    delaycompress          # 延迟压缩(下次轮转时压缩)
    missingok              # 日志不存在也不报错
    notifempty             # 空日志不轮转
    create 0640 www www    # 轮转后创建新文件,权限 0640
}

# 测试轮转
logrotate -f /etc/logrotate.d/myapp

# 查看轮转状态
logrotate -s /var/lib/logrotate/status /etc/logrotate.d/myapp

方案 C:清理临时文件

#!/bin/bash
# 定期清理临时文件(建议每周运行一次)

# 清理 /tmp 目录下 7 天未访问的文件
find /tmp -atime +7 -type f -delete

# 清理 PHP 会话文件
find /var/lib/php/sessions -atime +24 -type f -delete

# 清理 systemd 日志(仅保留最近 1G)
journalctl --vacuum=1G

# 清理 apt 缓存(如果是 Ubuntu)
apt-get clean

# 清理 docker 镜像和容器(如果用 docker)
docker system prune -af

# 定时任务
# crontab -e
# 0 2 * * 0 /path/to/cleanup.sh  # 每周日凌晨 2 点执行

方案 D:设置磁盘告警

腾讯云:
1. 云监控 → 告警管理 → 新建告警
2. 指标:磁盘使用率
3. 阈值:>80%
4. 告警方式:邮件/短信/电话

应用层监控(更及时):
import psutil
import smtplib
from email.mime.text import MIMEText

def check_disk():
    disk_usage = psutil.disk_usage('/')

    # 如果磁盘使用率 >80%
    if disk_usage.percent > 80:
        # 发送告警
        msg = MIMEText(f"磁盘使用率 {disk_usage.percent}%,已使用 {disk_usage.used / 1e9:.1f}GB")
        msg['Subject'] = "磁盘空间告警"
        msg['From'] = "monitoring@example.com"
        msg['To'] = "admin@example.com"

        smtp = smtplib.SMTP('smtp.example.com')
        smtp.send_message(msg)
        smtp.quit()

# crontab: 0 * * * * python /path/to/check_disk.py

综合避坑清单

坑风险等级影响预防
续费涨价高¥500-1000/年提前 15 天规划
安全组错配高网站无法访问逐一检查规则
快照费爆炸中¥300-500/月关闭或限制自动快照
带宽选错高¥2000+/月根据业务选择计费模式
DDoS 攻击高¥1000+/天使用 CDN + DDoS 防护
无备份高数据永久丢失启用自动快照 + 定期备份
IP 费用中¥144/月及时释放不用的 IP
弱密码高数据库被黑16 位强密码 + IP 白名单
无告警中¥1000+/月设置成本告警
磁盘满中-高业务中断日志轮转 + 定期检查

快速检查清单

创建新云服务器后,立即做这 10 件事:

  • [ ] 修改 root 密码(强密码)
  • [ ] 配置安全组(80、443、22 端口)
  • [ ] 关闭或限制自动快照
  • [ ] 设置带宽告警和流量限制
  • [ ] 启用 CDN(如有流量)
  • [ ] 设置数据库强密码和 IP 白名单
  • [ ] 启用自动备份或定期手动备份
  • [ ] 释放不用的公网 IP
  • [ ] 设置成本告警(月度预算)
  • [ ] 配置日志轮转(防磁盘满)

定期维护(月度):

  • [ ] 检查磁盘使用率(>80% 立即清理)
  • [ ] 审计账单明细(对比上月)
  • [ ] 清理临时文件和过期快照
  • [ ] 检查安全组规则(删除不用的)
  • [ ] 验证备份是否正常

总结

云服务器新手最容易踩 10 大坑,每一个都能导致实际损失。但只要提前规划、定期审计、设置告警,就能避免 99% 的问题。

最后一句话:每月花 30 分钟检查云资源,能省 ¥10000+/年。

立即检查你的账户:

  1. 登录云厂商控制台
  2. 按照本文的"快速检查清单"逐项审查
  3. 如果发现问题,按对应"避坑方案"修复

现在就做,比事后补救便宜 100 倍。


延伸阅读:云服务器选购避坑指南 2026 · 成本优化顾问:在线自查资源浪费 · 比价雷达:当前活动价 · 云服务器比价 · TCO 计算器:算 3 年真实成本

本文可能含联盟推广链接,购买不增加你的价格,详见联盟披露。

文中提到的云平台当前活动价

文中价格均来自各平台公开活动页。想直接对比在售机型,可以先看下面这些:价格核实日期与台账一致,以活动页为准。