<div dir="ltr">We have a pretty hard-hitting API application in NodeJS that is deployed in AWS ECS using nGinx as a sidecar container to proxy to the NodeJS services.<div><br></div><div>We have some odd issues that occur where the NodeJS application reports millisecond processing times up to res.send() but occasionally, the browser reports time for response 2 - 5 seconds.</div><div><br></div><div>Connections don't timeout, just occasionally hang after the NodeJS process completes the request.  The process in NodeJS and within the output, reports 100ms processing time but something is "catching" random outgoing requests for 2-5 seconds before delivering.  We believe nGinx is the culprit but can't figure it out.  Any help would be appreciated.</div><div><br></div><div>Here is the config</div><div>----<br>worker_rlimit_nofile 2048;<br><br>events {<br>  worker_connections 1024;<br>  worker_aio_requests 64;<br>  accept_mutex on;<br>  accept_mutex_delay 500ms;<br>  multi_accept on;<br>  use epoll;<br>  epoll_events 512;<br>}<br><br>http {<br>  # Nginx will handle gzip compression of responses from the app server<br>  gzip on;<br>  gzip_proxied any;<br>  gzip_types text/plain application/json text/css text/javascript application/javascript;<br>  gzip_min_length 1000;<br>  client_max_body_size 10M;<br>  tcp_nopush on;<br>  tcp_nodelay on;<br>  sendfile on;<br><br>  # Offset from AWS ALB to prevent premature closed connections<br>  keepalive_timeout 65s;<br><br>  # Erase all memory associated with the connection after it times out.<br>  reset_timedout_connection on;<br><br>  # Store metadata of files to increase speed<br>  open_file_cache max=10000 inactive=5s;<br>  open_file_cache_valid 15s;<br>  open_file_cache_min_uses 1;<br><br>  # nGinx is a proxy, keep this off<br>  open_file_cache_errors off;<br><br>  upstream node_backend {<br>    zone upstreams 256K;<br>    server <a href="http://127.0.0.1:3000">127.0.0.1:3000</a> max_fails=1 fail_timeout=3s;<br>    keepalive 256;<br>  }<br><br>  server {<br>    listen 80;<br>    proxy_read_timeout 60s;<br>    proxy_send_timeout 60s;<br>    access_log off;<br><br>    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";<br>    add_header X-Frame-Options "SAMEORIGIN";<br>    add_header Referrer-Policy "strict-origin-when-cross-origin";<br>    add_header X-Content-Type-Options "nosniff";<br>    add_header Content-Security-Policy "frame-ancestors 'self'";<br><br>    location / {<br>      # Reject requests with unsupported HTTP method<br>      if ($request_method !~ ^(GET|POST|HEAD|OPTIONS|PUT|DELETE)$) {<br>        return 405;<br>      }<br><br>      # Only requests matching the whitelist expectations will<br>      # get sent to the node server<br>      proxy_pass <a href="http://node_backend">http://node_backend</a>;<br>      proxy_http_version 1.1;<br>      proxy_set_header Upgrade $http_upgrade;<br>      proxy_set_header Connection 'upgrade';<br>      proxy_set_header Host $http_host;<br>      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br>      proxy_cache_bypass $http_upgrade;<br>    }<br><br><br>    error_page 500 502 503 504 /50x.html;<br>    location = /50x.html {<br>      root /usr/share/nginx/html;<br>      internal;<br>    }<br>  }<br>}<br>---<br><br></div></div>