#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)
Change History (23)
comment:1 by , 7 weeks ago
comment:2 by , 7 weeks ago
Resolution: | → invalid |
---|---|
Status: | new → closed |
Replying to san:
На мой взгляд такое срабатывание защиты неинтуитивно для пользователя, не так уж много он действий совершил и действия не были криминальными, чтобы ожидать что его забанят. В аппаратуре других производителей я не наблюдал подобного - обновлять страничку никто не запрещает.
Ты неправильно понимаешь работу данного механизма. Пользователя никто не банит, и обновлять страницу ему никто не запрещает. Запрещается использовать более 15 подключений к серверу одновременно с одного IP адреса, и ничего более.
Браузер Google Chrome Версия 129.0.6668.90
Кстати, насколько я знаю, в браузере Chrome в настройках по умолчанию максимальное число соединений с сервером равно 6, что меньше половины того лимита, который установлен сервером платы SW-01. Для чего пользователю потребовалось больше 15 соединений, мне непонятно. Я не нахожу для этого разумных причин...
follow-ups: 5 17 comment:3 by , 7 weeks ago
Для чего пользователю потребовалось больше 15 соединений, мне непонятно. Я не нахожу для этого разумных причин...
Это не пользователь, это мой эксперимент.
Я открыл обычный браузер Хром, одну вкладку, обновил 10 раз страничку и дальше не могу пользоваться блоком.
Мне как пользователю это поведение не понятно, об этом и тикет и это поведение я предлагаю как-нибудь улучшить.
Почему соединения остаются не закрытыми мне не известно, но судя по списку соединений они "накапливаются" при обновлении странички.
follow-up: 6 comment:4 by , 7 weeks ago
Насколько я вижу большинство соединений находятся в состоянии "TIME_WAIT". Можешь прокомментировать что это значит в случае соединения браузера к плате SW-01?
comment:5 by , 7 weeks ago
Replying to san:
Для чего пользователю потребовалось больше 15 соединений, мне непонятно. Я не нахожу для этого разумных причин...
Это не пользователь, это мой эксперимент.
Хорошо. Переформулирую мысль: зачем тебе потребовалось проводить эксперимент, при котором браузер создает так много одновременных подключений к серверу, мне непонятно. Результат эксперимента соответствует ожиданиям - после достижения лимита серевр перестал обслуживать новые подключения с данного адреса. Такое поведение и было мной задумано.
Я открыл обычный браузер Хром, одну вкладку, обновил 10 раз страничку и дальше не могу пользоваться блоком.
Ну, не совсем обычный - ты же увеличил в нем лимит одновременных подключений к серверу. Уменьши число подключений - и снова сможешь пользоваться блоком.
Мне как пользователю это поведение не понятно, об этом и тикет и это поведение я предлагаю как-нибудь улучшить.
Вроде бы я в comment:2 объяснил, как это работает. Что именно непонятно? Я только там не написал, что кроме лимита на подключения с одного IP адреса есть еще лимит на общее количество подключений.
Почему соединения остаются не закрытыми мне не известно, но судя по списку соединений они "накапливаются" при обновлении странички.
Соединения закрывались после каждого запроса только в протоколе HTTP/1.0. Вот как-то так:
Начиная с HTTP/1.1 появилась возможность передавать несколько запросов и получать несколько ответов в одном соединении. Клиент не закрывает соединения с сервером на случай появления необходимости отправки новых запросов (например на интерактивных сайтах). Если бы он закрыл все соединения, пришлось бы потом открывать их снова, а это ненужные накладные расходы (особенно в случае HTTPS). И это правильно:
В протоколе HTTP/2 появилась возможность одновременной обработки нескольких запросов, в результате чего количество необходимых браузеру соединений еще больше снизилось - там обычно браузеру хватает одного соединения...
follow-up: 8 comment:6 by , 7 weeks ago
Replying to san:
Насколько я вижу большинство соединений находятся в состоянии "TIME_WAIT". Можешь прокомментировать что это значит в случае соединения браузера к плате SW-01?
Состояние TIME_WAIT означает, что соединение было закрыто локальной стороной, и ожидается его закрытие удаленной стороной. Также смутно помню, что даже после закрытия соединения обеими сторонами ядро некоторое время хранит запись о нем (не помню зачем - может чтобы случайно не занять тот же порт для нового соединения?)...
follow-up: 10 comment:7 by , 7 weeks ago
Ну, не совсем обычный - ты же увеличил в нем лимит одновременных подключений к серверу. Уменьши число подключений - и снова сможешь пользоваться блоком.
Нет, я специально ничего такого не делал, даже не могу сходу найти как это настроить в Хроме. Кроме того аналогичное поведение воспроизводится и на браузерах других пользователей, неподалёку оказались Женя и Саши П. - обновив страничку с 10-ток раз они тоже получают Server reached connection limit. Closing inbound connection.
.
comment:8 by , 7 weeks ago
Replying to alx:
Состояние TIME_WAIT означает, что соединение было закрыто локальной стороной, и ожидается его закрытие удаленной стороной.
Даже не совсем так. TIME_WAIT означает, что мы послали FIN и уже получили FIN от удаленной стороны (то есть фактически соединение полностью закрыто) - см.
p.s. san: отредактировал коммент, т.к. картинка была не доступна из "нашего" интернета.
follow-up: 14 comment:9 by , 7 weeks ago
А такое "TIME_WAIT" соединение учитывается при проверке лимита?
comment:10 by , 7 weeks ago
Replying to san:
Нет, я специально ничего такого не делал, даже не могу сходу найти как это настроить в Хроме.
Ну может не ты сам, а кто-то другой это сделал...
Кроме того аналогичное поведение воспроизводится и на браузерах других пользователей, неподалёку оказались браузеры Жени и Саши П. - обновив страничку с 10-ток раз они тоже получают
Server reached connection limit. Closing inbound connection.
.
Какое в их браузерах настроено максимальное число соединений к серверу?
by , 7 weeks ago
follow-up: 12 comment:11 by , 7 weeks ago
Какое в их браузерах настроено максимальное число соединений к серверу?
не подскажешь как это узнать в Хроме? я или туплю вечером или это где-то спрятано
comment:12 by , 7 weeks ago
Replying to san:
не подскажешь как это узнать в Хроме? я или туплю вечером или это где-то спрятано
Не подскажу. Сам хотел у себя посмотреть, думал это в about:config
, но оказалось, что это для firefox.
comment:13 by , 7 weeks ago
А почему trac не показывает внешние картинки? Мне смутно помнится, что старый показывал...
comment:14 by , 7 weeks ago
Replying to san:
А такое "TIME_WAIT" соединение учитывается при проверке лимита?
Нет. Смотри диаграмму - соединение уже закрыто с обеих сторон. От него осталась только посмертная запись в ядре.
follow-up: 16 comment:15 by , 7 weeks ago
А почему trac не показывает внешние картинки? Мне смутно помнится, что старый показывал...
Трак показывает, это наш интернет не показывает, у меня эта картинка доступна только через vpn
comment:16 by , 7 weeks ago
Replying to san:
Трак показывает, это наш интернет не показывает, у меня эта картинка доступна только через vpn
Так у меня VPN (точнее, прокси), и ели я кликаю ссылку - браузер прекрасно показывает. А в комментарии почему-то нет...
comment:17 by , 7 weeks ago
Replying to san:
...это поведение я предлагаю как-нибудь улучшить.
Верно ли я понял, что ты предлагаешь увеличить лимиты на одновременное количество подключений?
follow-up: 19 comment:18 by , 7 weeks ago
Наверное, нет. Чтобы предлагать что-то конкретное, для начала, нужно понять почему так происходит.
Если у Хрома лимит соединений 6, но при работе с веб-мордой срабатывает лимит 15, то тут что-то не сходится...
follow-up: 20 comment:19 by , 7 weeks ago
Replying to san:
Если у Хрома лимит соединений 6, но при работе с веб-мордой срабатывает лимит 15, то тут что-то не сходится...
Провел эксперимент - создал 15 параллельных соединений с одного хоста. Никаких сообщений в логе не появилось, все 15 запросов успешно отработали. Думаю, что на стороне платы ошибки с лимитом нет. Возможно, это Хром при каких-то условиях создает сверхлимитные соединения...
comment:20 by , 7 weeks ago
Replying to alx:
Хром при каких-то условиях создает сверхлимитные соединения...
Обновил страницу в Хроме 10 раз. Ровно на десятый раз в лог посыпались сообщения о превышении лимита. netstat показал, что установлено 15 TCP соединений от моего компьютера на порт 443. То есть Хром, действительно, при каких-то условиях устанавливает очень много соединений. Похоже на баг Хрома.
follow-up: 22 comment:21 by , 7 weeks ago
Считая по приведённому списку соединений в тикете вижу что соединений со статусом "ESTABLISHED" действительно всегда в пределах 6, а вот если к ним добавить соединения в состоянии "CLOSE_WAIT" то их уже больше.
Надо понаблюдать внимательнее что за соединения Хром устанавливает и за какое время изменяется их статус.
comment:22 by , 7 weeks 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
После этого я, тоже не торопясь, обновил страничку ещё раз 10 - она то прогружалась, то нет, отсюда много записей в логе