- 1. 海量日志耗尽磁盘空间引发的故障
- 2. 高并发访问数据库引发的故障
- 3. 高并发情况下锁引发的故障
- 4. 缓存引发的故障
- 5. 应用启动不同步引发的故障
- 6. 大文件读写独占磁盘引发的故障
- 7. 资料
现象:应用发布后,硬盘空间低于警戒值,服务器宕机。 分析:应用部署在服务器上,不断打印日志,但不定期清理日志,导致磁盘空间最终被耗尽。 总结:
- 应用自身的日志和第三方组件日志应分别配置。
- 日志输出级别不要设置太低,导致打印很多无关痛痒的信息。
现象:数据库负载居高不下。 分析:某条 sql 执行频率非常高,追查发现,被网站首页调用。 总结:首页不应该访问数据库。
现象:应用不定时地因为响应超时而报警,但是很快又超时接触,恢复正常。 分析:某个单例对象中多处使用了 synchronized,由于 this 对象只有一个,所有的并发请求都要排队获得者唯一的一把锁。 总结:使用锁操作要谨慎。
现象:没有新应用发布,但是数据库突然负载飙升,并很快失去响应。 分析:缓存服务器管理失当。 总结:当网站架构对缓存依赖性很强时,应该重视对缓存服务的管理。
现象:某应用发布后,服务器立即崩溃。 分析:后台服务还没准备好,前台应用就开始接受请求,导致故障。 总结:发布脚本中不断用 curl 命令访问后台应用特定页面,直到收到 OK,再启动前台应用。
现象:上传图片非常慢。 分析:文件存储最有可能出错的地方是存储服务器。检查发现,大部分文件大小比较小,少数几个文件非常大,读写大文件比较耗时,在这个读写时间内,磁盘基本被大文件操作独占,导致其他用户的文件操作缓慢。 总结:文件存储下需要根据不同文件类型和用途进行管理。