事故现象: 下午14.52分,企业微信出现如下所示zabbix报错,显示ERP访问失败
第一时间检查应用,发现应用出现504
看起来像是Nginx的问题
随后开始对Nginx进行逐项检查
检查Nginx服务状态,nginx状态正常。
检查Nginx服务器磁盘空间,空间正常。但是df -h 命令输出极慢
检查Nginx服务器负载状态,CPU负载出现异常升高的情况。
为尽快恢复应用,决定先尝试重启nginx,发现应用在重启后短暂恢复了几秒钟,随后再次504
继续检查服务器内核日志,内核日志正常 检查Nginx error日志,发现Nginx error日志中出现大量车配佳cpj.erp.qipeidao.com访问异常的报错,报错显示静态资源不存在
13.50左右操作过的唯一变更,即重启了172.26.139.224这台服务器。172.26.139.224由于新增部署了UAT环境的网关项目,导致内存爆满,系统直接夯死,不得不在13.50分进行重启恢复。同时172.26.139.224也是车配佳的前端静态资源所在服务器,224的车配佳前端资源通过nfs共享挂载至了生产Nginx上
综合以上现象,可以判断出事故原因如下: 重启172.26.139.224这台服务器时,nfs服务并没有设置自启动,导致重启后nfs服务挂了。连锁导致映射至生产nginx的磁盘映射失效,(这也是df -h命令很慢的原因) 当请求尝试访问车配佳网站时,nginx无法正确找到车配佳的静态资源。从而导致CPU负载过高,应用504。
在此问题中还有一个现象,即下午13.50分左右nginx其实已经出现问题,但是用户使用正常,是因为我们在阿里云做了全站加速,阿里云的域名解析的缓存会有一个小时的时间,所以用户在故障发生一个小时后才会反馈异常,因为此时cdn缓存已过期。
解决以及优化方案 1.检查所有服务器的nfs服务器并配置自启动。 2.降低zabbix上关于nginx服务器CPU负载报警的阈值,现有报警阈值上限过高,如果在cdn缓存的一个小时内zabbix出现报警,可以尽早发现此问题并处理。 3.新增专属静态资源nginx,专门负责静态资源的转发,将此类静态资源挂载,从生产nginx中剥离。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。