一个小米SRE的日常工作

640?wx_fmt=png

本文主要介绍了小米SRE的日常工作及遇到的各方面问题和处理方法,值得借鉴。1、日常巡检发现新扩容的一台Web转发服务器负载异常。比原来的稍高但仍然在正常范围内,but作为一个SRE是不能放过任何异常。
640?wx_fmt=jpeg
2、安排好其他日常工作开始排查。
新增服务器系统版本跟原来不一致。(原来为CentOS 6.x,异常服务器为CentOS 7.x) ,异常服务器从LVS下线重装,保证系统版本都为6.x依然没有恢复。(论:保持环境统一重要性。)
为什么要重新装CentOS 6.x呢?当时怀疑线上Nginx是在CentOS 6.x环境下编译的,运行在CentOS 7.x下面,可能会是这个原因。
仔细对比下环境,确认系统中Nginx版本Nginx配置完全一样。
640?wx_fmt=jpeg
3、通过火焰图分析大部分CPU占用为https握手阶段函数(bn_sqr8x_interna,mul4x_internall),查看log发现问题服务器及正常服务器https及http请求数量相同。(此路不通)

640?wx_fmt=jpeg


4、既然软件环境一样,来看硬件及驱动。通过监控确定新增一批服务负载都比原来的稍高,新增服务器及原来服务器CPU,内存硬盘配置一样。确定新增服务器没有,节能没开,CPU内存频率正常,硬盘读写正常,找系统同事查看未见硬件故障。部分驱动版本信息不同,进行了替换验证,整个过程是痛苦的,感谢系统及dell的同学。(大家一个team一起背锅)
640?wx_fmt=jpeg
5、通过找不同,没有解决了问题。但是我们还是要继续,现在我们很好奇很想知道答案。继续分析,我们发现了问题,服务器CPU很不均衡。为什么不均衡呢,strace一下发现大量的(Resourcetemporarilyunavailable)CPU在空转。
来看下Nginx对请求分配的模型。Master进程监听端口号(例如80),所有的nginx worker进程开始用epoll_wait来处理新事件(Linux下),如果不加任何保护,当一个新连接来临时,会有多个worker进程在epoll_wait后被唤醒,然后只有一个线程处理这个请求,其他的则会失败,CPU空转负载升高。这就是所谓的epoll_wait惊群效应。当然Nginx会有办法处理这个问题:加锁。
640?wx_fmt=jpeg
6、剩下的就简单了。对问题服务器手动配置上锁(accept_mutex),然后负载正常了(每把锁都是双刃剑,加不加要具体问题具体分析)。但是,你可能会有疑问,版本是一样的啊,正常的服务器也没手动加锁啊。伟大的福尔摩斯说过:“When you have eliminated the impossibles,whatever remains,however improbable,must be the truth.”真相就是线上Nginx根本不是一个版本(一脸懵逼)。手动查看,发现线上运行的Nginx文件被删除了,线上运行了一个不存在的版本,存在的版本是更新了的。原来正常的服务器上线是reload新版Nginx,不会生效,新增的服务器是start运行的新版Nginx。
640?wx_fmt=png
7、下面的问题就是tengine2.1跟tengine2.2accept_mutex参数由默认的on改为了off,为什么要改呢?与时俱进,当初这个参数是为了避免在epoll_wait出现惊群效应,可以参考:https://www.jianshu.com/p/21c3e5b99f4a。新版内核已经有了处理这个的方法,不再需要Nginx单独配置。
总结:反思并完善整个运维流程,以避免相关问题再次发生,对SRE来说永远是最重要的。
一些启示:
  1. 线上环境尽量完全一致(容器化可以很好的解决这一点);

  2. 每次变更都要谨慎及测试。


本文转载自公众号:小米运维,ID:MI-SRE, 点击查看原文


Kubernetes入门与进阶实战培训

640?wx_fmt=png


Kubernetes入门与进阶实战培训将于2019年4月19日在北京开课,3天时间带你系统学习Kubernetes,学习效果不好可以继续学习。本次培训包括:Docker基础、容器技术、Docker镜像、数据共享与持久化、Docker三驾马车、Docker实践、Kubernetes基础、Pod基础与进阶、常用对象操作、服务发现、Helm、Kubernetes核心组件原理分析、Kubernetes服务质量保证、调度详解与应用场景、网络、基于Kubernetes的CI/CD、基于Kubernetes的配置管理等,点击下面图片查看具体详情。
640?wx_fmt=jpeg
要下载Google SRE(Site Reliability Engineering)工作手册,可以按照以下步骤进行操作: 1. 访问Google官方网站:打开您的网页浏览器,输入search.google.com,并按下Enter键,即可访问Google的搜索主页。 2. 搜索Google SRE工作手册:在搜索框输入“Google SRE工作手册下载”,然后点击搜索按钮。 3. 选择可信的资源:在搜索结果页面,根据标题和描述,选择来自官方网站或信任的技术资源网站的链接,以获取真实可靠的下载来源。 4. 导航至下载页面:进入所选链接后,根据网站上的导航栏或搜索框,找到与Google SRE工作手册相关的下载页面或资源库。 5. 阅读和同意条款:在下载页面上,可能需要先阅读并同意使用条款和条件,确保您理解并遵守任何相关限制或规定。 6. 确认下载格式:选择适合您的需求的下载格式,可能有PDF、EPUB、MOBI等多种选择。如果不确定,可以下载PDF格式,因为它是广泛支持的文档格式。 7. 点击下载链接:在下载页面上找到适当的链接,例如“下载”、“获取”或“保存”按钮,并单击它以开始下载。 8. 等待下载完成:根据网络连接速度和文件大小,可能需要等待一段时间,直到下载完成。期间请确保您的网络连接正常,以避免下载断。 9. 在本地设备上查找:一旦下载完成,您可以在计算机或移动设备的默认下载目录或指定的文件夹查找Google SRE工作手册。 请注意,Google SRE工作手册是由Google官方提供的教育资源,因此最好从官方渠道或可信的技术资源网站下载,以确保您获取到准确、安全和最新的版本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值