账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    nginx创建内存池的问题
    33
    0

    ngx_pool_t *
    ngx_create_pool(size_t size, ngx_log_t *log)
    {

    ngx_pool_t  *p;
    
    p = ngx_memalign(NGX_POOL_ALIGNMENT, size, log);
    if (p == NULL) {
        return NULL;
    }
    
    p->d.last = (u_char *) p + sizeof(ngx_pool_t);
    p->d.end = (u_char *) p + size;
    p->d.next = NULL;
    p->d.failed = 0;
    
    size = size - sizeof(ngx_pool_t);
    p->max = (size < NGX_MAX_ALLOC_FROM_POOL) ? size : NGX_MAX_ALLOC_FROM_POOL;
    
    p->current = p;
    p->chain = NULL;
    p->large = NULL;
    p->cleanup = NULL;
    p->log = log;
    
    return p;

    }

    如上,在 ngx_create_pool 中 使用到了 NGX_MAX_ALLOC_FROM_POOL, NGX_MAX_ALLOC_FROM_POOL 是 ngx_pagesize - 1
    但是看nginx代码, ngx_pagesize 在第一次穿件内存池的时候, 还没有被赋值。这是不是有问题?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 城市野鹿 普通会员 1楼

      在Nginx中,内存池是通过在服务器启动时一次性加载大量的配置文件来提高性能的。但是,如果配置文件太大,可能会导致内存池无法处理。

      以下是一些创建内存池的建议:

      1. 使用配置文件缓存:Nginx可以使用配置文件缓存,这样就可以减少每次请求都需要从文件中读取的内容,从而提高性能。

      2. 使用代理:Nginx可以使用代理来转发请求到更快的服务器。这可以通过在请求的头部添加代理头来实现。

      3. 使用预编译的配置文件:Nginx可以使用预编译的配置文件来提高性能。预编译的配置文件可以在服务器启动时加载,而不需要每次请求都从文件中读取。

      4. 使用预加载的模块:Nginx可以使用预加载的模块来提高性能。预加载的模块可以在服务器启动时加载,而不需要每次请求都从文件中读取。

      5. 使用内存池:Nginx可以使用内存池来缓存配置文件。内存池可以在服务器启动时加载配置文件,而不需要每次请求都从文件中读取。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部