PHP大会笔记:聊聊稳定性保障那些事儿

常见稳定性问题有哪些?
1、环境不一致问题
2、服务未隔离
3、服务化后,调用关系复杂,问题排查比较苦难
 
 
稳定性保障的原则
1、环境一致性原则(开发,测试,准生产,线上)
 需要注意的因素,版本(PHP版本、服务器版本等),配置(无特殊化配置),路径(应用、日志等)
2、环境隔离原则
物理隔离:两个服务部署在两台机器上,尽量少多个服务部署在同一台机器上
服务隔离:A调用B服务,要有措施去处理,A方如超时(防止拖挂应用),熔断(类似于保险丝,当要调用的服务负载过高,不可用时,自动kill自己),B方则可以进行限流。
 
有效监控原则
监控项目有系统级和业务层面
1、系统:CPU、Disc、Memory、NetWork、Process……
2、业务:ErrorLog、Data Status……
 
监控策略
监控可用性
不只是监控服务是否存在,更重要的是监控服务是否可用
 
报警策略
不要让报警称为骚扰
1、不要让报警项设置的太敏感
2、不同级别不同的报警方式
3、报警内容要有意义,如所在机房、机柜、时间、问题描述等
 
充分预案原则
面向问题预案
1、想一想都会有哪些问题
2、所使用的任何服务都不可靠
3、服务不可用时,如何处理
 
预案策略
1、设定超市,避免过长等待
2、默认数据,服务不可用时使用
3、预案尽量平台化、自动化执行
 
冲分预案原则
预案验证
1、周期性验证
2、模拟服务不可用,封端口
3、查看服务表现是否符合预期
 
追根溯源原则
验证
 
恢复服务
常规操作:摘机、重启、回滚、降级
 
保留现场
目的是为了获取数据
系统内部数据,系统外部监控、保留运行状态
 
问题排查
数据+知识经验+工具 = 问题排查

常见的问题排查工具

案例
1、有一个PHP漏洞引起的环境性一致性问题
multipart/form-data 远程DOS漏洞
 
环境各种不一致:PHP版本、下线方式、配置文件、文件路径
 
改造流程:
RPM打包管理、服务器控制脚本(控制上下线方式) --》 公司yum源
为什么rpm? 打包方便、安装简便、解决依赖关系
 
最终Docker化,保障机器无状态
 
2、服务隔离的案例
PC、APP

WechatIMG321.jpeg

 
 
3、其他隔离
读写分离、SQL分离、慢SQL隔离
 
 
如何设计服务调用链路分析系统?
链路可追踪

WechatIMG376.jpeg

 

0 个评论

要回复文章请先登录注册