Друзі, всім доброго вечора? як ви?
Поки є час, хотів розібрати для вас цей пул - думаю штука для багатьох була не зовсім очевидна - і може багато з вас не так глибога лізете в тестуванні)
Так що я маю вам сказать)
Чому не (A)
Тут могло би бути але сервер порт не закрив, бо в умові сказано, що сервер працює і порт доступний. Якби порт був закритий - ми б бачили іншу картину, а не тисячі TIME-WAIT на клієнті.
Чому не (C)
DNS тут ні до чого. Якщо домен не резолвиться, ми навіть би нормально не дійдемо до tcp-з’єднання.
А тут проблема саме з новими TCP connections під навантаженням.
і чому всеж не (D) а хотя багато хто сюди дивився і цьому я теж розумію чому
Firewall теж не дуже схоже. Якщо б він реально заблокував сервер, проблема була б стабільна, а не після великої кількості коротких з’єднань, хоча хто скаже чому саме після виликої кількості могло заблочити????????????????
І чому правильна відповідь - (B)
Бо клієнт для кожного нового тсп-з’єднання використовує тимчасовий локальний порт - ephemeral port.
Коли з’єднання закрилось, порт не одразу стає вільним.
Він ще якийсь час висить у TIME-WAIT. І тут якщо під час load test створити дуже багато коротких тсп-з’єднань, ці порти можуть просто закінчитись.
Це частий кейс: коли “сервер живий” “порт відкритий” “мережа є”
але нові з’єднання падають з timeout або дивними помилками.
Так шо ви як КУА дивиться не тільки “сервер доступний чи ні”, а і що відбувається на клієнті.
Якщо бачите тисячі TIME-WAIT після навантаження - дивіться в сторону connection reuse, keep-alive, pooling і ephemeral ports.
Всім гарного вечора і поменше таймаутів ну ви поняли)
Обняв 🤗
Сильні💛
Post #926
1.83K
Bug or Defect?
- 🔥 8
- 👍 4
- ❤ 3
- 🤗 3
- 👀 2