Skip to content

Instantly share code, notes, and snippets.

@hiboma
Last active September 4, 2019 08:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hiboma/0d967d63a226bbda8611dfb8abe1d69b to your computer and use it in GitHub Desktop.
Save hiboma/0d967d63a226bbda8611dfb8abe1d69b to your computer and use it in GitHub Desktop.

Introdcution

fsnotify: Fix fsnotify_mark_connector race

Description

CentOS7.5 + nginx + td-agent + in_tail plugin is able to reproduce this bug

Steps to repdocution

  1. Install and start nginx
  2. Install and start td-agnet
  3. Install ab ( via httpd )
  4. Try ab against to http://localhost

configurations

/etc/nginx/nginx.conf

-bash-4.2$ cat /etc/nginx/nginx.conf
# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {

    log_format ltsv "vhost:$host"
                    "\ttime_local:$time_local"
                    "\thost:$remote_addr"
                    "\tmethod:$request_method"
                    "\tpath:$request_uri"
                    "\tversion:$server_protocol"
                    "\tstatus:$status"
                    "\tsize:$body_bytes_sent"
                    "\treferer:$http_referer"
                    "\tua:$http_user_agent"
                    "\trestime:$request_time"
                    "\tustime:$upstream_response_time";

    access_log  /var/log/nginx/access.log  ltsv;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

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

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

}

/etc/td-agent/td-agent.conf

-bash-4.2$ cat /etc/td-agent/td-agent.conf 
####
## Output descriptions:
##

<source>
  type tail
  path /var/log/nginx/access.log
  pos_file /var/log/td-agent/nginx-access.log.pos
  tag clear
  format ltsv
</source>

<match clear>
  type null
</match>

do requests !!!!

while [ 1 ]; do ab -c 8 -n 100000 -k http://localhost/; done;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment