快速结论
- 续费涨价:新用户优惠到期后价格翻倍,提前 30 天规划续费
- 安全组配置错误:导致网站 404 或无法连接,最常见的坑
- 快照费用爆炸:自动快照堆积,可能月费 ¥500+
- 带宽选错:选了按流量计费,突发流量时费用爆表
- IP 被 DDoS 打爆:被恶意攻击,一夜损失千元
- 没有备份:服务器故障,数据全部丢失(无法恢复)
- 公网 IP 长期不用还在扣费:云厂商坑你没商量
- 数据库密码过于简单:被扫库,网站被挖矿
- 超出免费额度无告警:突然被扣费,毫无预警
- 磁盘满了导致系统崩溃:日志、临时文件堆积,恢复困难
这 10 个坑,每一个都能让你损失 ¥1000+。本文教你一一避开。
坑 1:续费涨价——买的时候 ¥24/月,续费要 ¥99/月
问题描述
新用户首购享受 8 折、5 折甚至 2 折优惠,但优惠只对"首购期"有效。续费时会恢复原价,导致续费价格是首购价的 2-4 倍。
实际案例:
首购:¥24/月(腾讯云轻量应用,2 折优惠)
续费:¥99/月(恢复原价)
涨幅:+312%(一夜涨价 75 元/月)
年度损失:¥9002026 年的更优解:现在有「续费同价」机型可以直接绕开这个坑——阿里云 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-001 | 2026-04-25 | ¥600/年 | 15 |
| RDS MySQL | 2026-05-10 | ¥1200/年 | 15 |
| CDN | 2026-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:带宽选错——按流量计费导致费用爆表
问题描述
云服务器有两种带宽计费模式:
- 按使用量(按流量):¥0.5-1.0/GB
- 按峰值(按带宽):¥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,导致:
- 网站无法访问(用户体验差)
- 按流量计费的话,费用爆炸(一夜 ¥1000+)
- IP 可能被云厂商封禁(需要更换 IP)
避坑方案
方案 A:使用 CDN(推荐)
CDN 本身自带 DDoS 防护,而且不会直接暴露你的源站 IP:
没有 CDN:
用户 → 你的服务器 IP(直接)→ 被攻击容易
用 CDN:
用户 → CDN 节点 → 你的源站 IP(隐藏)
DDoS 攻击 CDN
CDN 的 DDoS 防护吸收大部分流量方案 B:启用云厂商的 DDoS 防护
| 厂商 | 产品 | 免费额度 | 付费价格 |
|---|---|---|---|
| 腾讯云 | DDoS 防护 | 2Gbps | ¥3000/月起 |
| 阿里云 | DDoS 防护 | 5Gbps | ¥1000/月起 |
| Cloudflare | DDoS 防护 | 无限 | 免费版包含 |
推荐:用 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天) | ¥140 | 7 天 | 5-10 分钟 |
| 跨地域快照 | ¥200 | 7 天 | 10-15 分钟 |
| 云备份服务 | ¥300-500 | 30 天 | 1-2 小时 |
| 本地+云备份 | ¥500 | 60 天 | 依赖上传速度 |
推荐:自动快照 + 月度云备份(成本 ¥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:数据库密码过于简单——被扫库,网站被挖矿
问题描述
弱密码数据库容易被:
- 批量扫描破解(暴力破解数据库)
- SQL 注入(通过应用漏洞进入)
- 被黑后遭到敲诈(勒索赎金)
避坑方案
方案 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:磁盘满了导致系统崩溃
问题描述
日志、临时文件、缓存不断增长,磁盘满了会导致:
- 应用无法写入数据(数据库插入失败)
- 系统无法正常运行(无法创建临时文件)
- SSH 可能无法连接(最坏情况)
- 恢复困难(磁盘满了甚至 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+/年。
立即检查你的账户:
- 登录云厂商控制台
- 按照本文的"快速检查清单"逐项审查
- 如果发现问题,按对应"避坑方案"修复
现在就做,比事后补救便宜 100 倍。
延伸阅读:云服务器选购避坑指南 2026 · 成本优化顾问:在线自查资源浪费 · 比价雷达:当前活动价 · 云服务器比价 · TCO 计算器:算 3 年真实成本