Sziasztok,
Kellene egy kis segítség mert már nem sok ötletem maradt, hogy megoldást találjak.
Adott egy webszerver , ami hónapok óta gond nélkül megy, de kb 1 hete egyszer csak elkezdte felzabalni a memorát, 8GB mem és 8GB swap.
Mind ezt random indőközönként teszi szerver terheléstől függetlenül. Az apache elött figyel egy nginx proxy.
Config ide vágó része:
StartServers 5
ServerLimit 24
MaxClients 600
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 1000
Kb 5 perce indítottam ujra az apache-ot és már 6GB felett van a memoria kihasználtsága, ha elfogy a mem áttér a swap-ra majd szépen elszáll a load és a szerver is....
total used free shared buffers cached
Mem: 8300200 7903268 396932 0 21928 1507628
-/+ buffers/cache: 6373712 1926488
Swap: 7815544 449196 7366348
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
22938 www-data 20 0 916m 311m 2268 S 0 3.8 0:07.50 apache2
25206 www-data 20 0 694m 281m 2272 S 0 3.5 0:05.75 apache2
22658 www-data 20 0 792m 275m 2304 S 0 3.4 0:05.74 apache2
19603 www-data 20 0 880m 274m 2272 S 0 3.4 0:05.47 apache2
29893 www-data 20 0 783m 274m 2296 S 3 3.4 0:06.85 apache2
17800 www-data 20 0 741m 266m 2264 S 0 3.3 0:04.56 apache2
15619 www-data 20 0 750m 253m 2268 S 0 3.1 0:07.56 apache2
19054 www-data 20 0 704m 251m 2304 S 0 3.1 0:05.87 apache2
9960 www-data 20 0 853m 245m 2296 S 0 3.0 0:05.69 apache2
7910 www-data 20 0 700m 243m 2264 S 0 3.0 0:05.09 apache2
18216 www-data 20 0 582m 229m 2268 S 0 2.8 0:04.53 apache2
27546 www-data 20 0 614m 224m 2772 S 0 2.8 0:05.75 apache2
20238 www-data 20 0 757m 224m 2268 S 0 2.8 0:05.21 apache2
21655 www-data 20 0 746m 223m 2268 S 0 2.8 0:05.08 apache2
25368 www-data 20 0 777m 222m 2308 S 0 2.7 0:05.08 apache2
13971 www-data 20 0 655m 221m 2268 S 0 2.7 0:06.50 apache2
22588 www-data 20 0 575m 220m 2264 S 0 2.7 0:05.60 apache2
2590 www-data 20 0 630m 216m 3004 S 0 2.7 0:04.87 apache2
......
Van valakinek ötlete miért eszik hírtelen ennyi memoriát?
A szerveren sok weblap van, elképzelhető, hogy valaki írt egy rossz kódot....
Hogy tudnám megnézni ki tömi ki a apache processeket, próbálkoztam strace-al, pmap-al , logok böngészésével de semmi kézzelfogható..
Megnéztem a legfirssebb bug reportokat , nem jött e ki mostanában egy bugreport ami magyarázatot adna erre de nem találtam.
Előre is köszi minden hozzászólást.
UI: Van több másik szerver is hasonló beállításokkal, és probléma nélkül szépen mennek.
üdv
- 2088 megtekintés
Hozzászólások
egy netstat -tn lehet, jól jönne ahhoz, hogy lássuk, van-e sok hálózati kapcsolatod egyszerre.
meg iptraffal/tcpdumppal megnézhetnéd, csinál-e valamit az a sok processz vagy csak megkergült.
- A hozzászóláshoz be kell jelentkezni
Szia,
Kapcsolatokban nem szenvedek hiányt az van bőven.
netstat -tn | grep ESTABLISHED | wc -l
370
netstat -tn | grep TIME_WAIT | wc -l
4395
Iptraffal figyelve is folyamatosan volt mozgás.
Bár mikor stracel megnéztem ezeket a folyamatokat volt ami csak állt nem csinált semmit, de volt amelyik pörgött rendesen.
Most megint elhalt szerencsétlen... ki kellett killelnem az összes apache folyamatot , mert 170-nél járt a load, és a memoria tele volt a swap félig...
Köszi a helpet, most kicsit tehetetlennek érzem magam mert nem tudom mi a hiba....
- A hozzászóláshoz be kell jelentkezni
... | grep -c TIME_WAIT :)
t
- A hozzászóláshoz be kell jelentkezni
igaz. :)
- A hozzászóláshoz be kell jelentkezni
Mennyire van állítva a KeepAliveTimeout? Ha magas, vedd kisebbre.
Kapcsold ki a KeepAlive-ot próbából.
- A hozzászóláshoz be kell jelentkezni
Szia,
Timeout 300
KeepAlive On
MaxKeepAliveRequests 1000
KeepAliveTimeout 15
Szerinted 15 sec magas?
üdv
- A hozzászóláshoz be kell jelentkezni
Próbáld meg ezt:
MaxKeepAliveRequests 200
KeepAliveTimeout 3
- A hozzászóláshoz be kell jelentkezni
Beállítottam de nem igazán lett jobb a dolog, apache restart után pár percel máris 3GB felett járunk....
Bár ideiglenesen azzal is megelégednék ha ez fölé nem menne...
- A hozzászóláshoz be kell jelentkezni
MaxRequestsPerChild 1000
én ezt venném sokkal kisebbre, amitől ugyan romlik a teljesítmény valamennyit, de ha leakel a rendszered, legalább hamarabb kidobálja az apacs példányokat. Mondjuk vedd 50-re, csak amíg kiderül, mitől van az egész.
- A hozzászóláshoz be kell jelentkezni
De , ez magát a hibát nem tárja fel, nagyon meg nem lassíthatom a működését folyamatosan a cuccnak, mert sokan használják, jelenleg néha-néha egy fél percre kiesik amikor elszal az apache de nem folyamatosan.
- A hozzászóláshoz be kell jelentkezni
Korulneztel serverfault.com -on? Talaltam par jo "topicot" errol.
- A hozzászóláshoz be kell jelentkezni
Szia,
Nem ezt az oldalt nem ismertem eddig még, de most megnézem.
üdv.
- A hozzászóláshoz be kell jelentkezni
Folyamatosan azon agyalok mi változott meg egy hete, hogy az eddig jó config már nem jó. De nem történt semmi változtatás nem volt update nem volt config modosítás semmi... egyik nap csak lehalt, ezért gondolom ,hogy esetleg egy rosszul megírt oldal kódja szivat, de nem tudom ,hogy ez lehetésges e egyáltalán. Figyelem a php folyamatokat is de egyiket sem tudtam összeföggésbe hozni ezzel.
Keresgéltem neten új támadásokat apache2 ellen arra gondolva, hogy valaki szórakozik a szerverrel de ez se vezetett megoldásra.
- A hozzászóláshoz be kell jelentkezni
nem lehet, hogy dosolnak vagy ddosolnak?
- A hozzászóláshoz be kell jelentkezni
Igen, gondoltam erre is néztem a kapcsolodások számát, plusz ha egy ip-ről x-nél több kapcsolat jön az automatikusan tíltja egy script iptablesben. Néztem tűzfal logokat, de nem találtam errre utalo nyomot, a statisztikák alapján nem emelkedett a kapcsolatok száma a szerver felé jelentősen.
- A hozzászóláshoz be kell jelentkezni
esetleg egy joliranyzott RLimitMem nem segit ?
- A hozzászóláshoz be kell jelentkezni
És te merre "irányoznád"? :)
- A hozzászóláshoz be kell jelentkezni
ahol hasznalom, ott erre van allitva:
RLimitMem 2097152 3145728
- A hozzászóláshoz be kell jelentkezni
Nézd meg az access logot nem álltak-e neki bazinagy filet leszedni php-n keresztül. Sok őrült hoz össze olyan PHP kódot, hogy az EGÉSZ file-t benyalja a memóriába a php-val és majd akkor kitolja... Ezzel remekül lehet tetszőleges konfigot fektetni. :)
- A hozzászóláshoz be kell jelentkezni
De ezt nem kellene megfogni a php.ini-ben lévő memoria limitnek?
- A hozzászóláshoz be kell jelentkezni
Nem fogja meg, próbáld ki. Többször szívtunk ilyennel a webszerverünkön nagyszerű kódok miatt. A nyitó posztban a per processz memória elég ilyesztően nagy. Most így elnézve egy forgalmas szerver 196MB APC kessel jár 350MB-nál az apache darabja.
- A hozzászóláshoz be kell jelentkezni
No, meglestem amit írtál.
Minden vhost külön helyre loggol, így írtam rá egy kicsi scriptet ami minden logbol kigyűjti a top10-et majd sorba is rendezi őket.
Tehát megkaptam melyek a legnagyobb lekérdezések.
A legtöbb valamilyen swf..
Lehet buta kérdés de most hogy megvannak az infok , ezekből hogyan tudom eldönteni ki az aki tölti a memoriát?
üdv
- A hozzászóláshoz be kell jelentkezni
Azt nem nézted, nem indítgatnak-e az apache processzek más programokat?
(pstree, ps axf)
- A hozzászóláshoz be kell jelentkezni
Néztem, ps afux-al de nem talátam , de ha lesz meg egy ilyen, akkor biztonság kedvéért ujra végignézem.
- A hozzászóláshoz be kell jelentkezni
Esetleg megpróbálhatnád letiltani az összes vhost-ot, aztán egyenként vagy kisebb csoportokban engedélyezni reload-dal.
- A hozzászóláshoz be kell jelentkezni
Esetleg használsz valami mod_php-s megoldást? Ha kevés, eléggé látogatott vhostod van, megpróbálhatnál átállni FastCGI-re, akár suexec nélkül is.
- A hozzászóláshoz be kell jelentkezni
suphp-t használok 4-es és 5-ös php is van párhuzamosan, ezen sajnos nem nagyon tudok változtatni.
- A hozzászóláshoz be kell jelentkezni
Gyorsan beleolvastam a suPHP forrásába, de nem biztos hogy helyesen értelmezem. Elindít egy külön binárist minden egyes lekérdezésre?
- A hozzászóláshoz be kell jelentkezni
Lényegébe igen, minden egyes php folyamat az adott felhasználó nevében fut így elkülönítve őket egymástól és a rendszertől.
És suphp-val lehetőség van több különböző php verzió egyidejű használatára is. (nem tudom mással is meg lehet e oldani.)
Az apache folyamatok azok már nem a userek nevében futnak. Csak a php-k.
- A hozzászóláshoz be kell jelentkezni
(f)cgi-vel es suexec-kel lehetseges, igen.
t
- A hozzászóláshoz be kell jelentkezni
Tudom, hogy mit csinál, csak azon voltam meglepődve, hogy mintha minden requestre külön elindított volna egy alkalmazást. De ez nem reális, hiszen állítólag gyorsabb, mint a CGI.
- A hozzászóláshoz be kell jelentkezni
Nem tudom segít -e.
Nekem itthon egy hónap óta vannak hasonló problémáim, csak fejlesztés nem éles szerver.
Kernelt is frissítettem a probléma miatt most 2.6.27-15.
Ubuntu 8.10.
MySQL: 5.0.67
PHP: 5.2.6-2ubuntu4.3
Apache/2.2.9 (Ubuntu) PHP/5.2.6-2ubuntu4.3 with Suhosin-Patch
Én nem hiszem, hogy rossz kód van a dologban, mert a saját kódok amiket használok régiek csak annyit változtattam rajtuk mostanság, hogy Drupal alatt is fusson.
Ha elkezdek dolgozni (napi 2-3 óra), akkor max egy hét alatt a swap is 90%-on van.
Eddig nem foglalkoztam vele, restart után megint használható. Most 8d 2h 34m az uptime és minden rendben van, mert már másfél hete nem fejlesztgettem.
- A hozzászóláshoz be kell jelentkezni
Más OS más verzióju kernel php sql... de érdekes,hogy nálad is eljött egy ilyen hiba.
- A hozzászóláshoz be kell jelentkezni
Lehet, hogy hulyeseget kerdezek, de mpm worker esetleg?
--
TH
- A hozzászóláshoz be kell jelentkezni
Jelenleg is az van.
- A hozzászóláshoz be kell jelentkezni
Esetleg még ötlet valakinek, hogyan lehetne ennek a végére járni.
köszi.
- A hozzászóláshoz be kell jelentkezni
Sajnos napokban nekem is előjött ez a problémám. Találtál Batman rá megoldást közben?
- A hozzászóláshoz be kell jelentkezni