linux nginx 内存占用,nginx内存占用过高
nginx内存占用过高.md
现象
nginx运行一段时间后,内存占用非常高,超出系统最大内存后,开始使用SWAP,直至SWAP用尽,系统崩溃。内核参数vm.swappiness = 1。
如图:
监控趋势图:
分析和排查
因为之前使用的nginx版本为 1.11 ,出现内存泄露bug的可能性较小,并且网上没有相关反馈。
之后开始分析nginx的配置文件,首先发现的比较特殊的配置是防刷模块配置。
修改了防刷模块配置,观察一段时间,无效!
于是继续查找配置文件,发现client_header_buffer_size有点大,做了调整
client_header_buffer_size20000k;
#@修改为
client_header_buffer_size32k;
观察了几天,问题解决了,再也没出现内存占用过高的问题。汗,前人挖的大坑啊,访问量低了还看不出来。
分析
Sets buffer size for reading client request header. For most requests, a buffer of 1K bytes is enough. However, if a request includes long cookies, or comes from a WAP client, it may not fit into 1K. If a request line or a request header field does not fit into this buffer then larger buffers, configured by thelarge_client_header_buffers directive, are allocated.
Nginx 使用 client_header_buffer_size 缓存客户端的请求头,对于大部分请求,1K的默认值已经足够了。一旦请求头超过了1K,空间不够了,nginx就通过 large_client_header_buffers 按需扩容,这样做可以平衡资源和性能。
比如说大部分请求头的大小在 2K 以内,小部分的请求头在 10K 左右,此时理论上我们可以通过调整 client_header_buffer_size 到 10K 来解决问题,不过这样的话无疑浪费了宝贵的内存,更好的方法是调整 client_header_buffer_size 到 2K 满足大部分请求头的需求,至于小部分 10K 的请求头,则通过调整 large_client_header_buffers 来满足。
参考资料
linux nginx 内存占用,nginx内存占用过高相关推荐
- zabbix监控mysql内存_zabbix通过自定义脚本监控nginx,php-fpm和mysql占用内存数和进程的个数...
zabbix通过自定义脚本监控nginx,php-fpm和mysql占用内存数和进程的个数 首先,在zabbix脚本目录下添加一个脚本,写入如下代码 #!/bin/bash #license:GPL ...
- linux 释放进程res_linux下查询进程占用的内存方法总结
linux下查询进程占用的内存方法总结 假设现在有一个「php-cgi」的进程 ,进程id为「25282」.现在想要查询该进程占用的内存大小.linux命令行 下有很多的工具进行查看,现总结常见的几种 ...
- Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决
Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决 参考文章: (1)Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决 (2)https://www.cnblog ...
- Cache占用过多内存导致Linux系统内存不足问题排查
问题描述 Linux服务器内存使用量超过阈值,触发报警. 问题排查 首先,通过free命令观察系统的内存使用情况,显示如下: total used free share ...
- Linux安装到一半没有内存了,无论手机运行内存有多大平时都会占用了一半,原来是因为这个...
现在手机几乎成为大家在生活中日常必须的一个工具了.而随着手机的功能越来越多,我们在手机上花费的时间也在不断的增多.不知道大家有没有发现,在用安卓手机的时候,明明是两个运行内存相差甚远的手机,安装的ap ...
- Linux网络协议栈:Linux 中每个 TCP 连接最少占用多少内存?
Linux 中每个 TCP 连接最少占用多少内存? https://zhuanlan.zhihu.com/p/25241630 因为原文作者明确说明,不可转载,这里我只给出链接,仅供参考.
- linux查看native进程,Android 分析应用程序占用native内存
Android 应用开发大家都知道可以通过DDMS来查看应用程序进程占用的内存大小:然而Native 内存并不能在虚拟堆上看到:Android系统基于Linux,这样的话其具备Linux的大多数特性: ...
- linux 空闲物理内存 很少,linux系统free查看内存,发现可用物理内存很少,但是查看进程却发现没进程占用大内存...
1.现象 当我们使用free命令查看内存的时候,发现可用物理内存很少,但是通过进程查看没有进程占用大内存. [root@nexus-76150 ~]# free -h total usedfreesh ...
- Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决(续)
Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决(续) 参考文章: (1)Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决(续) (2)https://www. ...
- LINUX类主机JAVA应用程序占用CPU、内存过高分析手段
本文转载 线上应用故障排查之一:高CPU占用 DBA+社群(dbaplus)丁启良 1. 应用程序占用资源高问题 目前大部分应用程序采用的是JAVA语言开发,在产品上线使用一段时间后,经常会出现某个J ...
最新文章
- CentOS 7下编译安装Open Babel2.4.1和python绑定
- 用好这 42 款 Chrome 插件,每年轻松省出一个年假(附下载)
- 二叉树、二叉排序树及其遍历
- Matlab C++混合编程 在VisualStudio下的编程 使用了Opencv库
- hdu 3405 world islands
- 学硕计算机考296算高分么,考研总分是多少算高分?考研340分是什么水平?
- 99%的人都不知道的鸡兔同笼解法!
- 别再用代码开发了!整理了30套精美可视化大屏模板,零套路直接领
- 微信UnionID的作用
- 黑客帝国_屏幕保护程序
- 科立捷默认频率_科立捷电子产品技术参数.doc
- mysql workbench 闪电_MySQL Workbench下载|可视化数据库设计建模(MySQL Workbench) 8.0 最新版-闪电下载吧...
- 9月18日 第5届 FLASH开发者交流会 暨FLASH CAMP 2010
- 1644 -- 字符串
- java判断经纬度是否在扇形内_地图学复习 (题) (带答案)
- java8 List操作
- description标签如何正确使用?
- 2023秋招--腾讯天美--游戏客户端--二面面经
- 自己开店怎么记账才能更清楚
- SQL-3(数据筛选)
热门文章
- 现代科技沃土滋养下的数据黑市和网络犯罪
- c语言中static作用
- 柬埔寨月薪4万敲代码?真相是我差点丢了性命!
- oracle 11 wm concat,【Oracle开发】关于11.2上WMSYS.WM_CONCAT的workaround
- 胡适:非个人主义的新生活
- java oo_我爱oo,我爱java
- 我爱刷题001-2018.02.01
- Zynq7000开发系列-1(Vivado HLx 2016.4下载及安装)
- oracle lag、lead函数
- Android 代码中动态设置字体大小-TextView.SetTextSize()