Skip to content

Nginx creates more connection than poolsize, backlog to redis #265

Open
@nikhilrakuten

Description

@nikhilrakuten

I am using https://github.com/openresty/lua-resty-redis#connect method and keepalive()
i have kept pool size to 200 and backlog 20, Still it creates 2000 connections to redis during a load test.
is_connected, err = client:connect(REDIS_SERVER1,REDIS_PORT,{ pool_size = 200, backlog = 10})

ngx-lua : 5.1
workers : 2

What could be the reason for more number of connection from nginx to redis ? How can we control or restrict it ?

Used Nginx conf

user              www-data;
worker_processes  2;
worker_rlimit_nofile  10240;

include /etc/nginx/modules-enabled/*.conf;

error_log         /var/log/nginx/error.log;
pid               /var/run/nginx.pid;

events {
  worker_connections  10240;
  multi_accept  on;
  use epoll;
 }
 http {
  
    server_tokens       off;

    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    root        /srv/www/default;

    sendfile    on;
    tcp_nopush  on;
    tcp_nodelay on;

    keepalive_timeout   120;
    keepalive_requests  1000;
    reset_timedout_connection on;

    server_names_hash_bucket_size 128;
    types_hash_max_size 2048;
    types_hash_bucket_size  64;

    open_file_cache max=200000 inactive=20s;
    open_file_cache_valid 30s;
    open_file_cache_min_uses 2;
    open_file_cache_errors on;

    client_body_timeout   5;
    client_header_timeout 5;
    client_header_buffer_size 256;
    client_max_body_size  16m;

    ##
    # Gzip Settings
    ##

    gzip            on;
    gzip_http_version 1.0;
    gzip_buffers    4 16k;
    gzip_min_length 1024;
    gzip_comp_level 2;
    gzip_proxied    expired no-cache no-store private auth;
    gzip_types      text/plain text/css text/javascript application/javascript application/x-javascript text/xml application/xml application/xml+rss application/json;
    gzip_disable    "MSIE [1-6]\.(?!.*SV1)";

    set_real_ip_from    10.8.0.0/16;
    real_ip_header      X-Forwarded-For;
    real_ip_recursive   on;

    include /etc/nginx/conf.d/*.conf;

    

    # proxy settings
    proxy_buffer_size       16k;
    proxy_buffers           8   16k;
    proxy_connect_timeout   60s;
    proxy_send_timeout      60s;
    proxy_read_timeout      60s;

    # local log
    access_log  /var/log/nginx/$host.access.log ltsv;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/sites-enabled/*;
 }

Steps To Reproduce:

  1. Take a 2 core CPU machine
  2. Use resty.redis lua
  3. configure poolsize 200 and backlog 10
  4. Do a stress test to generate 1000 req/s to nginx.
  5. check the connected clients in redis to verify
  6. check netstat | grep '6379' to check open connections.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions