{"id":33,"date":"2011-08-21T16:34:32","date_gmt":"2011-08-21T14:34:32","guid":{"rendered":"http:\/\/morc.solutions\/hu\/?p=33"},"modified":"2016-05-06T11:33:25","modified_gmt":"2016-05-06T09:33:25","slug":"apache-teljesitmeny-hangolas","status":"publish","type":"post","link":"https:\/\/morc.solutions\/hu\/apache-teljesitmeny-hangolas\/","title":{"rendered":"Apache teljes\u00edtm\u00e9ny hangol\u00e1s"},"content":{"rendered":"<p style=\"text-align: justify;\">T\u00f6rt\u00e9nt az, hogy az egyik hostolt weboldalon hirtelen megn\u0151tt a forgalom, a webszerver meg ugyan nem t\u00e9rdelt le teljesen, de nagyon belassultak az oldalak, mondhatni DOS t\u00e1mad\u00e1s \u00e9rte. Eddig is voltak id\u0151nk\u00e9nt olyanok, hogy megszalad a load a g\u00e9pen, \u00e9s egy Apache \u00fajraind\u00edt\u00e1s ut\u00e1n helyre\u00e1llt a vil\u00e1grend, de nem j\u00f6ttem r\u00e1 mi t\u00f6rt\u00e9nik. Tal\u00e1n most&#8230;<!--more--><\/p>\n<p style=\"text-align: justify;\">Az Apache Ubuntu-ban alapb\u00f3l \u00fagy van be\u00e1ll\u00edtva, hogy a KeepAlive funkci\u00f3 be van kapcsolva, \u00e9s a KeepAliveTimeout meg 5 m\u00e1sodpercen. A KeepAlive j\u00f3 dolog, f\u0151leg mikor\u00a0a g\u00e9pen b\u0151ven van er\u0151forr\u00e1s, f\u0151leg mem\u00f3ria, \u00e9s processzor, ha adatb\u00e1zisban turk\u00e1l\u00f3s a weboldal, akkor a h\u00e1tt\u00e9rt\u00e1r is gyors, \u00edgy sok sz\u00e1lat tud ind\u00edtani a rendszer.<\/p>\n<p style=\"text-align: justify;\">De ugorjunk egy kicsit vissza, hogy mi is az a KeepAlive, \u00e9s mi\u00e9rt j\u00f3. Ha a KeepAlive be van kapcsolva a szerveren, \u00e9s a b\u00f6ng\u00e9sz\u0151 is t\u00e1mogatja (szerintem ma m\u00e1r nincs olyan b\u00f6ng\u00e9sz\u0151, ami ne t\u00e1mogatn\u00e1 a HTTP1.1 miatt is), akkor amikor egy oldalt let\u00f6lt a b\u00f6ng\u00e9sz\u0151 nem ind\u00edt egy \u00faj HTTP, ezzel socket, kapcsolatot a szerver fel\u00e9, lebontva az el\u0151z\u0151t, minden egyes oldalelem let\u00f6lt\u00e9s\u00e9hez, mint a k\u00e9pek, CSS, JavaScript \u00e9s egy\u00e9b komponensek, hanem ugyanazon a socket kapcsolaton kereszt\u00fcl sz\u00e9pen lek\u00e9ri sorban az elemeket. Ez er\u0151forr\u00e1st sp\u00f3rol a szerver \u00e9s a kliens oldalon is, de itt j\u00f6n a probl\u00e9ma. A b\u00f6ng\u00e9sz\u0151 ezt a kapcsolatot fenntarthatja el\u00e9g sok\u00e1ig, az oldal let\u00f6lt\u00e9se ut\u00e1n, mert h\u00e1tha klikkel\u00fcnk m\u00e9g valahov\u00e1, \u00edgy ezzel egy Apache sz\u00e1lat sz\u00e9pen le is foglal a szerver oldalon. Ha mondjuk van 50 sz\u00e1lunk a k\u00e9r\u00e9sek kiszolg\u00e1l\u00e1s\u00e1ra elvileg 50 egyszerre b\u00f6ng\u00e9sz\u0151 felhaszn\u00e1l\u00f3 el is haszn\u00e1lja az \u00f6sszes sz\u00e1lat, az 51-nek nem jut sz\u00e1l, val\u00f3sz\u00edn\u0171leg timeout-ol a k\u00e9r\u00e9s. Azt nem tudom, hogy a b\u00f6ng\u00e9sz\u0151k alkalmaznak-e m\u00e9g p\u00e1rhuzamos sz\u00e1lakat, de r\u00e9gebben egy oldal elt\u00f6lt\u00e9s\u00e9hez t\u00f6bb kapcsolatot is ind\u00edtottak, \u00edgy el\u00e9g volt fele-, vagy negyedannyi b\u00f6ng\u00e9sz\u0151 is, hogy teljesen lefoglalja a szervert. Hogy ezt elker\u00fclj\u00fck az Apache-ban van egy timeout param\u00e9ter (KeepAliveTimeout), amivel azt mondjuk meg a szervernek, hogy mennyi id\u0151 ut\u00e1n bontsa a kapcsolatot a klienssel, ha az nem k\u00e9rt le semmit ezen id\u0151 alatt. Az Apache dokument\u00e1ci\u00f3 azt \u00edrja err\u0151l a k\u00e9t param\u00e9terr\u0151l, \u00e9s a KeepAlive-r\u00f3l mag\u00e1ban, hogy az oldalak let\u00f6lt\u00e9se gyorsabb, de nagy forgalm\u00fa szerveren teljes\u00edtm\u00e9ny probl\u00e9m\u00e1hoz vezethet. Ez t\u00f6rt\u00e9nt itt is, megrohant\u00e1k szervert, elfogytak a sz\u00e1lak, szerver elkezdett nem kiszolg\u00e1lni klienseket. Miut\u00e1n kikapcsoltam a KeepAlive-ot a helyzet javult, ekkor m\u00e1r a processzor \u00e9s a RAM lett kicsit kev\u00e9s, de ez egy m\u00e1sik probl\u00e9ma. Most a KeepAlive be van kapcsolva, de a timeout csak 1 m\u00e1sodperc. Sajnos a 2.2-es Apache-ban a timeout m\u00e9rt\u00e9kegys\u00e9ge a m\u00e1sodperc, a 2.3-asban m\u00e1r ezredm\u00e1sodpercben is meg lehet majd adni az \u00e9rt\u00e9ket. Szerintem a f\u00e9l m\u00e1sodperc az ide\u00e1lis \u00e9rt\u00e9k, de ez csak tipp, nem valamilyen m\u00e9r\u00e9s eredm\u00e9nye.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>T\u00f6rt\u00e9nt az, hogy az egyik hostolt weboldalon hirtelen megn\u0151tt a forgalom, a webszerver meg ugyan nem t\u00e9rdelt le teljesen, de nagyon belassultak az oldalak, mondhatni DOS t\u00e1mad\u00e1s \u00e9rte. Eddig is voltak id\u0151nk\u00e9nt olyanok, hogy megszalad a load a g\u00e9pen, \u00e9s &hellip; <a href=\"https:\/\/morc.solutions\/hu\/apache-teljesitmeny-hangolas\/\">Egy kattint\u00e1s ide a folytat\u00e1shoz&#8230;. <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":{"footnotes":""},"categories":[25,6],"tags":[15,16],"class_list":["post-33","post","type-post","status-publish","format-standard","hentry","category-config","category-linux","tag-apache","tag-teljesitmeny"],"_links":{"self":[{"href":"https:\/\/morc.solutions\/hu\/wp-json\/wp\/v2\/posts\/33","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/morc.solutions\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/morc.solutions\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/morc.solutions\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/morc.solutions\/hu\/wp-json\/wp\/v2\/comments?post=33"}],"version-history":[{"count":8,"href":"https:\/\/morc.solutions\/hu\/wp-json\/wp\/v2\/posts\/33\/revisions"}],"predecessor-version":[{"id":190,"href":"https:\/\/morc.solutions\/hu\/wp-json\/wp\/v2\/posts\/33\/revisions\/190"}],"wp:attachment":[{"href":"https:\/\/morc.solutions\/hu\/wp-json\/wp\/v2\/media?parent=33"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/morc.solutions\/hu\/wp-json\/wp\/v2\/categories?post=33"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/morc.solutions\/hu\/wp-json\/wp\/v2\/tags?post=33"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}