Opened 3 months ago

Closed 3 months ago

Last modified 9 hours ago

#712 closed улучшение (invalid)

Connection limit срабатывает неожиданно для пользователя

Reported by: san Owned by: alx
Priority: средний Milestone: 1 очередь
Component: web-интерфейс (sw) Keywords:
Cc:

Description

Я провёл такой эксперимент:
Примерно в течении минуты я не торопясь обновлял страничку с блоком, обновил страничку примерно 10 раз. После 10-го обновления страничка не прогрузилась полностью. По логу я вижу что начал срабатывать "Connection limit".
На мой взгляд такое срабатывание защиты неинтуитивно для пользователя, не так уж много он действий совершил и действия не были криминальными, чтобы ожидать что его забанят. В аппаратуре других производителей я не наблюдал подобного - обновлять страничку никто не запрещает.
Предлагаю сделать поведение более интуитивным - при неторопливом обновлении странички пользователь не должен быть забанен.
r2417
Браузер Google Chrome Версия 129.0.6668.90
Вот лог из платы за время моего эксперимента:

Oct  9 10:05:17 sw01 daemon.info swd[254]: user admin from [::ffff:192.168.0.5] authenticated
Oct  9 10:06:20 sw01 daemon.err swd[254]: Server reached connection limit. Closing inbound connection.
Oct  9 10:06:27 sw01 daemon.err swd[254]: Server reached connection limit. Closing inbound connection.
Oct  9 10:06:27 sw01 daemon.err swd[254]: Server reached connection limit. Closing inbound connection.
Oct  9 10:06:41 sw01 daemon.err swd[254]: Server reached connection limit. Closing inbound connection.
Oct  9 10:06:41 sw01 daemon.err swd[254]: Server reached connection limit. Closing inbound connection.
Oct  9 10:06:45 sw01 daemon.err swd[254]: Server reached connection limit. Closing inbound connection.
Oct  9 10:06:45 sw01 daemon.err swd[254]: Server reached connection limit. Closing inbound connection.
Oct  9 10:06:50 sw01 daemon.err swd[254]: Server reached connection limit. Closing inbound connection.
Oct  9 10:06:50 sw01 daemon.err swd[254]: Server reached connection limit. Closing inbound connection.
Oct  9 10:06:50 sw01 daemon.err swd[254]: Server reached connection limit. Closing inbound connection.
Oct  9 10:06:54 sw01 daemon.err swd[254]: Server reached connection limit. Closing inbound connection.
Oct  9 10:06:54 sw01 daemon.err swd[254]: Server reached connection limit. Closing inbound connection.
Oct  9 10:06:55 sw01 daemon.err swd[254]: Server reached connection limit. Closing inbound connection.
Oct  9 10:06:58 sw01 daemon.err swd[254]: Server reached connection limit. Closing inbound connection.
Oct  9 10:07:00 sw01 daemon.err swd[254]: Server reached connection limit. Closing inbound connection.
Oct  9 10:07:00 sw01 daemon.err swd[254]: Server reached connection limit. Closing inbound connection.
Oct  9 10:07:00 sw01 daemon.err swd[254]: Server reached connection limit. Closing inbound connection.
Oct  9 10:07:00 sw01 daemon.err swd[254]: Server reached connection limit. Closing inbound connection.
Oct  9 10:07:08 sw01 daemon.err swd[254]: Server reached connection limit. Closing inbound connection.
Oct  9 10:07:08 sw01 daemon.err swd[254]: Server reached connection limit. Closing inbound connection.
Oct  9 10:07:08 sw01 daemon.err swd[254]: Server reached connection limit. Closing inbound connection.
Oct  9 10:07:08 sw01 daemon.err swd[254]: Server reached connection limit. Closing inbound connection.
Oct  9 10:07:08 sw01 daemon.err swd[254]: Server reached connection limit. Closing inbound connection.
Oct  9 10:07:13 sw01 daemon.err swd[254]: Server reached connection limit. Closing inbound connection.
Oct  9 10:07:13 sw01 daemon.err swd[254]: Server reached connection limit. Closing inbound connection.
Oct  9 10:07:13 sw01 daemon.err swd[254]: Server reached connection limit. Closing inbound connection.
Oct  9 10:07:14 sw01 daemon.err swd[254]: Server reached connection limit. Closing inbound connection.
Oct  9 10:07:18 sw01 daemon.err swd[254]: Connection was closed while sending response body.
Oct  9 10:07:28 sw01 daemon.err swd[254]: Connection was closed while sending response body.
Oct  9 10:07:33 sw01 daemon.err swd[254]: Connection was closed while sending response body.
Oct  9 10:07:38 sw01 daemon.err swd[254]: Connection was closed while sending response body.
Oct  9 10:07:46 sw01 daemon.err swd[254]: Connection was closed while sending response body.
Oct  9 10:07:53 sw01 daemon.err swd[254]: Connection was closed while sending response body.
Oct  9 10:08:01 sw01 daemon.err swd[254]: Connection was closed while sending response body.
Oct  9 10:08:08 sw01 daemon.err swd[254]: Connection was closed while sending response body.
Oct  9 10:08:14 sw01 daemon.err swd[254]: Connection was closed while sending response body.
Oct  9 10:08:20 sw01 daemon.err swd[254]: Connection was closed while sending response body.
Oct  9 10:08:41 sw01 daemon.err swd[254]: Connection was closed while sending response body.
Oct  9 10:08:58 sw01 daemon.err swd[254]: Connection was closed while sending response body.

Список соединений до моего подключения

root@sw01:~# netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0    144 192.168.1.104:ssh       192.168.0.83:62618      ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State         I-Node Path
unix  4      [ ]         DGRAM                       684 /dev/log
unix  2      [ ]         DGRAM                       690
unix  2      [ ]         DGRAM                       691

Список соединений после моего подключения но до авторизации

root@sw01:~# netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0    144 192.168.1.104:ssh       192.168.0.83:62618      ESTABLISHED
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52399 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52428 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52407 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52419 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52396 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52383 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52374 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52410 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52473 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52390 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52408 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52404 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52414 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52384 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52431 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52406 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52400 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52420 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52402 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52424 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52369 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52433 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52401 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52368 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52380 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52409 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52417 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52394 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52381 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52412 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52391 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52382 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52397 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52418 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52439 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52434 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52413 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52403 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52425 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52422 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52411 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52435 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52389 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52370 TIME_WAIT
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State         I-Node Path
unix  4      [ ]         DGRAM                       684 /dev/log
unix  2      [ ]         DGRAM                       690
unix  2      [ ]         DGRAM                       691

Список соединений после авторизации

root@sw01:~# netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0    144 192.168.1.104:ssh       192.168.0.83:62618      ESTABLISHED
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52512 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52509 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52473 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52506 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52505 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52507 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52510 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52501 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52513 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52517 ESTABLISHED
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52514 ESTABLISHED
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52502 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52515 ESTABLISHED
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52504 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52503 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52516 ESTABLISHED
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52511 ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State         I-Node Path
unix  4      [ ]         DGRAM                       684 /dev/log
unix  2      [ ]         DGRAM                       690
unix  2      [ ]         DGRAM                       691

Список соединений после примерно 10 обновлений странички в течении примерно минуты:

root@sw01:~# netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0    144 192.168.1.104:ssh       192.168.0.83:62618      ESTABLISHED
tcp        1      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52545 CLOSE_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52571 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52600 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52622 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52621 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52623 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52578 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52583 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52569 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52610 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52597 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52639 TIME_WAIT
tcp        1      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52585 CLOSE_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52628 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52580 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52654 ESTABLISHED
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52555 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52542 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52582 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52648 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52593 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52579 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52592 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52549 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52642 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52546 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52643 TIME_WAIT
tcp        1      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52602 CLOSE_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52551 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52651 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52649 TIME_WAIT
tcp        1      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52573 CLOSE_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52564 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52657 ESTABLISHED
tcp        1      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52644 CLOSE_WAIT
tcp        1      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52616 CLOSE_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52563 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52544 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52557 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52588 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52656 ESTABLISHED
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52565 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52587 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52568 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52625 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52641 TIME_WAIT
tcp        1      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52559 CLOSE_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52606 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52570 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52640 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52581 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52655 ESTABLISHED
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52553 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52601 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52629 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52609 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52627 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52634 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52626 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52635 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52613 TIME_WAIT
tcp        1      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52630 CLOSE_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52566 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52636 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52596 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52653 TIME_WAIT
tcp        0      0 ::ffff:192.168.1.104:www ::ffff:192.168.0.5:52598 TIME_WAIT
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State         I-Node Path
unix  4      [ ]         DGRAM                       684 /dev/log
unix  2      [ ]         DGRAM                       690
unix  2      [ ]         DGRAM                       691

Attachments (1)

1EZlS.png (87.8 KB ) - added by san 3 months ago.

Download all attachments as: .zip

Change History (25)

comment:1 by san, 3 months ago

По логу я вижу что начал срабатывать "Connection limit".

После этого я, тоже не торопясь, обновил страничку ещё раз 10 - она то прогружалась, то нет, отсюда много записей в логе

in reply to:  description comment:2 by alx, 3 months ago

Resolution: invalid
Status: newclosed

Replying to san:

На мой взгляд такое срабатывание защиты неинтуитивно для пользователя, не так уж много он действий совершил и действия не были криминальными, чтобы ожидать что его забанят. В аппаратуре других производителей я не наблюдал подобного - обновлять страничку никто не запрещает.

Ты неправильно понимаешь работу данного механизма. Пользователя никто не банит, и обновлять страницу ему никто не запрещает. Запрещается использовать более 15 подключений к серверу одновременно с одного IP адреса, и ничего более.

Браузер Google Chrome Версия 129.0.6668.90

Кстати, насколько я знаю, в браузере Chrome в настройках по умолчанию максимальное число соединений с сервером равно 6, что меньше половины того лимита, который установлен сервером платы SW-01. Для чего пользователю потребовалось больше 15 соединений, мне непонятно. Я не нахожу для этого разумных причин...

comment:3 by san, 3 months ago

Для чего пользователю потребовалось больше 15 соединений, мне непонятно. Я не нахожу для этого разумных причин...

Это не пользователь, это мой эксперимент.
Я открыл обычный браузер Хром, одну вкладку, обновил 10 раз страничку и дальше не могу пользоваться блоком.
Мне как пользователю это поведение не понятно, об этом и тикет и это поведение я предлагаю как-нибудь улучшить.
Почему соединения остаются не закрытыми мне не известно, но судя по списку соединений они "накапливаются" при обновлении странички.

comment:4 by san, 3 months ago

Насколько я вижу большинство соединений находятся в состоянии "TIME_WAIT". Можешь прокомментировать что это значит в случае соединения браузера к плате SW-01?

in reply to:  3 comment:5 by alx, 3 months ago

Replying to san:

Для чего пользователю потребовалось больше 15 соединений, мне непонятно. Я не нахожу для этого разумных причин...

Это не пользователь, это мой эксперимент.

Хорошо. Переформулирую мысль: зачем тебе потребовалось проводить эксперимент, при котором браузер создает так много одновременных подключений к серверу, мне непонятно. Результат эксперимента соответствует ожиданиям - после достижения лимита серевр перестал обслуживать новые подключения с данного адреса. Такое поведение и было мной задумано.

Я открыл обычный браузер Хром, одну вкладку, обновил 10 раз страничку и дальше не могу пользоваться блоком.

Ну, не совсем обычный - ты же увеличил в нем лимит одновременных подключений к серверу. Уменьши число подключений - и снова сможешь пользоваться блоком.

Мне как пользователю это поведение не понятно, об этом и тикет и это поведение я предлагаю как-нибудь улучшить.

Вроде бы я в comment:2 объяснил, как это работает. Что именно непонятно? Я только там не написал, что кроме лимита на подключения с одного IP адреса есть еще лимит на общее количество подключений.

Почему соединения остаются не закрытыми мне не известно, но судя по списку соединений они "накапливаются" при обновлении странички.

Соединения закрывались после каждого запроса только в протоколе HTTP/1.0. Вот как-то так:

Начиная с HTTP/1.1 появилась возможность передавать несколько запросов и получать несколько ответов в одном соединении. Клиент не закрывает соединения с сервером на случай появления необходимости отправки новых запросов (например на интерактивных сайтах). Если бы он закрыл все соединения, пришлось бы потом открывать их снова, а это ненужные накладные расходы (особенно в случае HTTPS). И это правильно:

В протоколе HTTP/2 появилась возможность одновременной обработки нескольких запросов, в результате чего количество необходимых браузеру соединений еще больше снизилось - там обычно браузеру хватает одного соединения...

Last edited 3 months ago by alx (previous) (diff)

in reply to:  4 ; comment:6 by alx, 3 months ago

Replying to san:

Насколько я вижу большинство соединений находятся в состоянии "TIME_WAIT". Можешь прокомментировать что это значит в случае соединения браузера к плате SW-01?

Состояние TIME_WAIT означает, что соединение было закрыто локальной стороной, и ожидается его закрытие удаленной стороной. Также смутно помню, что даже после закрытия соединения обеими сторонами ядро некоторое время хранит запись о нем (не помню зачем - может чтобы случайно не занять тот же порт для нового соединения?)...

comment:7 by san, 3 months ago

Ну, не совсем обычный - ты же увеличил в нем лимит одновременных подключений к серверу. Уменьши число подключений - и снова сможешь пользоваться блоком.

Нет, я специально ничего такого не делал, даже не могу сходу найти как это настроить в Хроме. Кроме того аналогичное поведение воспроизводится и на браузерах других пользователей, неподалёку оказались браузеры Жени и Саши П. - обновив страничку с 10-ток раз они тоже получают Server reached connection limit. Closing inbound connection..

Last edited 3 months ago by san (previous) (diff)

in reply to:  6 comment:8 by alx, 3 months ago

Replying to alx:

Состояние TIME_WAIT означает, что соединение было закрыто локальной стороной, и ожидается его закрытие удаленной стороной.

Даже не совсем так. TIME_WAIT означает, что мы послали FIN и уже получили FIN от удаленной стороны (то есть фактически соединение полностью закрыто) - см.

p.s. san: отредактировал коммент, т.к. картинка была не доступна из "нашего" интернета.

Last edited 3 months ago by san (previous) (diff)

comment:9 by san, 3 months ago

А такое "TIME_WAIT" соединение учитывается при проверке лимита?

in reply to:  7 comment:10 by alx, 3 months ago

Replying to san:

Нет, я специально ничего такого не делал, даже не могу сходу найти как это настроить в Хроме.

Ну может не ты сам, а кто-то другой это сделал...

Кроме того аналогичное поведение воспроизводится и на браузерах других пользователей, неподалёку оказались браузеры Жени и Саши П. - обновив страничку с 10-ток раз они тоже получают Server reached connection limit. Closing inbound connection..

Какое в их браузерах настроено максимальное число соединений к серверу?

by san, 3 months ago

Attachment: 1EZlS.png added

comment:11 by san, 3 months ago

Какое в их браузерах настроено максимальное число соединений к серверу?

не подскажешь как это узнать в Хроме? я или туплю вечером или это где-то спрятано

Last edited 3 months ago by san (previous) (diff)

in reply to:  11 comment:12 by alx, 3 months ago

Replying to san:

не подскажешь как это узнать в Хроме? я или туплю вечером или это где-то спрятано

Не подскажу. Сам хотел у себя посмотреть, думал это в about:config, но оказалось, что это для firefox.

comment:13 by alx, 3 months ago

А почему trac не показывает внешние картинки? Мне смутно помнится, что старый показывал...

in reply to:  9 comment:14 by alx, 3 months ago

Replying to san:

А такое "TIME_WAIT" соединение учитывается при проверке лимита?

Нет. Смотри диаграмму - соединение уже закрыто с обеих сторон. От него осталась только посмертная запись в ядре.

comment:15 by san, 3 months ago

А почему trac не показывает внешние картинки? Мне смутно помнится, что старый показывал...

Трак показывает, это наш интернет не показывает, у меня эта картинка доступна только через vpn

in reply to:  15 comment:16 by alx, 3 months ago

Replying to san:

Трак показывает, это наш интернет не показывает, у меня эта картинка доступна только через vpn

Так у меня VPN (точнее, прокси), и ели я кликаю ссылку - браузер прекрасно показывает. А в комментарии почему-то нет...

in reply to:  3 comment:17 by alx, 3 months ago

Replying to san:

...это поведение я предлагаю как-нибудь улучшить.

Верно ли я понял, что ты предлагаешь увеличить лимиты на одновременное количество подключений?

comment:18 by san, 2 months ago

Наверное, нет. Чтобы предлагать что-то конкретное, для начала, нужно понять почему так происходит.
Если у Хрома лимит соединений 6, но при работе с веб-мордой срабатывает лимит 15, то тут что-то не сходится...

in reply to:  18 ; comment:19 by alx, 2 months ago

Replying to san:

Если у Хрома лимит соединений 6, но при работе с веб-мордой срабатывает лимит 15, то тут что-то не сходится...

Провел эксперимент - создал 15 параллельных соединений с одного хоста. Никаких сообщений в логе не появилось, все 15 запросов успешно отработали. Думаю, что на стороне платы ошибки с лимитом нет. Возможно, это Хром при каких-то условиях создает сверхлимитные соединения...

in reply to:  19 ; comment:20 by alx, 2 months ago

Replying to alx:

Хром при каких-то условиях создает сверхлимитные соединения...

Обновил страницу в Хроме 10 раз. Ровно на десятый раз в лог посыпались сообщения о превышении лимита. netstat показал, что установлено 15 TCP соединений от моего компьютера на порт 443. То есть Хром, действительно, при каких-то условиях устанавливает очень много соединений. Похоже на баг Хрома.

comment:21 by san, 2 months ago

Считая по приведённому списку соединений в тикете вижу что соединений со статусом "ESTABLISHED" действительно всегда в пределах 6, а вот если к ним добавить соединения в состоянии "CLOSE_WAIT" то их уже больше.
Надо понаблюдать внимательнее что за соединения Хром устанавливает и за какое время изменяется их статус.

in reply to:  21 comment:22 by alx, 2 months ago

Replying to san:

Надо понаблюдать внимательнее что за соединения Хром устанавливает и за какое время изменяется их статус.

Их совершенно точно бывает больше - вот что я увидел после 10 обновлений страницы в Хроме:

root@sw01:~# netstat -tn
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 192.168.0.60:22         192.168.0.75:34578      ESTABLISHED
tcp        0      0 2a03:1ac0:*****************:fe00:e1:443 2a02:2698:******::1:43164 ESTABLISHED
tcp        0      0 2a03:1ac0:*****************:fe00:e1:443 2a02:2698:******::1:39542 ESTABLISHED
tcp       24      0 2a03:1ac0:*****************:fe00:e1:443 2a02:2698:******::1:59452 ESTABLISHED
tcp        0      0 2a03:1ac0:*****************:fe00:e1:443 2a02:2698:******::1:33778 ESTABLISHED
tcp       24      0 2a03:1ac0:*****************:fe00:e1:443 2a02:2698:******::1:60788 ESTABLISHED
tcp        0      0 2a03:1ac0:*****************:fe00:e1:443 2a02:2698:******::1:47570 ESTABLISHED
tcp       24      0 2a03:1ac0:*****************:fe00:e1:443 2a02:2698:******::1:47584 ESTABLISHED
tcp       24      0 2a03:1ac0:*****************:fe00:e1:443 2a02:2698:******::1:59504 ESTABLISHED
tcp       24      0 2a03:1ac0:*****************:fe00:e1:443 2a02:2698:******::1:47334 ESTABLISHED
tcp       24      0 2a03:1ac0:*****************:fe00:e1:443 2a02:2698:******::1:59470 ESTABLISHED
tcp        0      0 2a03:1ac0:*****************:fe00:e1:443 2a02:2698:******::1:43150 ESTABLISHED
tcp       24      0 2a03:1ac0:*****************:fe00:e1:443 2a02:2698:******::1:59482 ESTABLISHED
tcp       24      0 2a03:1ac0:*****************:fe00:e1:443 2a02:2698:******::1:59464 ESTABLISHED
tcp       24      0 2a03:1ac0:*****************:fe00:e1:443 2a02:2698:******::1:47330 ESTABLISHED
tcp       24      0 2a03:1ac0:*****************:fe00:e1:443 2a02:2698:******::1:59488 ESTABLISHED

comment:23 by alx, 9 hours ago

In 2436/sw:

Настройки HTTP серверов сделаны конфигурируемыми

Ранее настройки таймаута соединения, общего лимита соединений
и лимита соединений с одного адреса IP были "забиты гвоздями" в коде.
Теперь эти параметры можно настраивать через веб-интерфейс.
See #712.

in reply to:  20 comment:24 by alx, 9 hours ago

Replying to alx:

Обновил страницу в Хроме 10 раз. Ровно на десятый раз в лог посыпались сообщения о превышении лимита.

Увеличил лимит соединений вдвое (установил 30 соединений с одного адреса). При обновлении страницы в Хроме (точнее, в Brave, но это практически одно и то же) все равно смог исчерпать лимит, только на этот раз потребовалось не 10, а 25 полных перезагрузок страницы. Делаю вывод - в Хроме просто полностью сломали его внутреннее ограничение количества соединений.

Если кто-то пользуется Хромом (и почему-то не может его сменить), и лимит мешает ему нормально пользоваться веб-интерфейсом, теперь есть возможность изменить лимиты так, как хочется.

Note: See TracTickets for help on using tickets.