{"id":17797,"date":"2026-08-31T20:52:01","date_gmt":"2026-08-31T18:52:01","guid":{"rendered":"https:\/\/dhosting.pl\/pomoc\/?post_type=manual_kb&#038;p=17797"},"modified":"2026-08-31T20:52:01","modified_gmt":"2026-08-31T18:52:01","slug":"concurrent-connections-i-kolejki-polaczen-faq-o-wydajnosci-strony","status":"publish","type":"manual_kb","link":"https:\/\/dhosting.pl\/pomoc\/baza-wiedzy\/concurrent-connections-i-kolejki-polaczen-faq-o-wydajnosci-strony\/","title":{"rendered":"Concurrent Connections i kolejki po\u0142\u0105cze\u0144: FAQ o wydajno\u015bci strony"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Limit po\u0142\u0105cze\u0144 nie jest tym samym co limit CPU lub RAM. Strona mo\u017ce odpowiada\u0107 z op\u00f3\u017anieniem albo zwraca\u0107 timeout, gdy wyczerpie pul\u0119 obs\u0142ugiwanych po\u0142\u0105cze\u0144, kolejk\u0119 nas\u0142uchu lub limit r\u00f3wnoczesnych \u017c\u0105da\u0144 aplikacji, nawet je\u015bli u\u017cycie procesora i pami\u0119ci pozostaje poni\u017cej maksimum.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_86 ez-toc-wrap-left counter-flat ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Spis tre\u015bci<\/p>\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/dhosting.pl\/pomoc\/baza-wiedzy\/concurrent-connections-i-kolejki-polaczen-faq-o-wydajnosci-strony\/#Jakie_rodzaje_polaczen_trzeba_rozroznic\" >Jakie rodzaje po\u0142\u0105cze\u0144 trzeba rozr\u00f3\u017cni\u0107?<\/a><\/li><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/dhosting.pl\/pomoc\/baza-wiedzy\/concurrent-connections-i-kolejki-polaczen-faq-o-wydajnosci-strony\/#Dlaczego_pojawia_sie_timeout_przy_wolnym_CPU_i_RAM\" >Dlaczego pojawia si\u0119 timeout przy wolnym CPU i RAM?<\/a><\/li><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/dhosting.pl\/pomoc\/baza-wiedzy\/concurrent-connections-i-kolejki-polaczen-faq-o-wydajnosci-strony\/#Jak_ruch_keep-alive_i_wolni_klienci_zmieniaja_zapotrzebowanie\" >Jak ruch, keep-alive i wolni klienci zmieniaj\u0105 zapotrzebowanie?<\/a><\/li><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/dhosting.pl\/pomoc\/baza-wiedzy\/concurrent-connections-i-kolejki-polaczen-faq-o-wydajnosci-strony\/#Jakie_metryki_sprawdzic\" >Jakie metryki sprawdzi\u0107?<\/a><\/li><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/dhosting.pl\/pomoc\/baza-wiedzy\/concurrent-connections-i-kolejki-polaczen-faq-o-wydajnosci-strony\/#Kiedy_stroic_konfiguracje_wlaczyc_cache_albo_zwiekszyc_hosting\" >Kiedy stroi\u0107 konfiguracj\u0119, w\u0142\u0105czy\u0107 cache albo zwi\u0119kszy\u0107 hosting?<\/a><\/li><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/dhosting.pl\/pomoc\/baza-wiedzy\/concurrent-connections-i-kolejki-polaczen-faq-o-wydajnosci-strony\/#FAQ\" >FAQ<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Jakie_rodzaje_polaczen_trzeba_rozroznic\"><\/span>Jakie rodzaje po\u0142\u0105cze\u0144 trzeba rozr\u00f3\u017cni\u0107?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"wp-block-paragraph\"><strong>Otwarte po\u0142\u0105czenie TCP<\/strong> to aktywna sesja sieciowa mi\u0119dzy klientem a serwerem. Po\u0142\u0105czenie mo\u017ce by\u0107 w trakcie przesy\u0142ania danych albo czeka\u0107 na kolejny fragment komunikacji. Liczba takich po\u0142\u0105cze\u0144 wp\u0142ywa na obci\u0105\u017cenie serwera i mo\u017ce podlega\u0107 osobnemu limitowi.<\/p>\n<p class=\"wp-block-paragraph\"><strong>Keep-alive<\/strong> pozwala utrzyma\u0107 po\u0142\u0105czenie TCP po zako\u0144czeniu pojedynczego \u017c\u0105dania HTTP, aby wykorzysta\u0107 je ponownie. Zmniejsza to liczb\u0119 nowych po\u0142\u0105cze\u0144 i koszt ich zestawiania, ale bezczynne sesje nadal mog\u0105 zajmowa\u0107 zasoby lub miejsce w puli po\u0142\u0105cze\u0144. Przy wielu klientach keep-alive mo\u017ce wi\u0119c zwi\u0119kszy\u0107 liczb\u0119 jednocze\u015bnie otwartych sesji, mimo \u017ce w danej chwili nie wszystkie wykonuj\u0105 \u017c\u0105danie.<\/p>\n<p class=\"wp-block-paragraph\"><strong>Listen backlog<\/strong> to kolejka po\u0142\u0105cze\u0144 oczekuj\u0105cych na przyj\u0119cie przez proces nas\u0142uchuj\u0105cy. Nie oznacza liczby \u017c\u0105da\u0144 przetwarzanych przez aplikacj\u0119. Gdy proces nie przyjmuje po\u0142\u0105cze\u0144 wystarczaj\u0105co szybko, kolejka ro\u015bnie. Po jej zape\u0142nieniu nowe pr\u00f3by po\u0142\u0105czenia mog\u0105 by\u0107 odrzucane albo ko\u0144czy\u0107 si\u0119 timeoutem. Parametry serwera zwi\u0105zane z obs\u0142ug\u0105 po\u0142\u0105cze\u0144 i kolejkami nale\u017c\u0105 do ustawie\u0144 wp\u0142ywaj\u0105cych na wydajno\u015b\u0107 <a href=\"https:\/\/www.oreilly.com\/library\/view\/web-performance-tuning\/1565923790\/ch13s02.html?utm_source=openai\" target=\"_blank\" rel=\"noopener\">serwera<\/a>.<\/p>\n<p class=\"wp-block-paragraph\"><strong>Limit r\u00f3wnoczesno\u015bci aplikacji<\/strong> okre\u015bla, ile \u017c\u0105da\u0144 aplikacja mo\u017ce przetwarza\u0107 w tym samym czasie. Mo\u017ce by\u0107 zwi\u0105zany na przyk\u0142ad z liczb\u0105 proces\u00f3w, w\u0105tk\u00f3w, worker\u00f3w albo po\u0142\u0105cze\u0144 do us\u0142ugi zaplecza. Po\u0142\u0105czenie TCP mo\u017ce by\u0107 otwarte, ale \u017c\u0105danie nadal czeka\u0107 na wolny worker aplikacji. Wtedy wolne CPU nie oznacza, \u017ce aplikacja ma woln\u0105 zdolno\u015b\u0107 obs\u0142ugi kolejnego \u017c\u0105dania.<\/p>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Dlaczego_pojawia_sie_timeout_przy_wolnym_CPU_i_RAM\"><\/span>Dlaczego pojawia si\u0119 timeout przy wolnym CPU i RAM?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"wp-block-paragraph\">Timeout oznacza, \u017ce klient nie otrzyma\u0142 odpowiedzi w oczekiwanym czasie. Przyczyn\u0105 mo\u017ce by\u0107 oczekiwanie na wolne miejsce w kolejce, worker aplikacji, po\u0142\u0105czenie do bazy danych albo odpowied\u017a us\u0142ugi za reverse proxy. Serwer mo\u017ce wtedy zu\u017cywa\u0107 niewiele CPU, poniewa\u017c procesy czekaj\u0105 na dane lub wolny zas\u00f3b, zamiast intensywnie wykonywa\u0107 obliczenia.<\/p>\n<p class=\"wp-block-paragraph\">Typowe \u017ar\u00f3d\u0142a problemu to:<\/p>\n<ul class=\"wp-block-list\">\n<li>zbyt wiele otwartych po\u0142\u0105cze\u0144 TCP,<\/li>\n<li>du\u017ca liczba bezczynnych po\u0142\u0105cze\u0144 keep-alive,<\/li>\n<li>zape\u0142niona kolejka listen backlog,<\/li>\n<li>wyczerpany limit r\u00f3wnoczesnych \u017c\u0105da\u0144 aplikacji,<\/li>\n<li>nag\u0142y wzrost ruchu, kt\u00f3ry przez kr\u00f3tki czas tworzy wi\u0119cej pracy ni\u017c serwer mo\u017ce przyj\u0105\u0107,<\/li>\n<li>wolni klienci, kt\u00f3rzy d\u0142ugo pobieraj\u0105 odpowied\u017a i utrzymuj\u0105 zaj\u0119te po\u0142\u0105czenia.<\/li>\n<\/ul>\n<p class=\"wp-block-paragraph\">Problemy wynikaj\u0105ce z wyczerpania po\u0142\u0105cze\u0144 mog\u0105 mie\u0107 r\u00f3\u017cne objawy zale\u017cnie od miejsca przeci\u0105\u017cenia. Sposoby wykrywania i diagnozowania wyczerpania po\u0142\u0105cze\u0144 opisuje materia\u0142 dotycz\u0105cy NGINX <a href=\"https:\/\/www.netdata.cloud\/guides\/nginx\/nginx-connection-exhaustion\/?utm_source=openai\" target=\"_blank\" rel=\"noopener\">Netdata<\/a>.<\/p>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Jak_ruch_keep-alive_i_wolni_klienci_zmieniaja_zapotrzebowanie\"><\/span>Jak ruch, keep-alive i wolni klienci zmieniaj\u0105 zapotrzebowanie?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"wp-block-paragraph\">Nag\u0142y wzrost ruchu zwi\u0119ksza jednocze\u015bnie liczb\u0119 nowych po\u0142\u0105cze\u0144 i liczb\u0119 \u017c\u0105da\u0144 oczekuj\u0105cych na obs\u0142ug\u0119. Nawet kr\u00f3tki pik mo\u017ce zape\u0142ni\u0107 kolejk\u0119, je\u015bli proces przyjmuj\u0105cy po\u0142\u0105czenia lub aplikacja nie nad\u0105\u017caj\u0105 z ich obs\u0142ug\u0105.<\/p>\n<p class=\"wp-block-paragraph\">Keep-alive zmienia profil obci\u0105\u017cenia. Mniej nowych po\u0142\u0105cze\u0144 oznacza mniejszy koszt ich zestawiania, ale wi\u0119cej sesji mo\u017ce pozosta\u0107 otwartych mi\u0119dzy \u017c\u0105daniami. Wolny klient dodatkowo utrzymuje po\u0142\u0105czenie przez d\u0142u\u017cszy czas. Je\u015bli serwer lub proxy rezerwuje zasoby dla takich sesji, mniejsza liczba klient\u00f3w mo\u017ce wystarczy\u0107 do osi\u0105gni\u0119cia limitu.<\/p>\n<p class=\"wp-block-paragraph\">Reverse proxy rozdziela po\u0142\u0105czenia klienta od po\u0142\u0105cze\u0144 do serwera aplikacji. Dlatego nale\u017cy analizowa\u0107 osobno liczb\u0119 po\u0142\u0105cze\u0144 od u\u017cytkownik\u00f3w, po\u0142\u0105cze\u0144 proxy do aplikacji oraz \u017c\u0105da\u0144 oczekuj\u0105cych po stronie zaplecza. Mechanizmy ochrony przed przeci\u0105\u017ceniem i obs\u0142uga kolejek w proxy opisuje dokumentacja <a href=\"https:\/\/www.haproxy.com\/documentation\/haproxy-configuration-tutorials\/performance\/overload-protection\/\" target=\"_blank\" rel=\"noopener\">HAProxy<\/a>.<\/p>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Jakie_metryki_sprawdzic\"><\/span>Jakie metryki sprawdzi\u0107?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"wp-block-paragraph\">Analizuj metryki wed\u0142ug warstwy, w kt\u00f3rej mo\u017ce powstawa\u0107 kolejka:<\/p>\n<ul class=\"wp-block-list\">\n<li><strong>Sie\u0107 i TCP:<\/strong> liczba otwartych po\u0142\u0105cze\u0144, ich stany, liczba nowych po\u0142\u0105cze\u0144 oraz czas ich utrzymywania.<\/li>\n<li><strong>Listener:<\/strong> rozmiar listen backlog, liczba po\u0142\u0105cze\u0144 oczekuj\u0105cych, odrzucone po\u0142\u0105czenia i tempo ich przyjmowania.<\/li>\n<li><strong>Reverse proxy:<\/strong> po\u0142\u0105czenia od klient\u00f3w, po\u0142\u0105czenia do upstreamu, \u017c\u0105dania oczekuj\u0105ce oraz czas odpowiedzi upstreamu.<\/li>\n<li><strong>Aplikacja:<\/strong> liczba zaj\u0119tych i wolnych worker\u00f3w, d\u0142ugo\u015b\u0107 kolejki \u017c\u0105da\u0144, czas odpowiedzi i b\u0142\u0119dy aplikacji.<\/li>\n<li><strong>Serwer:<\/strong> CPU, RAM, u\u017cycie przestrzeni oraz inne limity zasob\u00f3w.<\/li>\n<\/ul>\n<p class=\"wp-block-paragraph\">Nie oceniaj problemu wy\u0142\u0105cznie na podstawie CPU i RAM. Zestaw te dane z liczb\u0105 po\u0142\u0105cze\u0144, czasem odpowiedzi i d\u0142ugo\u015bci\u0105 kolejek.<\/p>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Kiedy_stroic_konfiguracje_wlaczyc_cache_albo_zwiekszyc_hosting\"><\/span>Kiedy stroi\u0107 konfiguracj\u0119, w\u0142\u0105czy\u0107 cache albo zwi\u0119kszy\u0107 hosting?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"wp-block-paragraph\"><strong>Strojenie<\/strong> ma sens, gdy problem dotyczy kr\u00f3tkich pik\u00f3w, zbyt d\u0142ugich keep-alive, kolejki lub limitu aplikacji, a serwer ma zapas pozosta\u0142ych zasob\u00f3w. Zmiany wykonuj po zapisaniu obecnej konfiguracji i z mo\u017cliwo\u015bci\u0105 cofni\u0119cia. Po ka\u017cdej zmianie por\u00f3wnaj liczb\u0119 timeout\u00f3w, czas odpowiedzi, d\u0142ugo\u015b\u0107 kolejek i liczb\u0119 aktywnych po\u0142\u0105cze\u0144.<\/p>\n<p class=\"wp-block-paragraph\"><strong>Cache<\/strong> mo\u017ce pom\u00f3c, gdy wiele \u017c\u0105da\u0144 powtarza t\u0119 sam\u0105 prac\u0119 aplikacji. Zmniejszenie liczby \u017c\u0105da\u0144 docieraj\u0105cych do aplikacji ogranicza konkurencj\u0119 o workery i po\u0142\u0105czenia do zaplecza. Przed w\u0142\u0105czeniem cache sprawd\u017a, czy nie przechowuje tre\u015bci prywatnych lub dynamicznych.<\/p>\n<p class=\"wp-block-paragraph\"><strong>Zmiana zasob\u00f3w hostingu<\/strong> jest uzasadniona, gdy obci\u0105\u017cenie utrzymuje si\u0119 przez d\u0142u\u017cszy czas, kolejki i timeouty wracaj\u0105 po strojeniach, a aplikacja potrzebuje wi\u0119kszej r\u00f3wnoczesno\u015bci. W Elastycznym Web Hostingu zasoby s\u0105 dopasowywane do aktualnego ruchu i obci\u0105\u017cenia. Przy wi\u0119kszym ruchu mog\u0105 wzrosn\u0105\u0107 dost\u0119pne CPU, RAM i przestrze\u0144, a po spadku obci\u0105\u017cenia poziom wraca do warto\u015bci bazowej.<\/p>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"FAQ\"><\/span>FAQ<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\">\n<summary>Czy otwarte po\u0142\u0105czenie oznacza aktywne \u017c\u0105danie?<\/summary>\n<p class=\"wp-block-paragraph\">\n<\/details>\n<p class=\"wp-block-paragraph\">Nie. Po\u0142\u0105czenie TCP mo\u017ce pozostawa\u0107 otwarte dzi\u0119ki keep-alive, mimo \u017ce w danej chwili nie wykonuje \u017c\u0105dania. Dlatego liczba otwartych po\u0142\u0105cze\u0144 i liczba aktywnych \u017c\u0105da\u0144 to r\u00f3\u017cne metryki.<\/p>\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\">\n<summary>Czy zwi\u0119kszenie limitu po\u0142\u0105cze\u0144 zawsze usuwa timeouty?<\/summary>\n<p class=\"wp-block-paragraph\">\n<\/details>\n<p class=\"wp-block-paragraph\">Nie. Je\u015bli w\u0105skim gard\u0142em jest backlog, worker aplikacji, upstream lub baza danych, wi\u0119ksza liczba po\u0142\u0105cze\u0144 mo\u017ce tylko wyd\u0142u\u017cy\u0107 kolejk\u0119. Najpierw ustal, w kt\u00f3rej warstwie ro\u015bnie oczekiwanie.<\/p>\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\">\n<summary>Co oznacza wzrost b\u0142\u0119d\u00f3w przy nag\u0142ym ruchu?<\/summary>\n<p class=\"wp-block-paragraph\">\n<\/details>\n<p class=\"wp-block-paragraph\">Zwykle oznacza, \u017ce jedna z kolejek albo pul po\u0142\u0105cze\u0144 osi\u0105gn\u0119\u0142a swoj\u0105 pojemno\u015b\u0107. Por\u00f3wnaj wtedy czas wyst\u0105pienia b\u0142\u0119d\u00f3w z liczb\u0105 nowych i otwartych po\u0142\u0105cze\u0144, d\u0142ugo\u015bci\u0105 kolejek oraz czasem odpowiedzi aplikacji.<\/p>\n","protected":false},"author":6,"featured_media":10957,"parent":0,"menu_order":0,"template":"","format":"standard","manualknowledgebasecat":[97,95,121,124,3488],"manual_kb_tag":[8020,8021,8022,578,8023,6656,8025,3866],"class_list":["post-17797","manual_kb","type-manual_kb","status-publish","format-standard","has-post-thumbnail","hentry","manualknowledgebasecat-bazy-danych","manualknowledgebasecat-hosting","manualknowledgebasecat-inne","manualknowledgebasecat-inne-faktury-i-platnosci","manualknowledgebasecat-inne-domeny","manual_kb_tag-keep-alive","manual_kb_tag-listen-backlog","manual_kb_tag-timeout","manual_kb_tag-elastyczny-web-hosting","manual_kb_tag-polaczenia-tcp","manual_kb_tag-reverse-proxy","manual_kb_tag-monitoring-serwera","manual_kb_tag-wydajnosc-strony"],"_links":{"self":[{"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/manual_kb\/17797","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/manual_kb"}],"about":[{"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/types\/manual_kb"}],"author":[{"embeddable":true,"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/users\/6"}],"version-history":[{"count":3,"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/manual_kb\/17797\/revisions"}],"predecessor-version":[{"id":17798,"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/manual_kb\/17797\/revisions\/17798"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/media\/10957"}],"wp:attachment":[{"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/media?parent=17797"}],"wp:term":[{"taxonomy":"manualknowledgebasecat","embeddable":true,"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/manualknowledgebasecat?post=17797"},{"taxonomy":"manual_kb_tag","embeddable":true,"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/manual_kb_tag?post=17797"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}