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内存占用过高相关推荐

  1. zabbix监控mysql内存_zabbix通过自定义脚本监控nginx,php-fpm和mysql占用内存数和进程的个数...

    zabbix通过自定义脚本监控nginx,php-fpm和mysql占用内存数和进程的个数 首先,在zabbix脚本目录下添加一个脚本,写入如下代码 #!/bin/bash #license:GPL ...

  2. linux 释放进程res_linux下查询进程占用的内存方法总结

    linux下查询进程占用的内存方法总结 假设现在有一个「php-cgi」的进程 ,进程id为「25282」.现在想要查询该进程占用的内存大小.linux命令行 下有很多的工具进行查看,现总结常见的几种 ...

  3. Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决

    Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决 参考文章: (1)Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决 (2)https://www.cnblog ...

  4. Cache占用过多内存导致Linux系统内存不足问题排查

    问题描述 Linux服务器内存使用量超过阈值,触发报警. 问题排查 首先,通过free命令观察系统的内存使用情况,显示如下: total       used       free     share ...

  5. Linux安装到一半没有内存了,无论手机运行内存有多大平时都会占用了一半,原来是因为这个...

    现在手机几乎成为大家在生活中日常必须的一个工具了.而随着手机的功能越来越多,我们在手机上花费的时间也在不断的增多.不知道大家有没有发现,在用安卓手机的时候,明明是两个运行内存相差甚远的手机,安装的ap ...

  6. Linux网络协议栈:Linux 中每个 TCP 连接最少占用多少内存?

    Linux 中每个 TCP 连接最少占用多少内存? https://zhuanlan.zhihu.com/p/25241630 因为原文作者明确说明,不可转载,这里我只给出链接,仅供参考.

  7. linux查看native进程,Android 分析应用程序占用native内存

    Android 应用开发大家都知道可以通过DDMS来查看应用程序进程占用的内存大小:然而Native 内存并不能在虚拟堆上看到:Android系统基于Linux,这样的话其具备Linux的大多数特性: ...

  8. linux 空闲物理内存 很少,linux系统free查看内存,发现可用物理内存很少,但是查看进程却发现没进程占用大内存...

    1.现象 当我们使用free命令查看内存的时候,发现可用物理内存很少,但是通过进程查看没有进程占用大内存. [root@nexus-76150 ~]# free -h total usedfreesh ...

  9. Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决(续)

    Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决(续) 参考文章: (1)Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决(续) (2)https://www. ...

  10. LINUX类主机JAVA应用程序占用CPU、内存过高分析手段

    本文转载 线上应用故障排查之一:高CPU占用 DBA+社群(dbaplus)丁启良 1. 应用程序占用资源高问题 目前大部分应用程序采用的是JAVA语言开发,在产品上线使用一段时间后,经常会出现某个J ...

最新文章

  1. CentOS 7下编译安装Open Babel2.4.1和python绑定
  2. 用好这 42 款 Chrome 插件,每年轻松省出一个年假(附下载)
  3. 二叉树、二叉排序树及其遍历
  4. Matlab C++混合编程 在VisualStudio下的编程 使用了Opencv库
  5. hdu 3405 world islands
  6. 学硕计算机考296算高分么,考研总分是多少算高分?考研340分是什么水平?
  7. 99%的人都不知道的鸡兔同笼解法!
  8. 别再用代码开发了!整理了30套精美可视化大屏模板,零套路直接领
  9. 微信UnionID的作用
  10. 黑客帝国_屏幕保护程序
  11. 科立捷默认频率_科立捷电子产品技术参数.doc
  12. mysql workbench 闪电_MySQL Workbench下载|可视化数据库设计建模(MySQL Workbench) 8.0 最新版-闪电下载吧...
  13. 9月18日 第5届 FLASH开发者交流会 暨FLASH CAMP 2010
  14. 1644 -- 字符串
  15. java判断经纬度是否在扇形内_地图学复习 (题) (带答案)
  16. java8 List操作
  17. description标签如何正确使用?
  18. 2023秋招--腾讯天美--游戏客户端--二面面经
  19. 自己开店怎么记账才能更清楚
  20. SQL-3(数据筛选)

热门文章

  1. 现代科技沃土滋养下的数据黑市和网络犯罪
  2. c语言中static作用
  3. 柬埔寨月薪4万敲代码?真相是我差点丢了性命!
  4. oracle 11 wm concat,【Oracle开发】关于11.2上WMSYS.WM_CONCAT的workaround
  5. 胡适:非个人主义的新生活
  6. java oo_我爱oo,我爱java
  7. 我爱刷题001-2018.02.01
  8. Zynq7000开发系列-1(Vivado HLx 2016.4下载及安装)
  9. oracle lag、lead函数
  10. Android 代码中动态设置字体大小-TextView.SetTextSize()