Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: MYSQL - Too many connections to database [vyřešeno]  (Přečteno 2708 krát)

On

  • Stálý člen
  • **
  • Příspěvků: 1136
    • Operační systémy
MYSQL - Too many connections to database [vyřešeno]
« kdy: 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á:


Kód: [Vybrat]
..............
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.

Kód: [Vybrat]
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)
« Poslední změna: 18 Června 2013, 17:56:51 od On »
Asus M2A-VM HDMI, Athlon 64 X2 4800+, 4GB DDR2/800Mhz,Powercolor HD 2600 XT, Ubuntu 10.10
Být posledním nevadí, ale nikdy nesmíte být poslední dvakrát po sobě - Iacocca

ETNyx

  • Aktivní člen
  • *
  • Příspěvků: 425
Re:MYSQL - Too many connections to database
« Odpověď #1 kdy: 17 Června 2013, 11:49:15 »
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/ žádnej zázrak to asi není ale mohlo by ti to přiblížit co způsobuje ten overload,...
jabber: etnyx@jabbim.cz

On

  • Stálý člen
  • **
  • Příspěvků: 1136
    • Operační systémy
Re:MYSQL - Too many connections to database
« Odpověď #2 kdy: 17 Června 2013, 13:54:39 »
To vypadá na slušný soft..už to monitoruju, tak jsem zvědav...

díky moc,
+K
Asus M2A-VM HDMI, Athlon 64 X2 4800+, 4GB DDR2/800Mhz,Powercolor HD 2600 XT, Ubuntu 10.10
Být posledním nevadí, ale nikdy nesmíte být poslední dvakrát po sobě - Iacocca

On

  • Stálý člen
  • **
  • Příspěvků: 1136
    • Operační systémy
Re:MYSQL - Too many connections to database
« Odpověď #3 kdy: 18 Června 2013, 11:48:43 »
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
« Poslední změna: 18 Června 2013, 11:51:57 od On »
Asus M2A-VM HDMI, Athlon 64 X2 4800+, 4GB DDR2/800Mhz,Powercolor HD 2600 XT, Ubuntu 10.10
Být posledním nevadí, ale nikdy nesmíte být poslední dvakrát po sobě - Iacocca

On

  • Stálý člen
  • **
  • Příspěvků: 1136
    • Operační systémy
Re:MYSQL - Too many connections to database
« Odpověď #4 kdy: 18 Června 2013, 17:56:39 »
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:

Kód: [Vybrat]
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
Asus M2A-VM HDMI, Athlon 64 X2 4800+, 4GB DDR2/800Mhz,Powercolor HD 2600 XT, Ubuntu 10.10
Být posledním nevadí, ale nikdy nesmíte být poslední dvakrát po sobě - Iacocca

 

Provoz zaštiťuje spolek OpenAlt.