{"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\/hu\/blog\/administrirovanie\/inogda-bolshe-eto-menshe-kogda-umenshenie-nagruzki-privodit-k-uvelicheniyu-zaderzhki","title":{"rendered":"N\u00e9ha a t\u00f6bb kevesebb. Amikor a terhel\u00e9s cs\u00f6kkent\u00e9se k\u00e9sleltet\u00e9s n\u00f6veked\u00e9s\u00e9hez vezet","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Mint a <noindex><a rel=\"nofollow\" href=\"https:\/\/mahdytech.com\/2019\/01\/13\/curious-case-999-latency-hike\/\">t\u00f6bb posztban<\/a><\/noindex>, felmer\u00fclt egy probl\u00e9ma az Elvin nev\u0171 elosztott szolg\u00e1ltat\u00e1ssal. Ez\u00fattal nem \u00e9n fedeztem fel a probl\u00e9m\u00e1t, a kliensoldali sr\u00e1cok \u00e9rtes\u00edtettek.<\/p>\n<p>Egyszer fel\u00e9bredtem egy el\u00e9gedetlen lev\u00e9lre, amely az Elvin tapasztalt nagy k\u00e9sleltet\u00e9sek miatt k\u00e9sz\u00fclt, amelyet a k\u00f6zelj\u00f6v\u0151ben szeretn\u00e9nk ind\u00edtani. K\u00fcl\u00f6n\u00f6sen, a kliens a 99. percentilis k\u00e9sleltet\u00e9s 50 ms k\u00f6r\u00fcli \u00e9rt\u00e9k\u00e9vel szembes\u00fclt, ami j\u00f3val meghaladta a k\u00e9sleltet\u00e9si keret\u00fcnket. Ez meglep\u0151 volt, mivel alaposan teszteltem a szolg\u00e1ltat\u00e1st, k\u00fcl\u00f6n\u00f6s figyelmet ford\u00edtva a k\u00e9sleltet\u00e9sekre, mivel ez gyakori panaszok t\u00e1rgya.<\/p>\n<p>Miel\u0151tt \u00e1tkonfigur\u00e1ln\u00e1m az Elvint a tesztel\u00e9shez, sok k\u00eds\u00e9rletet v\u00e9geztem 40 ezer k\u00e9r\u00e9s m\u00e1sodpercenk\u00e9nt (QPS) terhel\u00e9ssel, mindegyik 10 ms alatti k\u00e9sleltet\u00e9st mutatott. K\u00e9szen \u00e1lltam arra, hogy kijelentsem, nem \u00e9rtek egyet az eredm\u00e9nyeikkel. De \u00fajra megn\u00e9zve a levelet, \u00e9szrevettem valami \u00fajat: pontosan nem teszteltem azokat a k\u00f6r\u00fclm\u00e9nyeket, amiket eml\u00edtettek, az \u0151 QPS-\u00fck messze alacsonyabb volt, mint az eny\u00e9m. \u00c9n 40k QPS-en teszteltem, \u0151k pedig csak 1k-n. \u00dajabb k\u00eds\u00e9rletet ind\u00edtottam, ez\u00fattal alacsonyabb QPS-el, csak hogy megfeleljek nekik.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nMivel err\u0151l \u00edrok a blogomban - val\u00f3sz\u00edn\u0171leg m\u00e1r r\u00e1j\u00f6tt\u00e9l: az adataik helyesnek bizonyultak. \u00dajra \u00e9s \u00fajra ellen\u0151riztem a virtu\u00e1lis \u00fcgyfelemet, mindig ugyanazt az eredm\u00e9nyt kaptam: az alacsony k\u00e9r\u00e9ssz\u00e1m nemcsak a k\u00e9sleltet\u00e9st n\u00f6veli, hanem a 10 ms-ot meghalad\u00f3 k\u00e9sleltet\u00e9ssel rendelkez\u0151 k\u00e9r\u00e9sek sz\u00e1m\u00e1t is. M\u00e1s sz\u00f3val, m\u00edg 40k QPS eset\u00e9n k\u00f6r\u00fclbel\u00fcl 50 k\u00e9relem m\u00e1sodpercenk\u00e9nt meghaladta az 50 ms-ot, addig 1k QPS eset\u00e9n m\u00e1sodpercenk\u00e9nt 100 k\u00e9relem volt, amely 50 ms feletti k\u00e9sleltet\u00e9ssel rendelkezett. Paradoxon!<\/p>\n<p><img decoding=\"async\" alt=\"N\u00e9ha a t\u00f6bb kevesebb. Amikor a terhel\u00e9s cs\u00f6kkent\u00e9se k\u00e9sleltet\u00e9s n\u00f6veked\u00e9s\u00e9hez vezet\" src=\"\/wp-content\/uploads\/2019\/05\/d181859376e2befad9ed631e8f8ff168.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h1>Sz\u0171k\u00edts\u00fck le a keres\u00e9st<\/h1>\n<p>\nA k\u00e9sleltet\u00e9si probl\u00e9m\u00e1val szemben\u00e9zve egy elosztott rendszerben, amely sz\u00e1mos komponensb\u0151l \u00e1ll, el\u0151sz\u00f6r is \u00f6ssze kell \u00e1ll\u00edtani egy r\u00f6vid gyan\u00fas\u00edtottak list\u00e1j\u00e1t. N\u00e9zz\u00fck meg Elvin architekt\u00far\u00e1j\u00e1t kicsit m\u00e9lyebben:<\/p>\n<p><img decoding=\"async\" alt=\"N\u00e9ha a t\u00f6bb kevesebb. Amikor a terhel\u00e9s cs\u00f6kkent\u00e9se k\u00e9sleltet\u00e9s n\u00f6veked\u00e9s\u00e9hez vezet\" src=\"\/wp-content\/uploads\/2019\/05\/9b10198772b0e53890eb94d5e5c9afd0.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJ\u00f3 kiindul\u00e1si pont a v\u00e9grehajtott be-\/kimeneti tranzakci\u00f3k list\u00e1ja (h\u00e1l\u00f3zati h\u00edv\u00e1sok\/disk keres\u00e9s stb.). Pr\u00f3b\u00e1ljuk kider\u00edteni, hol van a k\u00e9sleltet\u00e9s. Az egy\u00e9rtelm\u0171 kliens-szint\u0171 be-\/kimenet mellett Elvin egy plusz l\u00e9p\u00e9st is tesz: hozz\u00e1f\u00e9r a t\u00e1rol\u00e1si adatokhoz. Azonban ez a t\u00e1rol\u00e1s egy klaszterben m\u0171k\u00f6dik Elvinnel, \u00edgy ott a k\u00e9sleltet\u00e9snek alacsonyabbnak kell lennie, mint a kliens eset\u00e9ben. Teh\u00e1t a gyan\u00fas\u00edtottak list\u00e1ja:<\/p>\n<ol>\n<li>H\u00e1l\u00f3zati h\u00edv\u00e1s a kliens \u00e9s Elvin k\u00f6z\u00f6tt.\n<\/li>\n<li>Elvin h\u00e1l\u00f3zati h\u00edv\u00e1sa az adatb\u00e1zishoz.\n<\/li>\n<li>Keres\u00e9s az adatb\u00e1zison.\n<\/li>\n<li>H\u00e1l\u00f3zati h\u00edv\u00e1s az adatb\u00e1zisb\u00f3l Elvinhez.\n<\/li>\n<li>H\u00e1l\u00f3zati h\u00edv\u00e1s Elvint\u0151l az \u00fcgyf\u00e9lhez.<\/li>\n<\/ol>\n<p>\nPr\u00f3b\u00e1ljunk meg n\u00e9h\u00e1ny elemet kih\u00fazni.<\/p>\n<h3>Az adatb\u00e1zis nem j\u00e1tszik szerepet.<\/h3>\n<p>\nEl\u0151sz\u00f6r is \u00e1talak\u00edtottam Elvint ping-ping szerverr\u00e9, amely nem dolgozza fel a k\u00e9r\u00e9seket. A k\u00e9r\u00e9s meg\u00e9rkez\u00e9sekor \u00fcres v\u00e1laszt ad. Ha a k\u00e9sleltet\u00e9s cs\u00f6kken, akkor a hiba Elvin vagy az adatb\u00e1zis megval\u00f3s\u00edt\u00e1s\u00e1ban van - semmi szokatlan. Az els\u0151 k\u00eds\u00e9rlet sor\u00e1n ezt az \u00e1br\u00e1t kapjuk:<\/p>\n<p><img decoding=\"async\" alt=\"N\u00e9ha a t\u00f6bb kevesebb. Amikor a terhel\u00e9s cs\u00f6kkent\u00e9se k\u00e9sleltet\u00e9s n\u00f6veked\u00e9s\u00e9hez vezet\" src=\"\/wp-content\/uploads\/2019\/05\/bd8fed2b2cc0d07946d1c4a868ae36b3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAhogy l\u00e1tjuk, a ping-ping szerver haszn\u00e1latakor nincs \u00e9szlelhet\u0151 javul\u00e1s. Ez azt jelenti, hogy az adatb\u00e1zis nem n\u00f6veli a k\u00e9sleltet\u00e9st, \u00e9s a gyan\u00fas\u00edtottak k\u00f6re a fel\u00e9re cs\u00f6kken:<\/p>\n<ol>\n<li>H\u00e1l\u00f3zati h\u00edv\u00e1s a kliens \u00e9s Elvin k\u00f6z\u00f6tt.\n<\/li>\n<li>H\u00e1l\u00f3zati h\u00edv\u00e1s Elvint\u0151l az \u00fcgyf\u00e9lhez.<\/li>\n<\/ol>\n<p>\nRemek! A lista gyorsan cs\u00f6kken. Azt hittem, hogy szinte r\u00e1j\u00f6ttem az ok\u00e1ra.<\/p>\n<h3>gRPC<\/h3>\n<p>\nItt az ideje bemutatni egy \u00faj szerepl\u0151t: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/grpc\/grpc\">gRPC<\/a><\/noindex>. Ez egy ny\u00edlt forr\u00e1sk\u00f3d\u00fa k\u00f6nyvt\u00e1r a Google-t\u00f3l az intra-processz kommunik\u00e1ci\u00f3hoz. <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Remote_procedure_call\">RPC<\/a><\/noindex>. B\u00e1r <code>gRPC<\/code> j\u00f3l optimaliz\u00e1lt \u00e9s sz\u00e9les k\u00f6rben haszn\u00e1lt, \u00e9n el\u0151sz\u00f6r haszn\u00e1lom egy ilyen m\u00e9ret\u0171 rendszeren, \u00e9s azt v\u00e1rtam, hogy a megval\u00f3s\u00edt\u00e1som nem lesz optim\u00e1lis - finoman sz\u00f3lva.<\/p>\n<p>A <code>gRPC<\/code> stack megl\u00e9te \u00faj k\u00e9rd\u00e9st vet fel: tal\u00e1n a megval\u00f3s\u00edt\u00e1som vagy maga <code>gRPC<\/code> okozza a k\u00e9sleltet\u00e9si probl\u00e9m\u00e1t? \u00daj gyan\u00fas\u00edtottat adunk a list\u00e1hoz:<\/p>\n<ol>\n<li>Az \u00fcgyf\u00e9l a k\u00f6nyvt\u00e1rat h\u00edvja. <code>gRPC<\/code>\n<\/li>\n<li>K\u00f6nyvt\u00e1r <code>gRPC<\/code> az \u00fcgyf\u00e9ln\u00e9l v\u00e9grehajtja a k\u00f6nyvt\u00e1r h\u00e1l\u00f3zati h\u00edv\u00e1s\u00e1t <code>gRPC<\/code> a szerveren\n<\/li>\n<li>K\u00f6nyvt\u00e1r <code>gRPC<\/code> Elvinhez fordul (m\u0171velet nincs a ping-pong szerver eset\u00e9n).<\/li>\n<\/ol>\n<p>\nHogy meg\u00e9rtsd, hogyan n\u00e9z ki a k\u00f3d, az \u00e9n Elvin\/\u00fcgyf\u00e9l megval\u00f3s\u00edt\u00e1som nem nagyon k\u00fcl\u00f6nb\u00f6zik a kliens-szerver <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/grpc\/grpc\/tree\/v1.19.0\/examples\/cpp\/helloworld\">aszimmetrikus p\u00e9ld\u00e1it\u00f3l.<\/a><\/noindex>.<\/p>\n<blockquote><p><i>Megjegyz\u00e9s: A fent eml\u00edtett lista kicsit leegyszer\u0171s\u00edtett, mivel <code>gRPC<\/code> lehet\u0151v\u00e9 teszi a testreszabott (sablon?) p\u00e1rhuzamos modell haszn\u00e1lat\u00e1t, amelyben \u00f6sszefon\u00f3dik a v\u00e9grehajt\u00e1si stack <code>gRPC<\/code> \u00e9s a felhaszn\u00e1l\u00f3i megval\u00f3s\u00edt\u00e1s. Az egyszer\u0171s\u00e9g kedv\u00e9\u00e9rt ragaszkodjunk ehhez a modellhez.<\/i><\/p><\/blockquote>\n<p><\/p>\n<h3>A profilioz\u00e1s mindent megold.<\/h3>\n<p>\nAz adatb\u00e1zisok kih\u00faz\u00e1sa ut\u00e1n azt hittem, hogy majdnem k\u00e9sz vagyok: \"Most m\u00e1r k\u00f6nny\u0171! Alkalmazzunk profilt \u00e9s n\u00e9zz\u00fck meg, hol ad\u00f3dik a k\u00e9sleltet\u00e9s.\" \u00c9n <noindex><a rel=\"nofollow\" href=\"https:\/\/mahdytech.com\/2019\/01\/13\/curious-case-999-latency-hike\/\">nagy h\u00edve vagyok a pontos profilioz\u00e1snak<\/a><\/noindex>, mert a CPU nagyon gyors \u00e9s \u00e1ltal\u00e1ban nem szoktak a sz\u0171k keresztmetszetet jelenteni. A legt\u00f6bb k\u00e9sleltet\u00e9s akkor jelentkezik, amikor a processzornak le kell \u00e1ll\u00edtania a feldolgoz\u00e1st, hogy m\u00e1st csin\u00e1ljon. A pontos CPU profilioz\u00e1s \u00e9ppen ez\u00e9rt k\u00e9sz\u00fclt: pontosan r\u00f6gz\u00edti az \u00f6sszes. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.tutorialspoint.com\/what-is-context-switching-in-operating-system\">kontektswitch-ek<\/a><\/noindex> \u00e9s jelzi, hol jelentkeznek a k\u00e9s\u00e9sek.<\/p>\n<p>N\u00e9gy profilt vettem: egy magas QPS-hez (kicsi k\u00e9sleltet\u00e9s) \u00e9s egy ping-pong szerverhez alacsony QPS-sel (nagy k\u00e9sleltet\u00e9s), mind a kliens, mind a szerver oldal\u00e1r\u00f3l. \u00c9s csak a biztons\u00e1g kedv\u00e9\u00e9rt hoztam egy processzorprofil mint\u00e1t is. A profilok \u00f6sszehasonl\u00edt\u00e1sakor \u00e1ltal\u00e1ban az anom\u00e1lis h\u00edv\u00e1si verem keresem. P\u00e9ld\u00e1ul a k\u00e9sleltetett oldalon sokkal t\u00f6bb kontextusv\u00e1lt\u00e1s t\u00f6rt\u00e9nik (10-szerese vagy ann\u00e1l is t\u00f6bb). De az \u00e9n esetemben a kontextusv\u00e1lt\u00e1sok sz\u00e1ma gyakorlatilag megegyezett. A r\u00e9m\u00fcletemre, ott nem volt semmi l\u00e9nyeges.<\/p>\n<h1>Tov\u00e1bbi hibakeres\u00e9s<\/h1>\n<p>\nK\u00e9ts\u00e9gbe voltam esve. Nem tudtam, milyen m\u00e1s eszk\u00f6z\u00f6ket haszn\u00e1lhatn\u00e9k, \u00e9s a k\u00f6vetkez\u0151 tervem l\u00e9nyeg\u00e9ben a k\u00eds\u00e9rleteim megism\u00e9tl\u00e9se k\u00fcl\u00f6nb\u00f6z\u0151 vari\u00e1ci\u00f3kkal volt, nem pedig a probl\u00e9ma pontos diagnosztiz\u00e1l\u00e1sa.<\/p>\n<h3>Mi lenne, ha<\/h3>\n<p>\nAz elej\u00e9t\u0151l kezdve aggasztott a konkr\u00e9t 50 ms-os k\u00e9sleltet\u00e9si id\u0151. Ez egy nagyon nagy id\u0151. \u00dagy d\u00f6nt\u00f6ttem, hogy ki fogok v\u00e1gni darabokat a k\u00f3db\u00f3l, am\u00edg meg nem tudom \u00e1llap\u00edtani, hogy pontosan melyik r\u00e9sz okozza a hib\u00e1t. Ezut\u00e1n k\u00f6vetkezett a k\u00eds\u00e9rlet, amely m\u0171k\u00f6d\u00f6tt.<\/p>\n<p>Mint \u00e1ltal\u00e1ban, most ut\u00f3lag \u00fagy t\u0171nik, hogy minden nyilv\u00e1nval\u00f3 volt. A klienst egy g\u00e9pre helyeztem Elvinnel - \u00e9s k\u00fcldtem egy k\u00e9r\u00e9st a <code>localhost<\/code>-nak. \u00c9s a k\u00e9sleltet\u00e9s n\u00f6veked\u00e9se elt\u0171nt!<\/p>\n<p><img decoding=\"async\" alt=\"N\u00e9ha a t\u00f6bb kevesebb. Amikor a terhel\u00e9s cs\u00f6kkent\u00e9se k\u00e9sleltet\u00e9s n\u00f6veked\u00e9s\u00e9hez vezet\" src=\"\/wp-content\/uploads\/2019\/05\/2d8466625a264abe2110a65592ee0da8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nValami nem stimmelt a h\u00e1l\u00f3zattal.<\/p>\n<h3>H\u00e1l\u00f3zati m\u00e9rn\u00f6ki k\u00e9szs\u00e9gek elsaj\u00e1t\u00edt\u00e1sa<\/h3>\n<p>\nBe kell vallanom: a h\u00e1l\u00f3zati technol\u00f3gi\u00e1k ismereteim borzalmasak, k\u00fcl\u00f6n\u00f6sen figyelembe v\u00e9ve, hogy naponta dolgozom vel\u00fck. De a h\u00e1l\u00f3zat volt a f\u0151 gyan\u00fas\u00edtott, \u00e9s meg kellett tanulnom, hogyan debugg\u00e1ljam.<\/p>\n<p>Szerencs\u00e9re az internet kedveli azokat, akik tanulni akarnak. A ping \u00e9s a tracert kombin\u00e1ci\u00f3ja el\u00e9g j\u00f3 kezd\u00e9snek t\u0171nt a h\u00e1l\u00f3zati sz\u00e1ll\u00edt\u00e1si probl\u00e9m\u00e1k hibakeres\u00e9s\u00e9hez.<\/p>\n<p>El\u0151sz\u00f6r is, futtattam a <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/en-us\/sysinternals\/downloads\/psping\">PsPing<\/a><\/noindex> -t Elvin TCP-portj\u00e1n. Az alap\u00e9rtelmezett param\u00e9tereket haszn\u00e1ltam - semmi k\u00fcl\u00f6n\u00f6s. T\u00f6bb mint ezer pingb\u0151l egy sem haladta meg a 10 ms-t, kiv\u00e9ve az els\u0151t a bemeleg\u00edt\u00e9s \u00e9rdek\u00e9ben. Ez ellentmond a 99. percentilisben megfigyelt 50 ms-os k\u00e9sleltet\u00e9s n\u00f6veked\u00e9s\u00e9nek: ott minden 100 k\u00e9rd\u00e9s\u00e9rt \u00fagy kellett volna l\u00e1tnunk, hogy k\u00f6r\u00fclbel\u00fcl egy k\u00e9relem 50 ms k\u00e9s\u00e9ssel rendelkezik.<\/p>\n<p>Ezut\u00e1n kipr\u00f3b\u00e1ltam a <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>-et: tal\u00e1n a probl\u00e9ma az Elvin \u00e9s a kliens k\u00f6z\u00f6tti \u00fatvonal egyik csom\u00f3pontj\u00e1ban van. De a tracer is \u00fcres k\u00e9zzel t\u00e9rt vissza.<\/p>\n<p>\u00cdgy teh\u00e1t a k\u00e9sleked\u00e9s oka nem az \u00e9n k\u00f3dom, nem a gRPC implement\u00e1ci\u00f3ja \u00e9s nem a h\u00e1l\u00f3zat volt. M\u00e1r kezdtem agg\u00f3dni, hogy sosem fogom ezt meg\u00e9rteni.<\/p>\n<h3>Most pedig, melyik oper\u00e1ci\u00f3s rendszeren vagyunk<\/h3>\n<p>\n<code>gRPC<\/code> sz\u00e9les k\u00f6rben haszn\u00e1lj\u00e1k Linuxon, de Windows alatt ez k\u00fcl\u00f6nlegess\u00e9g. Eld\u00f6nt\u00f6ttem, hogy v\u00e9grehajtok egy k\u00eds\u00e9rletet, ami m\u0171k\u00f6d\u00f6tt: l\u00e9trehoztam egy Linux virtu\u00e1lis g\u00e9pet, leford\u00edtottam Alvinot Linuxra \u00e9s telep\u00edtettem.<\/p>\n<p><img decoding=\"async\" alt=\"N\u00e9ha a t\u00f6bb kevesebb. Amikor a terhel\u00e9s cs\u00f6kkent\u00e9se k\u00e9sleltet\u00e9s n\u00f6veked\u00e9s\u00e9hez vezet\" src=\"\/wp-content\/uploads\/2019\/05\/ee74c16de7e1ac6c286e401660e94ca1.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00c9s ez lett az eredm\u00e9ny: a Linux ping-pong szerver\u00e9n nem voltak olyan k\u00e9sleked\u00e9sek, mint a hasonl\u00f3 Windows csom\u00f3ponton, b\u00e1r az adatforr\u00e1s nem v\u00e1ltozott. Kider\u00fclt, hogy a probl\u00e9ma a Windowsra sz\u00f3l\u00f3 gRPC implement\u00e1ci\u00f3j\u00e1ban van.<\/p>\n<h3>Nagle algoritmus<\/h3>\n<p>\nMindig azt hittem, hogy hi\u00e1nyzik egy flag <code>gRPC<\/code>. Most m\u00e1r \u00e9rtem, hogy val\u00f3j\u00e1ban ez a <code>gRPC<\/code> Windows flag hi\u00e1nyzik. Megtal\u00e1ltam egy bels\u0151 RPC k\u00f6nyvt\u00e1rat, amelyr\u0151l biztos voltam, hogy j\u00f3l m\u0171k\u00f6dik az \u00f6sszes telep\u00edtett flaghez <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/desktop\/winsock\/windows-sockets-start-page-2\">Winsock<\/a><\/noindex>. Azt\u00e1n hozz\u00e1adtam ezeket a flagokat a gRPC-hez \u00e9s telep\u00edtettem Alvinot Windowsra, a jav\u00edtott ping-pong szerveren Windows alatt!<\/p>\n<p><img decoding=\"async\" alt=\"N\u00e9ha a t\u00f6bb kevesebb. Amikor a terhel\u00e9s cs\u00f6kkent\u00e9se k\u00e9sleltet\u00e9s n\u00f6veked\u00e9s\u00e9hez vezet\" src=\"\/wp-content\/uploads\/2019\/05\/ce3a4066c78f9f6a63fd68578224d6e5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Majdnem<\/i> k\u00e9sz: elkezdtem egyes\u00e9vel elt\u00e1vol\u00edtani a hozz\u00e1adott flagokat, am\u00edg vissza nem t\u00e9rt a regresszi\u00f3, \u00edgy pontosan meghat\u00e1rozhattam az ok\u00e1t. Ez a h\u00edrhedt <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/desktop\/api\/winsock\/nf-winsock-setsockopt\">TCP_NODELAY<\/a><\/noindex>, Nagle algoritmus kapcsol\u00f3ja.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Nagle%27s_algorithm\">Nagle algoritmus<\/a><\/noindex> Megpr\u00f3b\u00e1lja cs\u00f6kkenteni a h\u00e1l\u00f3zaton k\u00fcld\u00f6tt csomagok sz\u00e1m\u00e1t az \u00fczenetek k\u00fcld\u00e9s\u00e9nek k\u00e9sleltet\u00e9s\u00e9vel, am\u00edg a csomag m\u00e9rete el nem \u00e9ri a meghat\u00e1rozott b\u00e1jtok sz\u00e1m\u00e1t. B\u00e1r ez kellemes lehet az \u00e1tlagos felhaszn\u00e1l\u00f3nak, de rombol\u00f3 lehet az \u00e9les szerverek sz\u00e1m\u00e1ra, mivel az OS k\u00e9sleltethet bizonyos \u00fczeneteket, ami alacsony QPS mellett k\u00e9sleked\u00e9seket okoz. Az <code>gRPC<\/code> Linux implement\u00e1ci\u00f3ban volt be\u00e1ll\u00edtva ez a flag a TCP socketekhez, de nem Windows alatt. \u00c9n ezt <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/grpc\/grpc\/commit\/1dce1009e67ea4b5934a61b1bcf8a217bd12cc76\">jav\u00edtottam.<\/a><\/noindex>.<\/p>\n<h1>Z\u00e1r\u00e1s<\/h1>\n<p>\nAz alacsony QPS melletti nagy k\u00e9sleked\u00e9st az OS optimaliz\u00e1ci\u00f3ja okozta. Visszatekintve, a profiloz\u00e1s nem \u00e9szlelte a k\u00e9sleked\u00e9st, mert kernel m\u00f3dban t\u00f6rt\u00e9nt, nem pedig <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.codinghorror.com\/understanding-user-and-kernel-mode\/\">felhaszn\u00e1l\u00f3i m\u00f3dban.<\/a><\/noindex>Nem tudom, hogy az ETW felv\u00e9telek seg\u00edts\u00e9g\u00e9vel l\u00e1that\u00f3-e a Nagle algoritmus, de \u00e9rdekes lenne.<\/p>\n<p>Ami a localhost k\u00eds\u00e9rletet illeti, az val\u00f3sz\u00edn\u0171leg nem \u00e9rintette a t\u00e9nyleges h\u00e1l\u00f3zati k\u00f3dot, \u00e9s a Nagle algoritmus nem indult el, \u00edgy a k\u00e9sleltet\u00e9si probl\u00e9m\u00e1k elt\u0171ntek, amikor a kliens localhoston kereszt\u00fcl h\u00edvta meg Alvinot.<\/p>\n<p>Legk\u00f6zelebb, amikor a m\u00e1sodpercenk\u00e9nti k\u00e9rd\u00e9sek sz\u00e1m\u00e1nak cs\u00f6kken\u00e9se mellett n\u00f6vekv\u0151 k\u00e9sleked\u00e9st tapasztalsz, a Nagle algoritmusnak a gyan\u00fas\u00edtottak list\u00e1j\u00e1n kell lennie!<br \/>\n<br \/>Forr\u00e1s: <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\/hu\/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=\"hu_HU\" \/>\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\/hu\/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\udd47 N\u00e9ha a t\u00f6bblet kevesebb. Amikor a terhel\u00e9s cs\u00f6kkent\u00e9se k\u00e9sleltet\u00e9s n\u00f6veked\u00e9s\u00e9hez vezet | ProHoster","description":"Mint a legt\u00f6bb bejegyz\u00e9sn\u00e9l, itt is probl\u00e9m\u00e1t okozott egy elosztott szolg\u00e1ltat\u00e1s, nevezz\u00fck ezt a szolg\u00e1ltat\u00e1st Elvinnek.","canonical_url":"https:\/\/prohoster.info\/hu\/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":"hu_HU","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\/hu\/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\/hu\/wp-json\/wp\/v2\/posts\/33707","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=33707"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/33707\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/25389"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=33707"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=33707"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=33707"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}