部署、运维与性能

自己做的东西上线总崩,部署和性能要懂哪些基本功?

自己做的东西上线总崩,部署和性能要懂哪些基本功?

1 个回答我来回答
匿名用户

自己写的项目在本机跑得好好的,一上线就崩,多半不是代码逻辑出了问题,而是部署和运行时的基本功没做够。这块不需要学多深,但每一样都得有点数。

日志和监控:崩了至少要知道为什么崩

上线前先确认几件事:

  • 错误日志能落盘,别只打到控制台,容器一重启就什么都没了;
  • 有集中的地方看日志,而不是挨个登服务器翻文件;
  • 关键指标有人盯,比如 CPU、内存、磁盘、接口响应时间和错误率;
  • 加一个健康检查接口,配上告警通知到手机,出问题第一时间知道,而不是等用户来告诉你。

写日志时带上时间、请求 ID 和堆栈,排查起来效率完全不同;同时别往日志里打密码、token 这类敏感信息。

备份和回滚:出事时能不能快速恢复

最怕的不是故障本身,而是没法快速恢复。数据库要定期备份,并且真的演练一次恢复,没验证过的备份等于没有备份。部署时保留上几个可用版本,出问题一键切回旧版,比在线上临时改代码稳得多。改表结构要格外小心,删列、改类型这类破坏性操作,先备份再动手,想清楚能不能回退。

慢查询、缓存和压测:知道系统的上限在哪

性能问题十有八九出在数据库。学会看慢查询日志,给高频查询加合适的索引;留意 N+1 查询,也就是在循环里一条条查数据库,这是 Web 框架里的经典坑。缓存方面,先想清楚读多写少的数据才值得缓存,再考虑用 Redis 或框架自带的缓存,同时设好过期时间,别让数据不一致的麻烦超过缓存带来的收益。上线前用 ab、wrk 或 JMeter 压一下核心接口,弄清楚每秒能扛多少请求、瓶颈在应用还是数据库。压测放在测试环境做,直接压生产就是事故了。

这些基本功说穿了就是一句话:出事之前能预警,出事之后能恢复,平时心里有底。