| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 一次Web服务异常排查 -> 正文阅读 |
|
[系统运维]一次Web服务异常排查 |
前情提要2021/11/28 23:00(UTC +8) 收到消息有个web服务不可用。 日志排查syslog23:41左右重启机器后登录检查日志,发现大量 sshd log同时检查sshd日志,发现同样存在大量 fork: Cannot allocate memory查询 一种是机器内存不够 一种是可能是进程数超限导致。系统内部的总进程数达到了
这台机器没有做监控,无法查看历史内存使用状况。不过机器本身配置较高:8核32G,机器上也没有部署什么吃内存的程序。并且没有从日志中有搜索到OOM的日志,我不倾向这个原因。
搜索日志的时候发现了一个
分析已知问题产生的原因,但是这个原因是怎么直接影响服务的呢? 在查看syslog日志的时候发现dhcp的报错日志 dhclient出现
关于dhclientdhclient是dhcp的客户端,关于dhcp协议的信息可以看这里,Linux上运行的这个客户端用于到DHCP服务器获取ip,日志中11:56到15:43中间明显出现日志断层,推测是DHCP无法创建新进程,导致获取不到ip信息。 测试这次测试将通过kill掉dhclient进程,看服务器发生什么变化,同时因为服务器ip获取不到,ssh将失效,需要准备其他方式登录机器。 测试准备将测试域名绑定到测试服务机,添加有密码的账号,并添加root权限,方便在ip出问题的时候能通过GCP的串口登录到机器检查 测试前ip信息80端口访问80端口,后端程序简单返回。 测试开始kill掉dhcilent的进程
GCP串口连接到服务器测试结果由于dhclient每次获取ip的时候都有实效性,在kill掉dhclient进程的时候不会马上失效。 这时候访问域名,发现显示超时,这与当时出现问题的时候访问转圈是同样的现象。问题重现! 总结supervisor管理的一个进程被无限重启,进程数超过上限,导致其他服务fork不了进程。 同时dhcp也fork不了进程,机器的ip信息不能更新,也就是没有ip。 这个时候访问域名,解析到ip,又因为这个ip已经跟原来的机器没有绑定了,所以没有响应,直到超时。 ps: 其实结果不够严谨,奈何当时机器没有设置账号密码,GCP串口登录不上去,无法第一时间登录现场查看,并且时间也有限(领导也着急要个结果),只能查个大概了。 比如说supervisor的日志里面显示的 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 3:30:27- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |