网站首页 > 精选教程 正文
背景
Nginx 部署于linux操作系统做为WEB层反向代理来自外部的网页或者API请求
问题
Nginx运行过程中会因为OOM问题,其进程会被linux内核杀掉,从而导致服务端连接请求失败或者超时
如何诊断
1 通过log索引分析工具,找出OOM的发生模式,是时常发生?是否具有一定的周期性?具体来说,查找OOM暴露出来的关键字,比如:“Out of memory"从索引工具生成问题发生频率图,确定问题发生的时间周期模式。
2 搜集内存有关的数据
2.1 操作系统级别的内存报告,这些数据会通过部署在虚机上的代理(比如:vmstat/free etc)索引进入日志管理系统比如:splunk 或者ELK,看操作系统内存消耗会不会呈现和问题发生相同的模式。
2.1 进一步分析,从进程级别,分析某个时间点上操作系统哪些进程消耗掉了大部分内存,基于命令比如(ps/top)可以知道哪些进程吃掉了内存。然后用这里得出的结果, 反过来通过延申时间看是不是和以上两者具备相同的发生模式。
3 解决问题关键
3.1 具备全局的日志索引系统,可以搜集nginx集群各个机器的不同层次的数据,并能给出图形化的展示。
3.2 对nginx架构有基本的理解,比如:一个主进程用来管理多个从进程,内存消耗主要来自虚拟主机的配置的数目和系统接收的外部流量。这些基本知识可能帮助,早期还未发现OOM的时候,追踪跟到内存溢出。
结语
其实对任何系统报出来的OOM问题都可能采用相同的思路:发现问题,形成模式,找促成因素,解决问题。
猜你喜欢
- 2024-10-13 Nginx为什么快到根本停不下来? nginx bug
- 2024-10-13 高性能网关-Nginx-proxy_next_upstream自定义配置错误重试机制
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)