<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>