1.最大限度地避免直接对生产系统进行人为操作最为妥善1.1.人为干预生产环境会导致问题1.1.1.把“无须摆弄”做到极致,就是“不可变”的基础设施,因为那里根本就不存在供人摆弄的途径1.1.2.如果系统需要大量手动操作来保持运行,那么管理员就必须养成始终记日志的习惯1.1.3.通过限制系统管理员登录生产环境服务器的需求,鼓励更好的运维纪律1.2.系统应该能够在没有人工干预的情况下,至少运行一个发布周期1.2.1.系统应在无须手动清理磁盘或每晚重新启动的情况下,至少运行一个发布周期1.2.2.在发布周期中,那些从版本控制系统中持续部署的微服务,应该非常易于实现稳定部署2.存储桶2.1.稳态模式表明,针对每个累积资源的机制,要相应存在另一个机制回收该资源2.2.随着数据的累积,存储桶会以一定的速率填满2.3.存储桶必须以相同或更快的速率清空数据,否则最终会溢出2.4.当该存储桶溢出时,坏事会发生2.4.1.服务器停机2.4.2.数据库变慢2.4.3.抛出错误信息2.4.4.响应长3.数据清除3.1.数据清除总会被忽视3.2.计算资源总是有限的,因此不能无限制地持续增加消费3.3.数据增长最明显的症状,就是数据库服务器上的I/O速率稳步增加3.4.在恒定的系统负载下,也能看到延迟时间会增加3.5.数据清除的另一半工作,是确保在清除数据之后应用程序仍能正常工作,而这需要进行编程和测试3.6.DBA可以通过创建脚本清除数据,但他们不知道删除数据之后,应用程序会如何运转3.6.1.为了保持逻辑完整性(特别是在使用对象关系映射工具时),应用程序需要清除自己的数据4.日志文件4.1.不要无限量保留日志文件4.1.1.如果日志文件无限制地增大,最终会填满其所在的文件系统4.2.文件系统空间耗尽之后的状况就无从得知了4.2.1.最好的情况,就是日志文件系统与任何关键数据存储(例如事务)是分离的,而且应用程序代码本身具有足够的安全防护能力,用户永远不会意识到有任何错误发生4.3.最好一开始就避免一直往文件系统里添加内容4.3.1.基于日志文件的大小来配置日志文件回转4.4.日志对系统的明晰性有极大的帮助,确保所有的日志文件都能被回转使用,并最终被清除4.5.生产环境系统的日志文件信噪比很糟糕4.5.1.最好能尽快将日志文件从单个主机上移走,发送到集中式日志记录服务器(例如Logstash),进而对其进行索引、搜索和监控4.6.多年保留日志4.6.1.单个机器不可能把日志保留这么长时间,大多数机器的寿命也不会这样长4.6.2.最好的办法是尽快从生产环境的机器中取出日志,将它们存储在中央服务器上,并对其密切监视,防止篡改4.6.3.如果合规性要求保留,则在非生产服务器上执行5.内存中的缓存5.1.内存中的缓存可以加快应用程序的运行速度5.2.若不对内存中的缓存加以控制,执行速度会降低5.3.低内存的状态对稳定性和容量都是威胁5.3.1.需要限制缓存可消耗的内存量5.4.如果缓存键数量没有上限,则必须限制缓存大小,并且采用某种形式的缓存失效机制5.5.定时刷新缓存是最简单的缓存失效机制5.5.1.定时刷新缓存能够处理90%的情况5.6.“最近最少使用”或工作集算法