Re: REUSE сокеты

2018-03-22 Пенетрантность Tim Sattarov
On 03/22/18 04:13, Victor Wagner wrote:
>
> Вот здесь:
>
> https://vincent.bernat.im/en/blog/2014-tcp-time-wait-state-linux
>
> пишут, что умолчательных настроек должно хватать на 500 запросов в
> секунду. (в распоряжении nginx имеется 3 портов, с которых он может
> открыть соединение, а TIME_WAIT по умолчанию 1 минута).
>
> По этой же ссылке дается ряд советов, что делать если все-таки сокетов
> не хватает.
>
> Может какие из них и подойдут.
>
Вот спасибо добрый человек. Как раз искал что то подобное.



Re: REUSE сокеты

2018-03-22 Пенетрантность Anton Gorlov
Так я и говорю про то что ломается на клиентах, после включения данной ручки

22.03.2018 14:35, Dmitry E. Oboukhov пишет:
>> Не совсем. оно изначально как-то странно вело себя.
>> Например 100% воспроизведение проблемы - 1 роутер, и хотя бы 2 клиента с
>> разными OS, например windows и linux/mac
>> Если 2 пользователя одновременно запросят страницы с 1 и того же сервера
>> то откроется только у того, у кого 1 тапки.
> тут описана клиентская проблема. А данная ручка настраивалась раньше
> чисто  на серверах у которых имеется высокая частота входящих
> соединений.
>
> на клиентах не помню чтобы требовалась данная ручка кому-либо




Re: REUSE сокеты

2018-03-22 Пенетрантность Dmitry E. Oboukhov
> Не совсем. оно изначально как-то странно вело себя.
> Например 100% воспроизведение проблемы - 1 роутер, и хотя бы 2 клиента с
> разными OS, например windows и linux/mac
> Если 2 пользователя одновременно запросят страницы с 1 и того же сервера
> то откроется только у того, у кого 1 тапки.

тут описана клиентская проблема. А данная ручка настраивалась раньше
чисто  на серверах у которых имеется высокая частота входящих
соединений.

на клиентах не помню чтобы требовалась данная ручка кому-либо
-- 

. ''`.Dmitry E. Oboukhov 
: :’  :
`. `~’   GPG key: 4096R/08EEA756 2014-08-30
  `- 71ED ACFC 6801 0DD9 1AD1  9B86 8D1F 969A 08EE A756


signature.asc
Description: PGP signature


Re: REUSE сокеты

2018-03-22 Пенетрантность Anton Gorlov
Не совсем. оно изначально как-то странно вело себя.
Например 100% воспроизведение проблемы - 1 роутер, и хотя бы 2 клиента с
разными OS, например windows и linux/mac
Если 2 пользователя одновременно запросят страницы с 1 и того же сервера
то откроется только у того, у кого 1 тапки.
если же это или 2 винды или 2 пингвина...то всё Ок у обоих.
1 время помогало отключение таймстампов, но потом и оно перестало помогать.


22.03.2018 11:30, Dmitry E. Oboukhov пишет:
>> Написано, что выкинули именно потому что не работало, и работать не
>> могло.
> написано что не работало с момента патча про рандомизацию таймстемпов.
> LTS ядра видимо еще не затронуты (хотя вот 4.13 же стало LTS уже)
>
>



Re: REUSE сокеты

2018-03-22 Пенетрантность Anton Gorlov
Удалили только
tcp_tw_recycle, которая по факту и не работала.
net.ipv4.tcp_tw_reuse остался как и был

22.03.2018 10:35, Dmitry E. Oboukhov пишет:
> Верну от политики взад.
>
> в 4.1x ядрах выпилили ручку про реюз сокетов.
> сейчас поставили тестовый сервак: apache/nginx.
> запросов относительно много (где-то 50 в сек), но все короткие.
>
> система захлёбывается от числа сокетов TIME_WAIT.
>
> откатили ядро до 4.9 (4.13 ставили из за чего-то с контейнерами, точно
> не знаю).
>
>
> смотрел TIME_WAIT'ов много в т.ч. на сокетах apache <-> nginx.
>
> Думал перевесить чтоли apache на unix-сокет, но так и не дали покопать
> ("нам пилу точить некогда, пилить нужно!")
>
>
> вопрос: а как предлагается организовывать сервера на новых ядрах?




Re: REUSE сокеты

2018-03-22 Пенетрантность Коротаев Руслан
В сообщении от [Чт 2018-03-22 11:18 +0300]
Dmitry E. Oboukhov  пишет:

> tcp_tw_recycle отпилили. и одной tcp_tw_reuse теперь недостаточно:
> система захлебывается:
> 
> apache отдает один и тот же html размером 1кБ (экспериментик)
> nginx перед ним стоит и 50 запросов в секунду: начинает отдавать 504
> потому что nginx не может сконнектиться с апачем по 60+ сек.
> 
> если просто заменить ядро на 4.9 с включенным tcp_tw_recycle, то все
> ок и на нагрузке 300 запросов в секунду.

