{"id":2218,"date":"2017-12-27T11:21:48","date_gmt":"2017-12-27T09:21:48","guid":{"rendered":"http:\/\/soci.hu\/blog\/?p=2218"},"modified":"2018-01-04T00:06:13","modified_gmt":"2018-01-03T22:06:13","slug":"iis-lassulas-problema-megoldas","status":"publish","type":"post","link":"https:\/\/soci.hu\/blog\/index.php\/2017\/12\/27\/iis-lassulas-problema-megoldas\/","title":{"rendered":"IIS lassul\u00e1s probl\u00e9ma &#8211; megold\u00e1s"},"content":{"rendered":"<p>Annak idej\u00e9n <a href=\"http:\/\/soci.hu\/blog\/index.php\/2017\/09\/04\/iis-lassulas-problema-help-needed\/\">\u00edrtam r\u00f3la<\/a>, hogy egy c\u00e9gn\u00e9l a web szerverek \u00e9s a m\u00f6g\u00f6tt\u00fck lev\u0151 webszervizek k\u00f6z\u00f6tti kommunik\u00e1ci\u00f3ban jelen van egy 200ms-os plusz k\u00e9sleltet\u00e9s, amire nem tal\u00e1ltunk racion\u00e1lis magyar\u00e1zatot.<br \/>\nSemmilyen eddig bev\u00e1lt eszk\u00f6z, profilerek, WinDebug, Dynatrace, logok elem\u00e9z\u00e9se nem adott magyar\u00e1zatot a  jelens\u00e9gre.<br \/>\nA Google a Nagle \u00e9s a Delayed Ack ir\u00e1ny\u00e1ba tolta a vizsg\u00e1l\u00f3d\u00e1st.<br \/>\nV\u00e9g\u00fcl wiresharkkal alaposan kielemezve a forgalmat kider\u00fclt, hogy a protokoll le\u00edr\u00e1ssal szemben csak 200ms k\u00e9sleltet\u00e9ssel k\u00fcldtek Acknowledge-et egym\u00e1snak a felek, ez adott k\u00e9sleltet\u00e9st minden h\u00edv\u00e1shoz. Miut\u00e1n a delayed ackot kikapcsoltuk mindk\u00e9t oldalon, a jelens\u00e9g megold\u00f3dott. A megold\u00e1s szerintem csak workaround, mivel a tcp protokol rfcje alapj\u00e1n nem \u00edgy kellene m\u0171k\u00f6dni a h\u00e1l\u00f3zatnak, vagy a Windows vagy a VMWare network card driver a bugos.<\/p>\n<p>R\u00f6viden, mi zajlik itt le. A kliens (web app) TCP kommunik\u00e1ci\u00f3t kezdem\u00e9nyez a webszerviz fel\u00e9. A TCP protokollban minden csomag v\u00e9tel\u00e9t meg kell er\u0151s\u00edteni a m\u00e1sik oldalnak. Eset\u00fcnkben olyan kicsi k\u00e9r\u00e9sek mentek a szerviz fel\u00e9, hogy belef\u00e9rtek egy h\u00e1l\u00f3zati csomagba. A Nagle algoritmus m\u00e1r eleve bufferelhetn\u00e9 a h\u00edv\u00f3 oldalon a csomag kik\u00fcld\u00e9s\u00e9t, de ezt \u00fagy n\u00e9z ki a gener\u00e1lt webszerviz proxy kikapcsolja a Nagl\u00e9t, \u00edgy ez nem okozott probl\u00e9m\u00e1t.<br \/>\n\u00c1tmegy a k\u00e9r\u00e9s a szervizbe. Onnan egy acknowledgenek kell visszamenni a kliensre, jelezve, hogy a szerviz megkapta a csomagot. Ezt nem akarja visszak\u00fcldeni a szerviz azon m\u00f3d, p\u00e1r b\u00e1jt miatt nem akar egy teljes csomagot visszak\u00fcldeni. A protokol alapj\u00e1n v\u00e1r arra, am\u00edg am\u00fagy is k\u00fcldene valamit vissza a kliensnek, \u00e9s annak a h\u00e1t\u00e1ra rakn\u00e1 r\u00e1 az acknowledget (piggybacking).<br \/>\nEset\u00fcnkben volt sok k\u00e9r\u00e9s, lett volna alkalma visszak\u00fcldeni gyorsan a meger\u0151s\u00edt\u00e9st, de nem tette. A protokollban van egy m\u00e1sik elem is. Ha eltelik 200ms, akkor ha eddig nem volt alkalmunk visszak\u00fcldeni a v\u00e1laszt, legal\u00e1bb 200ms m\u00falva meg kell tenni. Ez a delayed ack. Meg is tette a szerver, de ezzel minden egyes k\u00e9r\u00e9sre az ackot 200ms m\u00falva k\u00fcldte csak vissza. A kikapcsol\u00e1ssal pazarl\u00f3 m\u00f3don minden egyes csomagot azonnal visszajelez a szerver, azaz kikapcsoltuk ezt az optimaliz\u00e1l\u00e1st, de cser\u00e9be a bugos k\u00e9sleltet\u00e9s kiesett.<br \/>\n\u00d6sszegezve, a v\u00e1lasznak vissza kellett volna menni m\u00e1s k\u00e9r\u00e9sekre adott v\u00e1laszok h\u00e1t\u00e1n, de nem mentek vissza, ez\u00e9rt \u00e1ll\u00edtom, hogy ez bug, a delayed ack kikapcsol\u00e1s csak workaround, de legal\u00e1bb megoldotta a k\u00e9sleltet\u00e9st.<br \/>\nK\u00e9t k\u00e9p, ami szeml\u00e9lteti a hib\u00e1t.<br \/>\nAz els\u0151 egy csatorn\u00e1n a kommunik\u00e1ci\u00f3 l\u00e9p\u00e9seit mutatja meg (a http keepalive miatt sok k\u00e9r\u00e9s meg \u00e1t egy tcp csatorn\u00e1n). L\u00e1that\u00f3, hogy nagyon sok k\u00e9r\u00e9sre csak 200ms m\u00falva j\u00f6n meg a v\u00e1lasz.<br \/>\n<a href=\"http:\/\/soci.hu\/blog\/wp-content\/uploads\/2017\/12\/DelayedAck1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/soci.hu\/blog\/wp-content\/uploads\/2017\/12\/DelayedAck1-300x109.png\" alt=\"\" width=\"300\" height=\"109\" class=\"alignnone size-medium wp-image-2221\" srcset=\"https:\/\/soci.hu\/blog\/wp-content\/uploads\/2017\/12\/DelayedAck1-300x109.png 300w, https:\/\/soci.hu\/blog\/wp-content\/uploads\/2017\/12\/DelayedAck1-600x218.png 600w, https:\/\/soci.hu\/blog\/wp-content\/uploads\/2017\/12\/DelayedAck1-768x279.png 768w, https:\/\/soci.hu\/blog\/wp-content\/uploads\/2017\/12\/DelayedAck1-1024x372.png 1024w, https:\/\/soci.hu\/blog\/wp-content\/uploads\/2017\/12\/DelayedAck1.png 1848w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>A m\u00e1sodik k\u00e9pen sok k\u00e9r\u00e9s ackj\u00e1nak maximuma l\u00e1that\u00f3. J\u00f3l megfigyelhet\u0151 a &#8220;f\u00e9k&#8221; hat\u00e1sa.<br \/>\n<a href=\"http:\/\/soci.hu\/blog\/wp-content\/uploads\/2017\/12\/DelayedAckMax.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/soci.hu\/blog\/wp-content\/uploads\/2017\/12\/DelayedAckMax-300x103.png\" alt=\"\" width=\"300\" height=\"103\" class=\"alignnone size-medium wp-image-2222\" srcset=\"https:\/\/soci.hu\/blog\/wp-content\/uploads\/2017\/12\/DelayedAckMax-300x103.png 300w, https:\/\/soci.hu\/blog\/wp-content\/uploads\/2017\/12\/DelayedAckMax-600x205.png 600w, https:\/\/soci.hu\/blog\/wp-content\/uploads\/2017\/12\/DelayedAckMax-768x263.png 768w, https:\/\/soci.hu\/blog\/wp-content\/uploads\/2017\/12\/DelayedAckMax-1024x351.png 1024w, https:\/\/soci.hu\/blog\/wp-content\/uploads\/2017\/12\/DelayedAckMax.png 1963w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Sajnos nincs k\u00e9zn\u00e9l k\u00e9pem, de a delayed ack kikapcsol\u00e1sa ut\u00e1n lemegy p\u00e1r sz\u00e1z mikro!secre a v\u00e1lasz, mivel ilyenkor buzg\u00f3 m\u00f3don azonnal megy vissza az ack.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Annak idej\u00e9n \u00edrtam r\u00f3la, hogy egy c\u00e9gn\u00e9l a web szerverek \u00e9s a m\u00f6g\u00f6tt\u00fck lev\u0151 webszervizek k\u00f6z\u00f6tti kommunik\u00e1ci\u00f3ban jelen van egy 200ms-os plusz&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[29,70,4],"tags":[],"class_list":["post-2218","post","type-post","status-publish","format-standard","hentry","category-iis","category-optimalizalas","category-szakmai-elet"],"_links":{"self":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts\/2218","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=2218"}],"version-history":[{"count":4,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts\/2218\/revisions"}],"predecessor-version":[{"id":2228,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts\/2218\/revisions\/2228"}],"wp:attachment":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=2218"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=2218"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=2218"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}