Optymalizacja MySQL
Bald - 24-12-2006 00:36
Optymalizacja MySQL
Rzecz dzieieje sie na serwerze dedykowanym: PIII 1000 Mhz, 512 MB RAM, na ktorym jest sobie MySQL, Apache i PHP (standardzik). Problemem jest wydajnosc sewisu ktory sobie dziala na tej konfiguracji. W ciagu dnia jest super, wszystko dziala jak powinno. Jednak wieczorem przy wzmozonym ruchu zaczynaja sie schody, strony generuja sie niekiedy po kilka jak nie kilkanascie sekund (caly serwis oparty jest o PHP + MySQL).
Obciazenie serwera nie przekracza (albo rzadko kiedy) 90% (load average: 5.42, 6.35, 6.54) natomiast RAMu brakuje (obecnie gdy pisze te slowa) 80 MB zzera SWAP. Sam Apache jest w stanie obsluzyc 1000 zadan na sekunde gdy strona jest statyczna. Jak juz pisalem moj serwis opiera sie w calosci na PHP i MySQL i wydaje mi sie ze tutaj lezy przyczyna :/ Oczywiscie indeksy sa pozakladane, zapytania sa zoptymalizowane (tak mi sie wydaje - jak pisalem wszystko dziala szybko w godzinach rannych i popoludniowych), ale niekiedy proste zapytanie SELECT czy UPDATE potrafi wykonywac sie 30 sek (sytuacja losowa - normalnie wykonanie takiego zapytania trwa 0,0001 sek). Nie wiem gdzie szukac przyczyny. Za malo ramu? Moze zmienic cos w samej konfiguracji co moze przyspieszyc dzialanie bazy? Zwiekszylem key_buffer do 32M ale nic to nie daje :/
Teraz o samej bazie: zajmuje ponad 300 MB, srednia ilosc zapytan to 6/sek (czyli nie tak zle) w godzinach wieczornych skacze do 15. Prawie 50% to zapytania SELECT, 7% - UPDATE, 2% - INSERT. Hmm, silnik tabel to MyISAM. Nie wiem - cos jeszcze powinienem napisac?
Wolalbym uniknac upgreadowania sprzetu,
Pozdrawiam
Maciek Dobrzanski - 24-12-2006 00:36
"Bald" <bald@spam.epf.pl> wrote in message news:elk7df$5ca$1@achot.icm.edu.pl...
> Obciazenie serwera nie przekracza (albo rzadko kiedy) 90% (load average: > 5.42, 6.35, 6.54) natomiast > RAMu brakuje (obecnie gdy pisze te slowa) 80 MB zzera SWAP. Sam Apache > jest
Najpierw musisz zdiagnozowac co tak naprawde jest przyczyna nadmiernego obciazenia. Optymalizować w bazie danych można jak wiadomo co i czy w ogóle potrzeba.
Maciek
Bald - 24-12-2006 00:37
> Najpierw musisz zdiagnozowac co tak naprawde jest przyczyna nadmiernego > obciazenia. Optymalizować w bazie danych można jak wiadomo co i czy w > ogóle potrzeba.
Podejrzewam ze nadmierne obciazenie w stosunku do mozliwosci sprzetowych :P Ale tak na powaznie, problemem sa w glownej mierze zapytania typu UPDATE albo INSERT. Banalne, takie ktorych czas wykonywania nie powinien przekraczac 0,001 (czasem tak jest), niekiedy wykonywane sa po 30 sek!! Srednio jednak po 0,2 sek! To nie jest do konca normalne. Zgoda - baza troche zajmuje, ale tabele na ktorych dokonywane sa operacje UPDATE oraz INSERT (przypominam ze te zapytania stanowia ok 9% ogolu zapytan MySQL) nie przekracza 5 MB. Skad biora sie takie opoznienia w aktualizacji bazy?
-- Pozdrawiam!
Maciek Dobrzanski - 24-12-2006 00:37
"Bald" <bald@spam.epf.pl> wrote in message news:em3g82$45n$1@achot.icm.edu.pl...
> Ale tak na powaznie, problemem sa w glownej mierze zapytania typu UPDATE > albo INSERT.
To może być, i pewnie jest, tylko efekt, nie zaś przyczyna. Należy doprowadzić do takiej konfiguracji serwera by swap nie był wykorzystywany w ogóle i wówczas robić jakiekolwiek analizy. Inaczej to się troche mija z celem.
Maciek
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[mysql] =?ISO-8859-2?Q?Za=E6mienie=2E=2E=2E_jak_wy=B6wietli=E6?==?ISO-8859-2?Q?=2E=2E=2E?=
[mysql] =?ISO-8859-2?Q?wielko=B6=E6_bazy_a_stabilno=B6=E6=2C?==?ISO-8859-2?Q?_podzia=B3_du=BFej_bazy_a_powi=B1zania_tabel?=
[MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?=
[mysql 4.0.x] przenoszenie kolum =?ISO-8859-2?Q?mi=EAdzy_bazam?==?ISO-8859-2?Q?i_cd_=2E=2E=2E_?=
[MySQL] =?ISO-8859-2?Q?z=B3=B1czenie_tabeli_u=BFytkownik_i?==?ISO-8859-2?Q?_zdj=EAcia_z_wyborem_zdj=EAcia_domy=B6lnego?=
[MySQL] Jak =?ISO-8859-2?Q?wpisa=E6_do_tabeli_pozycje_dl?==?ISO-8859-2?Q?a_wierszy_gdybym_te_wiersze_wybiera=B3_w_ok?== ?ISO-8859-2?Q?re=B6lonej_kolejno=B6ci_=3F?=
Gdzie MySQL 4.1, a gdzie 5.0?
[MySQL 4.0...4.1] zabezpieczenie przed =?ISO-8859-2?Q?jednoczesn?==?ISO-8859-2?Q?=B1_edycj=B1?=
[MS SQL] "set names" (mySQL) w MS SQL
[mysql 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?=
zanotowane.pldoc.pisz.plpdf.pisz.pllisinski.htw.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|