{"id":33707,"date":"2019-10-31T21:54:17","date_gmt":"2019-10-31T18:54:17","guid":{"rendered":"https:\/\/prohoster.info\/blog\/inogda-bolshe-eto-menshe-kogda-umenshenie-nagruzki-privodit-k-uvelicheniyu-zaderzhki\/"},"modified":"2019-10-31T21:54:17","modified_gmt":"2019-10-31T18:54:17","slug":"inogda-bolshe-eto-menshe-kogda-umenshenie-nagruzki-privodit-k-uvelicheniyu-zaderzhki","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/inogda-bolshe-eto-menshe-kogda-umenshenie-nagruzki-privodit-k-uvelicheniyu-zaderzhki","title":{"rendered":"Niekedy je viac menej. Ke\u010f zn\u00ed\u017eenie z\u00e1\u0165a\u017ee vedie k zv\u00fd\u0161eniu oneskorenia","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Rovnako ako v <noindex><a rel=\"nofollow\" href=\"https:\/\/mahdytech.com\/2019\/01\/13\/curious-case-999-latency-hike\/\">v\u00e4\u010d\u0161ine pr\u00edspevkov<\/a><\/noindex>, objavil sa probl\u00e9m s distribuovanou slu\u017ebou, nazvime t\u00fato slu\u017ebu Elvin. Tentoraz som probl\u00e9m neobjavil s\u00e1m, informovali ma chlapci z klientskej \u010dasti.<\/p>\n<p>Raz r\u00e1no ma zobudil nespokojn\u00fd e-mail kv\u00f4li ve\u013ek\u00fdm oneskoreniam u Elvina, ktor\u00e9ho sme pl\u00e1novali spusti\u0165 \u010doskoro. Konkr\u00e9tne sa klient stretol s oneskoren\u00edm 99. percentilu okolo 50 ms, \u010do je ove\u013ea vy\u0161\u0161ie ne\u017e n\u00e1\u0161 rozpo\u010det na oneskorenie. Bolo to prekvapiv\u00e9, preto\u017ee som slu\u017ebu d\u00f4kladne testoval, najm\u00e4 na oneskorenie, preto\u017ee je to predmetom \u010dast\u00fdch s\u0165a\u017enost\u00ed.<\/p>\n<p>Predt\u00fdm, ne\u017e som dal Elvina do testovania, som vykonal ve\u013ea experimentov s 40 tis\u00edc \u017eiados\u0165ami za sekundu (QPS), v\u0161etky vyk\u00e1zali oneskorenie menej ne\u017e 10 ms. Bol som pripraven\u00fd tvrdi\u0165, \u017ee so v\u00fdsledkami nes\u00fahlas\u00edm. Ale ke\u010f som sa znova pozrel na e-mail, v\u0161imol som si nie\u010do nov\u00e9: presne som netestoval podmienky, ktor\u00e9 spomenuli, ich QPS bolo omnoho ni\u017e\u0161ie ne\u017e moje. Testoval som na 40k QPS, zatia\u013e \u010do oni len na 1k. Spustil som \u010fal\u0161\u00ed experiment, tentoraz s ni\u017e\u0161\u00edm QPS, len aby som ich upokojil.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nKe\u010f\u017ee o tom p\u00ed\u0161em na blogu \u2013 pravdepodobne ste u\u017e pochopili: ich \u010d\u00edsla sa uk\u00e1zali by\u0165 spr\u00e1vne. Svoj virtu\u00e1lny klient som kontroloval znova a znova, v\u017edy s rovnak\u00fdm v\u00fdsledkom: n\u00edzky po\u010det po\u017eiadaviek nielen zvy\u0161uje oneskorenie, ale tie\u017e zvy\u0161uje po\u010det po\u017eiadaviek s oneskoren\u00edm nad 10 ms. In\u00fdmi slovami, ak pri 40k QPS pribli\u017ene 50 po\u017eiadaviek za sekundu prekro\u010dilo 50 ms, tak pri 1k QPS bolo ka\u017ed\u00fa sekundu 100 po\u017eiadaviek nad 50 ms. Paradox!<\/p>\n<p><img decoding=\"async\" alt=\"Niekedy je viac menej. Ke\u010f zn\u00ed\u017eenie z\u00e1\u0165a\u017ee vedie k zv\u00fd\u0161eniu oneskorenia\" src=\"\/wp-content\/uploads\/2019\/05\/d181859376e2befad9ed631e8f8ff168.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h1>Z\u00fa\u017eime okruh podozriv\u00fdch<\/h1>\n<p>\nPri stretnut\u00ed s probl\u00e9mom oneskorenia v distribuovanom syst\u00e9me s mnoh\u00fdmi komponentmi je prv\u00fdm krokom zostavi\u0165 kr\u00e1tky zoznam podozriv\u00fdch. P\u00fa\u0161\u0165me sa hlb\u0161ie do architekt\u00fary Elvina:<\/p>\n<p><img decoding=\"async\" alt=\"Niekedy je viac menej. Ke\u010f zn\u00ed\u017eenie z\u00e1\u0165a\u017ee vedie k zv\u00fd\u0161eniu oneskorenia\" src=\"\/wp-content\/uploads\/2019\/05\/9b10198772b0e53890eb94d5e5c9afd0.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDobrou v\u00fdchodiskovou z\u00e1klad\u0148ou je zoznam vykonan\u00fdch prep\u00ednan\u00ed vstup-v\u00fdstup (sie\u0165ov\u00e9 volania \/ vyh\u013ead\u00e1vanie na disku at\u010f.). Pok\u00fasme sa zisti\u0165, kde je oneskorenie. Okrem zrejm\u00e9ho vstupu-v\u00fdstupu s klientom, Elvin vykon\u00e1va \u010fal\u0161\u00ed krok: obracia sa na \u00falo\u017eisko \u00fadajov. Av\u0161ak toto \u00falo\u017eisko funguje v jednom klastri s Elvinom, preto by tam malo by\u0165 oneskorenie men\u0161ie ne\u017e s klientom. Tak\u017ee zoznam podozriv\u00fdch:<\/p>\n<ol>\n<li>Sie\u0165ov\u00e9 volanie od klienta k Elvinovi.\n<\/li>\n<li>Sie\u0165ov\u00e9 volanie od Elvina k \u00falo\u017eisku \u00fadajov.\n<\/li>\n<li>H\u013eadanie na disku v \u00falo\u017eisku \u00fadajov.\n<\/li>\n<li>Sie\u0165ov\u00e9 volanie z \u00falo\u017eiska d\u00e1t ku Elvinovi.\n<\/li>\n<li>Sie\u0165ov\u00e9 volanie od Elvina ku klientovi.<\/li>\n<\/ol>\n<p>\nSk\u00fasme pre\u010diarknu\u0165 niektor\u00e9 body.<\/p>\n<h3>\u00dalo\u017eisko d\u00e1t nie je v tom.<\/h3>\n<p>\nV prvom rade som premenil Elvina na server ping-ping, ktor\u00fd nezpracov\u00e1va po\u017eiadavky. Pri prijat\u00ed po\u017eiadavky vracia pr\u00e1zdnu odpove\u010f. Ak sa oneskorenie zni\u017euje, potom chyba spo\u010d\u00edva v implement\u00e1cii Elvina alebo \u00falo\u017eiska d\u00e1t \u2014 ni\u010d tak\u00e9 neobvykl\u00e9. V prvom experimente dost\u00e1vame tak\u00fdto graf:<\/p>\n<p><img decoding=\"async\" alt=\"Niekedy je viac menej. Ke\u010f zn\u00ed\u017eenie z\u00e1\u0165a\u017ee vedie k zv\u00fd\u0161eniu oneskorenia\" src=\"\/wp-content\/uploads\/2019\/05\/bd8fed2b2cc0d07946d1c4a868ae36b3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAko vid\u00edme, pri pou\u017eit\u00ed servera ping-ping sa nepozoruj\u00fa \u017eiadne zlep\u0161enia. To znamen\u00e1, \u017ee \u00falo\u017eisko d\u00e1t nezvy\u0161uje oneskorenie, pri\u010dom zoznam podozriv\u00fdch sa zni\u017euje na polovicu:<\/p>\n<ol>\n<li>Sie\u0165ov\u00e9 volanie od klienta k Elvinovi.\n<\/li>\n<li>Sie\u0165ov\u00e9 volanie od Elvina ku klientovi.<\/li>\n<\/ol>\n<p>\nSkvel\u00e9! Zoznam sa r\u00fdchlo z\u00fa\u017ei. myslel som si, \u017ee som takmer objavil pr\u00ed\u010dinu.<\/p>\n<h3>gRPC<\/h3>\n<p>\nTeraz je \u010das predstavi\u0165 v\u00e1m nov\u00e9ho hr\u00e1\u010da: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/grpc\/grpc\">gRPC<\/a><\/noindex>. Je to kni\u017enica s otvoren\u00fdm zdrojov\u00fdm k\u00f3dom od Google pre medzi-processov\u00fa komunik\u00e1ciu <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Remote_procedure_call\">RPC<\/a><\/noindex>. Hoci <code>gRPC<\/code> je dobre optimalizovan\u00e1 a \u0161iroko pou\u017e\u00edvan\u00e1, ja som ju prv\u00fdkr\u00e1t pou\u017eil v syst\u00e9me tak\u00e9hoto rozsahu, a o\u010dak\u00e1val som, \u017ee moja implement\u00e1cia bude neoptim\u00e1lna - povedan\u00e9 mierne.<\/p>\n<p>Pr\u00edtomnos\u0165 <code>gRPC<\/code> v z\u00e1sobn\u00edku vyvolalo nov\u00fa ot\u00e1zku: m\u00f4\u017ee to by\u0165 moja implement\u00e1cia alebo samotn\u00e1 <code>gRPC<\/code> sp\u00f4sobuje probl\u00e9m s oneskoren\u00edm? Prid\u00e1vame do zoznamu nov\u00e9ho podozriv\u00e9ho:<\/p>\n<ol>\n<li>Klient vol\u00e1 kni\u017enicu <code>gRPC<\/code>\n<\/li>\n<li>Kni\u017enica <code>gRPC<\/code> na klientovi vykon\u00e1va sie\u0165ov\u00e9 volanie kni\u017enice <code>gRPC<\/code> na serveri\n<\/li>\n<li>Kni\u017enica <code>gRPC<\/code> obr\u00e1ti sa na Elvina (v pr\u00edpade servera ping-pong oper\u00e1cia neexistuje)<\/li>\n<\/ol>\n<p>\nAby ste pochopili, ako vyzer\u00e1 k\u00f3d, moja implement\u00e1cia klienta\/Elvina sa ve\u013emi nel\u00ed\u0161i od pr\u00edkladov klient-server <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/grpc\/grpc\/tree\/v1.19.0\/examples\/cpp\/helloworld\">asynchr\u00f3nne<\/a><\/noindex>.<\/p>\n<blockquote><p><i>Pozn\u00e1mka: uveden\u00fd vy\u0161\u0161ie zoznam je mierne zjednodu\u0161en\u00fd, preto\u017ee <code>gRPC<\/code> umo\u017e\u0148uje pou\u017eitie vlastn\u00e9ho (\u0161abl\u00f3nov\u00e9ho?) modelu pr\u00fadenia, v ktorom sa prel\u00ednaj\u00fa z\u00e1sobn\u00edk vykon\u00e1vania <code>gRPC<\/code> a implement\u00e1cia pou\u017e\u00edvate\u013ea. Pre jednoduchos\u0165 sa budeme dr\u017ea\u0165 tohto modelu.<\/i><\/p><\/blockquote>\n<p><\/p>\n<h3>Profilovanie v\u0161etko naprav\u00ed<\/h3>\n<p>\nPo vy\u010disten\u00ed \u00falo\u017e\u00edsk d\u00e1t som si pomyslel, \u017ee som skoro skon\u010dil: \u201eTeraz je to jednoduch\u00e9! Aplikujeme profilovanie a zist\u00edme, kde vznik\u00e1 oneskorenie\u201c. Som <noindex><a rel=\"nofollow\" href=\"https:\/\/mahdytech.com\/2019\/01\/13\/curious-case-999-latency-hike\/\">ve\u013ek\u00fdm fan\u00fa\u0161ikom presn\u00e9ho profilovania<\/a><\/noindex>, preto\u017ee CPU s\u00fa ve\u013emi r\u00fdchle a naj\u010dastej\u0161ie nie s\u00fa \u00fazkym miestom. V\u00e4\u010d\u0161ina oneskoren\u00ed sa vyskytuje, ke\u010f procesor mus\u00ed zastavi\u0165 spracovanie, aby spravil nie\u010do in\u00e9. Presn\u00e9 profilovanie CPU je presne na to: presne zaznamen\u00e1va v\u0161etky <noindex><a rel=\"nofollow\" href=\"https:\/\/www.tutorialspoint.com\/what-is-context-switching-in-operating-system\">prep\u00ednania kontextov<\/a><\/noindex> a poskytuje jasnos\u0165, kde vznikaj\u00fa oneskorenia.<\/p>\n<p>Vzal som \u0161tyri profily: pre vysok\u00e9 QPS (mal\u00e1 latencia) a so serverom ping-pong pri n\u00edzkom QPS (ve\u013ek\u00e1 latencia), ako na strane klienta, tak aj na strane servera. A pre istotu som vzal aj vzor profilu procesora. Pri porovn\u00e1van\u00ed profilov zvy\u010dajne h\u013ead\u00e1m anom\u00e1lny z\u00e1sobn\u00edk volan\u00ed. Napr\u00edklad na zlej strane s vysokou latenciou doch\u00e1dza k ove\u013ea v\u00e4\u010d\u0161iemu po\u010dtu prepnut\u00ed kontextu (10 a viac kr\u00e1t). Ale v mojom pr\u00edpade sa po\u010det prepnut\u00ed kontextu prakticky zhodoval. K m\u00f4jmu z\u00fafalstvu sa tam ni\u010d podstatn\u00e9 nena\u0161lo.<\/p>\n<h1>\u010eal\u0161ie ladenie<\/h1>\n<p>\nBol som v bezn\u00e1deji. Nevedel som, ak\u00e9 \u010fal\u0161ie n\u00e1stroje by som mohol pou\u017ei\u0165, a m\u00f4j \u010fal\u0161\u00ed pl\u00e1n spo\u010d\u00edval v podstate v opakovan\u00ed experimentov s r\u00f4znymi vari\u00e1ciami, namiesto presn\u00e9ho diagnostikovania probl\u00e9mu.<\/p>\n<h3>\u010co ak<\/h3>\n<p>\nHne\u010f od za\u010diatku ma znepokojovala konkr\u00e9tna doba latencie 50 ms. To je ve\u013emi ve\u013ek\u00e1 doba. Rozhodol som sa, \u017ee budem odstrih\u00e1va\u0165 kusy z k\u00f3du, k\u00fdm nezist\u00edm presne, ktor\u00e1 \u010das\u0165 sp\u00f4sobuje t\u00fato chybu. N\u00e1sledoval experiment, ktor\u00fd fungoval.<\/p>\n<p>Ako zvy\u010dajne, sp\u00e4tne sa zd\u00e1, \u017ee v\u0161etko bolo o\u010dividn\u00e9. Dal som klienta na jeden stroj s Elvinom \u2013 a poslal po\u017eiadavku do <code>localhost<\/code>. A zv\u00fd\u0161enie latencie zmizlo!<\/p>\n<p><img decoding=\"async\" alt=\"Niekedy je viac menej. Ke\u010f zn\u00ed\u017eenie z\u00e1\u0165a\u017ee vedie k zv\u00fd\u0161eniu oneskorenia\" src=\"\/wp-content\/uploads\/2019\/05\/2d8466625a264abe2110a65592ee0da8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNie\u010do nebolo v poriadku so sie\u0165ou.<\/p>\n<h3>Osvojujeme si zru\u010dnosti sie\u0165ov\u00e9ho in\u017einiera<\/h3>\n<p>\nMus\u00edm sa prizna\u0165: moje znalosti sie\u0165ov\u00fdch technol\u00f3gi\u00ed s\u00fa hrozn\u00e9, najm\u00e4 s oh\u013eadom na to, \u017ee s nimi pracujem denne. Ale sie\u0165 bola hlavn\u00fdm podozriv\u00fdm a musel som sa nau\u010di\u0165, ako ju ladit.<\/p>\n<p>Na\u0161\u0165astie internet m\u00e1 r\u00e1d t\u00fdch, ktor\u00ed sa chc\u00fa u\u010di\u0165. Kombin\u00e1cia ping a tracert sa zdala by\u0165 dostato\u010dne dobr\u00fdm za\u010diatkom pre ladenie probl\u00e9mov sie\u0165ov\u00e9ho transportu.<\/p>\n<p>Najprv som spustil <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/en-us\/sysinternals\/downloads\/psping\">PsPing<\/a><\/noindex> na TCP port Elvina. Pou\u017eil som predvolen\u00e9 parametre \u2013 ni\u010d osobitn\u00e9. Z viac ako tis\u00edc pingov ani jeden nepresiahol 10 ms, s v\u00fdnimkou prv\u00e9ho na zahriatie. To je v rozpore s pozorovan\u00fdm zv\u00fd\u0161en\u00edm latencie na 50 ms v 99. percentile: tam na ka\u017ed\u00fdch 100 po\u017eiadaviek sme mali vidie\u0165 okolo jedn\u00e9ho po\u017eiadavku s latenciou 50 ms.<\/p>\n<p>Potom som sa pok\u00fasil o <noindex><a rel=\"nofollow\" href=\"https:\/\/support.microsoft.com\/en-ca\/help\/314868\/how-to-use-tracert-to-troubleshoot-tcp-ip-problems-in-windows\">tracert<\/a><\/noindex>: mo\u017eno je probl\u00e9m na jednom z uzlov na ceste medzi Elvinom a klientom. Ale ani tracer sa nevr\u00e1til s pr\u00e1zdnymi rukami.<\/p>\n<p>T\u00fdm p\u00e1dom, pr\u00ed\u010dinou latencie nebol m\u00f4j k\u00f3d, nie implement\u00e1cia gRPC a ani sie\u0165. U\u017e som za\u010dal ma\u0165 obavy, \u017ee to nikdy nepochop\u00edm.<\/p>\n<h3>Teraz, na akej OS sa nach\u00e1dzame<\/h3>\n<p>\n<code>gRPC<\/code> je \u0161iroko pou\u017e\u00edvan\u00fd v Linuxe, ale pre Windows je to exotika. Rozhodol som sa vykona\u0165 experiment, ktor\u00fd vy\u0161iel: vytvoril som virtu\u00e1lny stroj Linux, zkompiloval Elvina pre Linux a nasadil ho.<\/p>\n<p><img decoding=\"async\" alt=\"Niekedy je viac menej. Ke\u010f zn\u00ed\u017eenie z\u00e1\u0165a\u017ee vedie k zv\u00fd\u0161eniu oneskorenia\" src=\"\/wp-content\/uploads\/2019\/05\/ee74c16de7e1ac6c286e401660e94ca1.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA tu je v\u00fdsledok: v ping-pong serveri Linux neboli tak\u00e9 oneskorenia ako v analogickom uzle Windows, aj ke\u010f zdroj d\u00e1t sa nel\u00ed\u0161il. Ukazuje sa, \u017ee probl\u00e9m je v implement\u00e1cii gRPC pre Windows.<\/p>\n<h3>Algoritmus Nagle<\/h3>\n<p>\nPo\u010das cel\u00e9ho tohto \u010dasu som si myslel, \u017ee mi ch\u00fdba flag <code>gRPC<\/code>. Teraz som pochopil, \u017ee vlastne to je v <code>gRPC<\/code> ch\u00fdba flag Windows. Na\u0161iel som intern\u00fa kni\u017enicu RPC, v ktorej som bol presved\u010den\u00fd, \u017ee funguje dobre pre v\u0161etky nastaven\u00e9 flagy <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/desktop\/winsock\/windows-sockets-start-page-2\">Winsock<\/a><\/noindex>. Potom som pridal v\u0161etky tieto flagy do gRPC a nasadil Elvina na Windows, v opravenom ping-pong serveri pod Windows!<\/p>\n<p><img decoding=\"async\" alt=\"Niekedy je viac menej. Ke\u010f zn\u00ed\u017eenie z\u00e1\u0165a\u017ee vedie k zv\u00fd\u0161eniu oneskorenia\" src=\"\/wp-content\/uploads\/2019\/05\/ce3a4066c78f9f6a63fd68578224d6e5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Takmer<\/i> hotov\u00e9: za\u010dal som odstra\u0148ova\u0165 pridan\u00e9 flagy jeden po druhom, k\u00fdm sa regresia nevr\u00e1tila, tak\u017ee som mohol presne ur\u010di\u0165 jej pr\u00ed\u010dinu. Bola to zn\u00e1ma <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/desktop\/api\/winsock\/nf-winsock-setsockopt\">TCP_NODELAY<\/a><\/noindex>, prep\u00edna\u010d algoritmu Nagle.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Nagle%27s_algorithm\">Algoritmus Nagle<\/a><\/noindex> sna\u017e\u00ed sa zn\u00ed\u017ei\u0165 po\u010det paketov odoslan\u00fdch po sieti t\u00fdm, \u017ee oneskor\u00ed prenos spr\u00e1v, k\u00fdm ve\u013ekos\u0165 paketu nepresiahne ur\u010den\u00e9 mno\u017estvo bajtov. Hoci to m\u00f4\u017ee by\u0165 pr\u00edjemn\u00e9 pre priemern\u00e9ho pou\u017e\u00edvate\u013ea, m\u00f4\u017ee to by\u0165 de\u0161trukt\u00edvne pre servery v re\u00e1lnom \u010dase, preto\u017ee OS oneskor\u00ed niektor\u00e9 spr\u00e1vy, \u010do sp\u00f4sob\u00ed oneskorenia pri n\u00edzkom QPS. U <code>gRPC<\/code> bol tento flag nastaven\u00fd v implement\u00e1cii Linux pre TCP sokety, ale nie pre Windows. Opravil som to. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/grpc\/grpc\/commit\/1dce1009e67ea4b5934a61b1bcf8a217bd12cc76\">Ve\u013ek\u00e9 oneskorenie pri n\u00edzkom QPS sp\u00f4sobila optimaliz\u00e1cia OS. Pozeraj\u00fac sa sp\u00e4\u0165, profilovanie nezistilo oneskorenie, preto\u017ee prebiehalo v re\u017eime jadra, nie v<\/a><\/noindex>.<\/p>\n<h1>Z\u00e1ver<\/h1>\n<p>\nu\u017e\u00edvate\u013eskom re\u017eime. <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.codinghorror.com\/understanding-user-and-kernel-mode\/\">Neviem, \u010di je mo\u017en\u00e9 pozorova\u0165 algoritmus Nagle cez ETW zachyt\u00e1vky, ale bolo by to zauj\u00edmav\u00e9.<\/a><\/noindex>\u010co sa t\u00fdka experimentu localhost, pravdepodobne sa net\u00fdkal skuto\u010dn\u00e9ho sie\u0165ov\u00e9ho k\u00f3du a algoritmus Nagle sa nespustil, tak\u017ee probl\u00e9my s oneskoren\u00edm zmizli, ke\u010f sa klient obr\u00e1til na Elvina cez localhost.<\/p>\n<p>Pri \u010fal\u0161om zv\u00fd\u0161en\u00ed oneskorenia pri zni\u017eovan\u00ed po\u010dtu po\u017eiadaviek za sekundu by mal by\u0165 algoritmus Nagle na va\u0161om zozname podozriv\u00fdch!<\/p>\n<p>Ako v v\u00e4\u010d\u0161ine pr\u00edspevkov, objavil sa probl\u00e9m s distribuovanou slu\u017ebou, nazvime t\u00fato slu\u017ebu Elvin.<br \/>\n<br \/>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/451904\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041a\u0430\u043a \u0438 \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u043f\u043e\u0441\u0442\u043e\u0432, \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u0441\u043b\u0443\u0436\u0431\u043e\u0439, \u043d\u0430\u0437\u043e\u0432\u0451\u043c \u044d\u0442\u0443 \u0441\u043b\u0443\u0436\u0431\u0443 \u042d\u043b\u0432\u0438\u043d. \u041d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u044f \u043d\u0435 \u0441\u0430\u043c \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u043c\u043d\u0435 \u0441\u043e\u043e\u0431\u0449\u0438\u043b\u0438 \u0440\u0435\u0431\u044f\u0442\u0430 \u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438. \u041e\u0434\u043d\u0430\u0436\u0434\u044b \u044f \u043f\u0440\u043e\u0441\u043d\u0443\u043b\u0441\u044f \u043e\u0442 \u043d\u0435\u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0438\u0441\u044c\u043c\u0430 \u0438\u0437-\u0437\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0437\u0430\u0434\u0435\u0440\u0436\u0435\u043a \u0443 \u042d\u043b\u0432\u0438\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u044b \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0435 \u0432\u0440\u0435\u043c\u044f. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043a\u043b\u0438\u0435\u043d\u0442 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u043e\u0439 99-\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0438\u043b\u044f \u0432 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":25389,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-33707","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041a\u0430\u043a \u0438 \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u043f\u043e\u0441\u0442\u043e\u0432, \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u0441\u043b\u0443\u0436\u0431\u043e\u0439, \u043d\u0430\u0437\u043e\u0432\u0451\u043c \u044d\u0442\u0443 \u0441\u043b\u0443\u0436\u0431\u0443 \u042d\u043b\u0432\u0438\u043d.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/inogda-bolshe-eto-menshe-kogda-umenshenie-nagruzki-privodit-k-uvelicheniyu-zaderzhki\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0418\u043d\u043e\u0433\u0434\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u2014 \u044d\u0442\u043e \u043c\u0435\u043d\u044c\u0448\u0435. \u041a\u043e\u0433\u0434\u0430 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044e \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041a\u0430\u043a \u0438 \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u043f\u043e\u0441\u0442\u043e\u0432, \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u0441\u043b\u0443\u0436\u0431\u043e\u0439, \u043d\u0430\u0437\u043e\u0432\u0451\u043c \u044d\u0442\u0443 \u0441\u043b\u0443\u0436\u0431\u0443 \u042d\u043b\u0432\u0438\u043d.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/inogda-bolshe-eto-menshe-kogda-umenshenie-nagruzki-privodit-k-uvelicheniyu-zaderzhki\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:54:17+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:54:17+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Niekedy viac znamen\u00e1 menej. Ke\u010f zn\u00ed\u017eenie za\u0165a\u017eenia vedie k zv\u00fd\u0161eniu oneskorenia | ProHoster","description":"Ako v v\u00e4\u010d\u0161ine pr\u00edspevkov, objavil sa probl\u00e9m s distribuovanou slu\u017ebou, nazvime t\u00fato slu\u017ebu Elvin.","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/inogda-bolshe-eto-menshe-kogda-umenshenie-nagruzki-privodit-k-uvelicheniyu-zaderzhki","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0418\u043d\u043e\u0433\u0434\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u2014 \u044d\u0442\u043e \u043c\u0435\u043d\u044c\u0448\u0435. \u041a\u043e\u0433\u0434\u0430 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044e \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 | ProHoster","og:description":"\u041a\u0430\u043a \u0438 \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u043f\u043e\u0441\u0442\u043e\u0432, \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u0441\u043b\u0443\u0436\u0431\u043e\u0439, \u043d\u0430\u0437\u043e\u0432\u0451\u043c \u044d\u0442\u0443 \u0441\u043b\u0443\u0436\u0431\u0443 \u042d\u043b\u0432\u0438\u043d.","og:url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/inogda-bolshe-eto-menshe-kogda-umenshenie-nagruzki-privodit-k-uvelicheniyu-zaderzhki","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:54:17+00:00","article:modified_time":"2019-10-31T18:54:17+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"33707","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 16:23:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:35:31","updated":"2026-01-21 16:23:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/33707","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=33707"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/33707\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/25389"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=33707"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=33707"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=33707"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}