<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p> </p>
    <div class="moz-text-html" lang="x-unicode">
      <p>Привет!<br>
      </p>
      <p><br>
        Проблема — высокое число timewait коннекшнов между nginx-proxy и
        бэкендами (до 30-40к), уровень трафика — десятки тысяч запросов
        в секунду извне, в основном короткие сессии на несколько
        запросов. Стек Centos 6 настроен на переиспользование tw sockets
        - tw_reuse=1, tcp_fin_timeout низкий (2с).</p>
      <p><br>
      </p>
      <p><font size="-1"><br>
          nginx/1.14.0, ~ 25 fastcgi backends<br>
        </font> <font size="-1"><br>
          upstream all {<br>
          hash $shard_key consistent;<br>
          server server10.local:9988 max_fails=0 fail_timeout=1s
          weight=100;<br>
          server server11.local:9988 max_fails=0 fail_timeout=1s
          weight=100;<br>
          ..<br>
          ..<br>
          ..<br>
          server server33.local:9988 max_fails=0 fail_timeout=1s
          weight=100;<br>
          server server34.local:9988 max_fails=0 fail_timeout=1s
          weight=100;<br>
          keepalive 100;<br>
          }<br>
        </font> <font size="-1"><br>
            fastcgi_pass all;<br>
            fastcgi_keep_conn on;<br>
            fastcgi_next_upstream off;<br>
            fastcgi_buffers 16 16k;<br>
            fastcgi_buffer_size 32k;<br>
            fastcgi_connect_timeout 20ms;<br>
            fastcgi_read_timeout 75ms;<br>
            fastcgi_intercept_errors on;<br>
            error_page 500 501 502 503 504 = $failover;</font></p>
      <p><br>
      </p>
      <p>Вероятно, высокое количество TW соединений вызвано
        поведением-настройкой Nginx, а именно необходимостью слать
        заглушку при достижении read timeout до апстрима (75мс), в этом
        случае Nginx закрывает соединение с апстримом принудительно (TCP
        RST), шлет фэиловер респонс клиенту и переоткрывает его снова.
        Мы видим около 30-35 RST пакетов в секунду в направлении
        бэкендов от Nginx, что соотвествует числу фейловеров в секунду
        по тому же апстриму согласно access/error.log.<br>
        <br>
        Вопрос — верны ли рассуждения о причинах высокого числа TW
        соединений между прокси и бэкендами и как их можно уменьшить
        средствами нжинкс, если это возможно?<br>
        <br>
        Спасибо</p>
    </div>
    <p><font size="2"><font face="arial, sans-serif">--</font></font></p>
    <p><font size="2"><font face="arial, sans-serif">С уважением, Олег<br>
        </font></font></p>
  </body>
</html>