{"id":86,"date":"2013-10-25T08:59:00","date_gmt":"2013-10-25T06:59:00","guid":{"rendered":"http:\/\/vm.piszki.pl\/tcpip-exhaustion-czyli-problem-w-twojej-sieci"},"modified":"2014-04-10T08:29:19","modified_gmt":"2014-04-10T06:29:19","slug":"tcpip-exhaustion-czyli-problem-w-twojej-sieci","status":"publish","type":"post","link":"https:\/\/vm.piszki.pl\/?p=86","title":{"rendered":"TCP\/IP Exhaustion, czyli problem w Twojej sieci."},"content":{"rendered":"<p align=\"justify\">Tradycyjnie, spora cz\u0119\u015b\u0107 \u015brodowisk wirtualnych jest oparta o system Microsoft Windows Server (jako podstawa dla wielu maszyn, w tym dla MsSQL i vCenter). Jest to zazwyczaj \u015brodowisko wysoce sprz\u0119gni\u0119te, dziesi\u0105tki us\u0142ug i serwer\u00f3w non stop ze sob\u0105 \u201crozmawia\u201d. Je\u015bli dojdzie do tego np. du\u017ca ilo\u015b\u0107 serwer\u00f3w www, mo\u017ce doj\u015b\u0107 do do\u015b\u0107 m\u0119cz\u0105cego zjawiska, jakim jest wyczerpywanie si\u0119 p\u00f3l dynamicznych port\u00f3w TCP\/IP na danych maszynach. Zjawisko jest bardzo trudne do wykrycia o ile nie dochodzi do nagminnego stanu przeci\u0105\u017cenia (sam system operacyjny nie informuje o problemie, za to raportuje inne \u201cproblemy\u201d b\u0119d\u0105ce ju\u017c tylko skutkiem). W naszym przypadku do\u015bwiadczali\u015bmy bardzo dziwnego zachowania serwer\u00f3w Tomcat i JBoss kt\u00f3re odpiera\u0142y dziwne fale nadprogramowego (prawid\u0142owego) ruchu. Na rozwi\u0105zanie doprowadzi\u0142y nas komunikaty kt\u00f3re serwowa\u0142 nam od jakiego\u015b czasu <a href=\"https:\/\/vm.piszki.pl\/trend-micro-deep-security\/\">Trend Micro Deep Sucurity<\/a>: TCP\/IP Port Limit i UDP Port Limit, pojawiaj\u0105ce si\u0119 okazjonalnie w trakcie komunikacji pomi\u0119dzy przypadkowymi maszynami.<\/p>\n<p><!--more--><\/p>\n<p align=\"justify\">No wi\u0119c czym jest TCP\/IP Exhaustion? Przy du\u017cej ilo\u015bci po\u0142\u0105cze\u0144 do serwera Microsoft Windows (w dowolnej wersji) mo\u017ce doj\u015b\u0107 do wyczerpania puli dost\u0119pnych dynamicznych port\u00f3w. Domy\u015blnie jest ustawiona stosunkowo ma\u0142a pula i du\u017cy czas oczekiwania na zwolnienie portu. \u0141atwo to sprawdzi\u0107 poleceniem netstat \u2013n, wszystkie po\u0142\u0105czenia ze statusem WAIT to w\u0142a\u015bnie te \u201czaj\u0119te\u201d porty. W systemie Windows Server 2003 i 2008R2 parametr TIME WAIT to a\u017c 240 sekund. W 2008R2 rozszerzono pul\u0119 (Ephemeral Ports) z ok 4K do 16K.<\/p>\n<p align=\"justify\">Jak i dlaczego warto si\u0119 przed tym \u201cbroni\u0107\u201d? Wyobra\u017amy sobie sytuacj\u0119 w kt\u00f3rej ko\u0144cz\u0105 si\u0119 porty na maszynie aplikacyjnej, efekt jest taki, \u017ce przez chwil\u0119 obserwujemy na maszynie \u201cprzyci\u0119cie\u201d (zero ruchu sieciowego z braku wolnych port\u00f3w) po czym po chwili przerwy nag\u0142e uderzenie skolejkowanych pakiet\u00f3w powoduj\u0105ce przeci\u0105\u017cenie i \u201cwywr\u00f3cenie\u201d aplikacji.<\/p>\n<p>Rozwi\u0105zanie jest proste, skracamy czas oczekiwania na zwolnienie portu:<\/p>\n<p>W kluczu HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters dodajemy DWORD:<\/p>\n<p>TcpTimedWaitDelay z parametrem 30 (decimal).<\/p>\n<p>MaxUserPort z parametrem 65535 (decimal)<\/p>\n<p align=\"justify\">Tylko jedna uwaga do zakresu port\u00f3w, koniecznie ale to koniecznie trzeba sprawdzi\u0107, czy zainstalowane na maszynie oprogramowanie (np. vCenter, Trend Micro etc etc) nie u\u017cywa statycznie kt\u00f3rego\u015b portu z wprowadzanego zakresu. Bez tego lekarstwo mo\u017ce by\u0107 gorsze ni\u017c choroba <img decoding=\"async\" class=\"wlEmoticon wlEmoticon-smile\" style=\"border-style: none;\" alt=\"U\u015bmiech\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/03\/wlEmoticon-smile16.png\" \/><\/p>\n<p align=\"justify\">Edit: Te same ustawienia <a href=\"http:\/\/social.technet.microsoft.com\/Forums\/en-US\/69449ce9-ea58-48ec-b675-c55480ba4bbb\/windows-server-2012-and-tcpip-maxuserport?forum=winserverPN\">dotycz\u0105<\/a>\u00a0te\u017c systemu Microsoft Server 2012R2<\/p>\n<div style='text-align:left' class='yasr-auto-insert-visitor'><\/div>","protected":false},"excerpt":{"rendered":"<p>Tradycyjnie, spora cz\u0119\u015b\u0107 \u015brodowisk wirtualnych jest oparta o system Microsoft Windows Server (jako podstawa dla wielu maszyn, w tym dla MsSQL i vCenter). Jest to zazwyczaj \u015brodowisko wysoce sprz\u0119gni\u0119te, dziesi\u0105tki us\u0142ug i serwer\u00f3w non stop ze sob\u0105 \u201crozmawia\u201d. Je\u015bli dojdzie &hellip; <a href=\"https:\/\/vm.piszki.pl\/?p=86\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"yasr_overall_rating":0,"yasr_post_is_review":"","yasr_auto_insert_disabled":"","yasr_review_type":"","footnotes":""},"categories":[36],"tags":[10],"class_list":["post-86","post","type-post","status-publish","format-standard","hentry","category-analiza","tag-network"],"yasr_visitor_votes":{"stars_attributes":{"read_only":false,"span_bottom":false},"number_of_votes":0,"sum_votes":0},"_links":{"self":[{"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=\/wp\/v2\/posts\/86"}],"collection":[{"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=86"}],"version-history":[{"count":10,"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=\/wp\/v2\/posts\/86\/revisions"}],"predecessor-version":[{"id":885,"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=\/wp\/v2\/posts\/86\/revisions\/885"}],"wp:attachment":[{"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=86"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=86"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=86"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}