Fórum Ubuntu CZ/SK
Ostatní => Ubuntu Server => Téma založeno: On 17 Června 2013, 09:41:59
-
Zdravím,
nějak se mi nedaří zjistit příčinu problému vytěžování mysql.
Jedná se o nahodilou situaci. Někdy, kdykoliv v průběhu dne se stane, že apache zničehonic začne
generovat connectiony do DB, tím se web server zpomalí natolik, že je v podstatě nepoužitelný nebo se MYSQL úplně odstaví a v logu píše:
"too many connections to database"
Vždy pomůže restart apache, ale opět do chvíle, než "něco" znovu začne generovat spojení do DB.
Je úplně jedno kdy...ráno, odpoledne, v noci...úplně nahodile.
Jedná se o dva servery v clusteru (zdrojové kódy) + jeden server, kde je DB.
Netstat na web serveru s grepem na port 3306 říká:
..............
tcp 0 0 192.168.2.161:36722 192.168.2.164:3306 SPOJENO 32334/apache2
tcp 0 0 192.168.2.161:36760 192.168.2.164:3306 TIME_WAIT -
tcp 0 0 192.168.2.161:36464 192.168.2.164:3306 SPOJENO 32445/apache2
tcp 0 0 192.168.2.161:36669 192.168.2.164:3306 TIME_WAIT -
tcp 0 0 192.168.2.161:36765 192.168.2.164:3306 TIME_WAIT -
tcp 0 0 192.168.2.161:36540 192.168.2.164:3306 TIME_WAIT -
tcp 0 0 192.168.2.161:36659 192.168.2.164:3306 TIME_WAIT -
tcp 0 0 192.168.2.161:36526 192.168.2.164:3306 SPOJENO 32416/apache2
tcp 0 0 192.168.2.161:36667 192.168.2.164:3306 TIME_WAIT -
tcp 0 0 192.168.2.161:36989 192.168.2.164:3306 TIME_WAIT -
tcp 0 0 192.168.2.161:36603 192.168.2.164:3306 TIME_WAIT -
tcp 0 0 192.168.2.161:36591 192.168.2.164:3306 TIME_WAIT -
tcp 0 0 192.168.2.161:36497 192.168.2.164:3306 SPOJENO 32430/apache2
tcp 0 0 192.168.2.161:36538 192.168.2.164:3306 TIME_WAIT -
tcp 0 0 192.168.2.161:36402 192.168.2.164:3306 SPOJENO 32341/apache2
tcp 0 0 192.168.2.161:36630 192.168.2.164:3306 TIME_WAIT -
tcp 0 0 192.168.2.161:36620 192.168.2.164:3306 TIME_WAIT -
tcp 0 0 192.168.2.161:36599 192.168.2.164:3306 TIME_WAIT -
tcp 0 0 192.168.2.161:36536 192.168.2.164:3306 TIME_WAIT -
tcp 0 0 192.168.2.161:36472 192.168.2.164:3306 SPOJENO 32513/apache2
tcp 0 0 192.168.2.161:36698 192.168.2.164:3306 TIME_WAIT -
tcp 0 0 192.168.2.161:36889 192.168.2.164:3306 SPOJENO 32514/apache2
..............
Je to pouze část. Těch connectionů do DB je přes 200.
netstat -natp | grep apache | wc -l
..říká až 450 spojení.
Zajímavé je ale to, že servery v clusteru mají samozřejmě virtuální IP, na kterou chodí požadavky, tato virtuální IP je 192.168.2.160.
V netstatu tento požadavek směruje ale z 192.168.2.161 a nahodilého portu, což je fyzická IP toho serveru, z čehož usuzuji, že to dělá nějaký interní proces na serveru, který využívá apache.
Což mě ale moc nenapadá který...antivir clamav nezaznamenal problém. Resp předtím tam viry byly, ale ty jsou všechny odstraněny.
Napadá někoho, jak zjistit, co konkrétně má na svědomí connectiony do DB? Něco to musí spouštět, ikdyby to byl vir, musí se nějak spustit.
Zkoušel jsem také lsof -p $PID, ale mezi výpisem souborů jsem opět nějaký neznámý soubor nenašel..
Zapnul jsem i globální log na databázovém serveru, čili jsem viděl všechny query, ale nic nápadného jsem nezaznemanl.. (ikdyž jsem v tom množství mohl něco přehlédnout)
-
Ahoj
najdi si nějaký "analyzer" případně nějaký "runtime profiler" třeba se tam dopátráš co ti dělá tuhle neplechu.
jednou jsem řešil neoptimalizovanej server a pomohl mi tenhle soft http://www.jetprofiler.com/ (http://www.jetprofiler.com/) žádnej zázrak to asi není ale mohlo by ti to přiblížit co způsobuje ten overload,...
-
To vypadá na slušný soft..už to monitoruju, tak jsem zvědav...
díky moc,
+K
-
Hm, v době výskytu problému bohužel nic moc v jetprofileru nevidím ..pomohla by mi jedna věc.
Potřebuji zjistit, co konkrétně způsobuje nárust vláken apache.
To se stane ve vteřině...netstat říká cca 40 spojení a ve vteřině jich je 300. Podle mě někdo klikne na nějaký odkaz nějakého projektu a špatně napsaná aplikace udělá tento problém.
Je mi ale divné to, že kdyby tomu tak bylo, bylo by spojení z IP 192.168.2.160, což je virtuální IP, na kterou tyto požadavky chodí.
Ikdyž je pravda, že i na této IP je taky hodně požadavků (cca 150). Pak ale na fyzickou IP serveru 192.168.2.161 dopadá dalších cca 300 spojení.
Otázka zní, jestli můžu nějak vysledovat, v jakém čase kdo kliknul na konkrétní odkaz/URL daného projektu..?
EDIT: tak zapnul jsem debug apache, kliknul na odkaz a v error.log jsem URL našel...snad tohle pomůže
-
Takže pravděpodobně vyřešeno..
na vině byly jak zažrané viry, tak konkrétní, mnou hledané odkazy..na základě prográmku, který doporučil ETNyx, jsem měl nějaké tipy na konkrétní problémové projekty.
Pustil jsem si do terminálu:
watch -n 3 "netstat -natp | grep apache | wc -l"
, kde jsem viděl počet vláken. A spouštěl jsem problémové projekty jeden po druhém (jen URL ve web browseru), zároveň sledoval měnící se počet.
Problémové projekty jsem našel..
ještě jednou díky za soft..
L