У вас apache отдает обычную статику в nginx. А что если вместо apache
и/или nginx поставить caddy и поиграться с таймаутами [1]. Я много
слышал про горутины (caddy написан на Go), не уверен что это точно про
ваш случай, но раз уж вы всё равно экспериментируете, то интересно
посмотреть что получится.

Для чистоты эксперимента желательно поставит новое ядро (4.13, 4.14) и
оставить как есть, ничего не подкручивать.

[1]: https://caddyserver.com/docs/timeouts

-- 
Коротаев Руслан
https://blog.kr.pp.ru


smime.p7s
Description: S/MIME cryptographic signature


Re: REUSE сокеты

2018-03-22 Пенетрантность Dmitry E. Oboukhov

> Написано, что выкинули именно потому что не работало, и работать не
> могло.

написано что не работало с момента патча про рандомизацию таймстемпов.
LTS ядра видимо еще не затронуты (хотя вот 4.13 же стало LTS уже)


-- 

. ''`.Dmitry E. Oboukhov 
: :’  :
`. `~’   GPG key: 4096R/08EEA756 2014-08-30
  `- 71ED ACFC 6801 0DD9 1AD1  9B86 8D1F 969A 08EE A756


signature.asc
Description: PGP signature


Re: REUSE сокеты

2018-03-22 Пенетрантность Dmitry E. Oboukhov
>> в 4.1x ядрах выпилили ручку про реюз сокетов.

> В дистрибутивных ядрах 4.12, 4.13 и 4.15 для i686 и x86_64
> ручка net.ipv4.tcp_tw_reuse на месте. Не работает, что ли?

tcp_tw_recycle отпилили. и одной tcp_tw_reuse теперь недостаточно:
система захлебывается:

apache отдает один и тот же html размером 1кБ (экспериментик)
nginx перед ним стоит и 50 запросов в секунду: начинает отдавать 504
потому что nginx не может сконнектиться с апачем по 60+ сек.

если просто заменить ядро на 4.9 с включенным tcp_tw_recycle, то все
ок и на нагрузке 300 запросов в секунду.
-- 

. ''`.Dmitry E. Oboukhov 
: :’  :
`. `~’   GPG key: 4096R/08EEA756 2014-08-30
  `- 71ED ACFC 6801 0DD9 1AD1  9B86 8D1F 969A 08EE A756


signature.asc
Description: PGP signature


Re: REUSE сокеты

2018-03-22 Пенетрантность Victor Wagner
On Thu, 22 Mar 2018 11:06:42 +0300
Eugene Berdnikov  wrote:

> On Thu, Mar 22, 2018 at 10:35:09AM +0300, Dmitry E. Oboukhov wrote:
> > в 4.1x ядрах выпилили ручку про реюз сокетов.  
> 
>  В дистрибутивных ядрах 4.12, 4.13 и 4.15 для i686 и x86_64
>  ручка net.ipv4.tcp_tw_reuse на месте. Не работает, что ли?

В том коммите, которым из mainline kernel эту ручку выкинули,

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4396e46187ca5070219b81773c4e65088dac50cc

Написано, что выкинули именно потому что не работало, и работать не
могло. Так что если мейнтейнеры в дистрибутиве вкрутили ее обратно, это
никому не поможет.

--



Re: REUSE сокеты

2018-03-22 Пенетрантность Victor Wagner
On Thu, 22 Mar 2018 10:35:09 +0300
"Dmitry E. Oboukhov"  wrote:

> Верну от политики взад.
> 
> в 4.1x ядрах выпилили ручку про реюз сокетов.
> сейчас поставили тестовый сервак: apache/nginx.
> запросов относительно много (где-то 50 в сек), но все короткие.
> 
> система захлёбывается от числа сокетов TIME_WAIT.
> 
> откатили ядро до 4.9 (4.13 ставили из за чего-то с контейнерами, точно
> не знаю).
> 
> 
> смотрел TIME_WAIT'ов много в т.ч. на сокетах apache <-> nginx.
> 
> Думал перевесить чтоли apache на unix-сокет, но так и не дали покопать
> ("нам пилу точить некогда, пилить нужно!")
> 
> 
> вопрос: а как предлагается организовывать сервера на новых ядрах?

Вот здесь:

https://vincent.bernat.im/en/blog/2014-tcp-time-wait-state-linux

пишут, что умолчательных настроек должно хватать на 500 запросов в
секунду. (в распоряжении nginx имеется 3 портов, с которых он может
открыть соединение, а TIME_WAIT по умолчанию 1 минута).

По этой же ссылке дается ряд советов, что делать если все-таки сокетов
не хватает.

Может какие из них и подойдут.

-- 



Re: REUSE сокеты

2018-03-22 Пенетрантность Eugene Berdnikov
On Thu, Mar 22, 2018 at 10:35:09AM +0300, Dmitry E. Oboukhov wrote:
> в 4.1x ядрах выпилили ручку про реюз сокетов.

 В дистрибутивных ядрах 4.12, 4.13 и 4.15 для i686 и x86_64
 ручка net.ipv4.tcp_tw_reuse на месте. Не работает, что ли?
-- 
 Eugene Berdnikov