zoukankan      html  css  js  c++  java
  • [nginx] nginx源码分析--内存管理

    1. nginx的内存,都是内存池管理,创建一个内存池就malloc一块内存出来.

    2. 两个重要的地方会新建内存池, 一个新连接建立的时候, 一个是request创建的时候.

    3. 在内存池里申请内存的时候,就是一块挨着一块的按顺序用. 这种叫small. 如果比内存池的size还大的,就malloc,然后把它索引到large链表里,

    large的链表头结构用small的方式申请.

    4. 由于频繁的申请, 每一个connect都要malloc, 可能会有性能问题. 这时候改进法案就是使用jemalloc或者tcmalloc.

    另外, nginx这个内存池的设计初衷是为了防止泄露,连接结束时, 所以相关资源一下释放掉. 而且, nignx的人认为实时的malloc多性能影响不大,

    参考这个讨论: https://www.ruby-forum.com/t/memory-pool/240348

    数据结构, 见下图:

  • 相关阅读:
    SpringRequestContext源码阅读
    MyBatis事务管理源码阅读
    linux查找依赖文件
    GitHub
    Qt Quick
    centos7下安装chrome
    软件使用
    排序算法之冒泡排序
    c++学习
    cent6.4使用
  • 原文地址:https://www.cnblogs.com/hugetong/p/14714780.html
Copyright © 2011-2022 走看看