serwer mysql - wydajnosc
Marcin Wojdak - 13-11-2006 00:14
serwer mysql - wydajnosc
Witam,
Mamy w firmie serwer (2xXeon 3.0GHz, 4GB RAM, macierz RAID 5 na 5 dyskach SAS) z zainstalowanym systemem RedHat Enterprise Linux 4. Dziala na tym mysql 4.1.12, apache 2.0.52 i php 4.3.9. Baza danych to ok. 6GB.
Niestety mamy problemy z wydajnoscia tego serwera. Zdarzylo sie kilkukrotnie, ze serwer zatkal sie i nie przetwarzal zadnych zapytan - apache nie odpowiadal na zapyania z przegladarki. po restarcie apache'a. W statusie serwera threads_running pokazywal na 45, podczas gdy normalnie jest to 1 lub 2. W configu do mysql mam ustawione threads_concurrency na 4, wiec chyba serwer nie powinien pozwolic na uruchomienie jednoczesne wiecej niz 4 watkow? Jak sprawdzic jak rzeczywiscie jest ustawiona thread_concurrency (mysqladmin variables nie pokazuje takiej zmiennej wcale)?
Liczba zapytan na sekunde podawana przez mytop w momencie takiego zapchania skacze do ponad 1000.
Moze ktos z Was spotkal sie z podobnym problemem (zwlaszcza w kontekscie tych 45 jednoczesnie dzialajacych watkow, ktore serwer zapychaja). Ponizej moj plik my.cnf
Z gory dzieki za pomoc, lub podpowiedz gdzie szukac przyczyny problemu (bardziej mysql, czy moze apache lub php).
pozdrawiam, marcin
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock old_passwords=1
language =/usr/share/mysql/polish/ skip-innodb skip-locking set-variable = connect_timeout=20 set-variable = max_connections=150
set-variable = max_tmp_tables=300 set-variable = wait_timeout=30 set-variable = thread_concurrency=4 log-slow-queries =/var/log/mysqld_query.log set-variable = long_query_time=2 set-variable = max_connect_error=1000
set-variable = key_buffer_size=384M set-variable = thread_cache=40 set-variable = tmp_table_size=200M set-variable = table_cache=700 set-variable = max_heap_table_size=200M
[mysql.server] user=mysql basedir=/var/lib
Radosław Witkowicki - 13-11-2006 00:14
Marcin Wojdak napisał(a): > Witam, > > Mamy w firmie serwer (2xXeon 3.0GHz, 4GB RAM, macierz RAID 5 na 5 dyskach > SAS) z zainstalowanym systemem RedHat Enterprise Linux 4. Dziala na tym > mysql 4.1.12, apache 2.0.52 i php 4.3.9. Baza danych to ok. 6GB. >
Z taka konfuguracją az proszisz się o wałm ;).
Radosław Witkowicki - 13-11-2006 00:14
Radosław Witkowicki napisał(a): > Marcin Wojdak napisał(a): >> Witam, >> >> Mamy w firmie serwer (2xXeon 3.0GHz, 4GB RAM, macierz RAID 5 na 5 >> dyskach SAS) z zainstalowanym systemem RedHat Enterprise Linux 4. >> Dziala na tym mysql 4.1.12, apache 2.0.52 i php 4.3.9. Baza danych to >> ok. 6GB. >> > > Z taka konfuguracją az proszisz się o wałm ;).
No zapomniałem dodać, że RAID 5 bardzo służy wydajności :D.
mzobniow - 13-11-2006 00:14
> Witam, > > Mamy w firmie serwer (2xXeon 3.0GHz, 4GB RAM, macierz RAID 5 na 5 dyskach > SAS) z zainstalowanym systemem RedHat Enterprise Linux 4. Dziala na tym > mysql 4.1.12, apache 2.0.52 i php 4.3.9. Baza danych to ok. 6GB. > > Niestety mamy problemy z wydajnoscia tego serwera. Zdarzylo sie > kilkukrotnie, ze serwer zatkal sie i nie przetwarzal zadnych zapytan - > apache nie odpowiadal na zapyania z przegladarki. po restarcie apache'a. W > statusie serwera threads_running pokazywal na 45, podczas gdy normalnie jest > to 1 lub 2. W configu do mysql mam ustawione threads_concurrency na 4, wiec > chyba serwer nie powinien pozwolic na uruchomienie jednoczesne wiecej niz 4 > watkow? Jak sprawdzic jak rzeczywiscie jest ustawiona thread_concurrency > (mysqladmin variables nie pokazuje takiej zmiennej wcale)? > > Liczba zapytan na sekunde podawana przez mytop w momencie takiego zapchania > skacze do ponad 1000. > > Moze ktos z Was spotkal sie z podobnym problemem (zwlaszcza w kontekscie > tych 45 jednoczesnie dzialajacych watkow, ktore serwer zapychaja). Ponizej > moj plik my.cnf > > Z gory dzieki za pomoc, lub podpowiedz gdzie szukac przyczyny problemu > (bardziej mysql, czy moze apache lub php).
Wyglada na to ze jakis update blokuje ci tabele. Te procesy ktore widzisz na liscie maja zapewne status 'locked'. Chyba najlepszym i najszybszym rozwiazaniem bedzie tutaj zrobienie indexu. Parametr threads_concurrency najlepiej ustawic na liczbe procesorow w systemie i nie ma on nic wspolnego z dlugoscia kolejki watkow oczekujacych. Mysql odpiera inserty i updaty do zblokowanej tabeli i ustawia je w kolejke dopoki nie osiagnie parametru max_connections ktory w Twoim wypadku wynosi 150. Czasem warto zainteresowac sie rowniez syntaxem INSERT DELAY...
Pzdr Maciek
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Marcin Wojdak - 13-11-2006 00:14
>> Z taka konfuguracją az proszisz się o wałm ;). serwer nie jest wystawiony na swiat
> No zapomniałem dodać, że RAID 5 bardzo służy wydajności :D. a mozesz cos wiecej... przed tworzeniem tego raida sugerowalem sie zestawieniami, ze wydajnosc jest podobna co raid 10 na czterech dyskach. mozna cos jeszcze teraz poprawic?
pozdrawiam, marcin
Radosław Witkowicki - 13-11-2006 00:14
Marcin Wojdak napisał(a): >>> Z taka konfuguracją az proszisz się o wałm ;). > serwer nie jest wystawiony na swiat > >> No zapomniałem dodać, że RAID 5 bardzo służy wydajności :D. > a mozesz cos wiecej... przed tworzeniem tego raida sugerowalem sie > zestawieniami, ze wydajnosc jest podobna co raid 10 na czterech dyskach. > mozna cos jeszcze teraz poprawic?
Hmm... Oracle zaleca na RAID 1. Zresztą nie raz widzałem serwery na RAID 5 i chodziło to jak krew z nosa. Wiesz cały ten problem może być spowodowany złym projektem aplikacji. Przejrzyj dokładnie archiwum grupy, pamiętam, że był jakiś wątek na ten temat.
Marcin Wojdak - 13-11-2006 00:14
> Wyglada na to ze jakis update blokuje ci tabele. Te procesy ktore widzisz > na > liscie maja zapewne status 'locked'. Chyba najlepszym i najszybszym > rozwiazaniem > bedzie tutaj zrobienie indexu. Parametr threads_concurrency najlepiej > ustawic na > liczbe procesorow w systemie i nie ma on nic wspolnego z dlugoscia kolejki > watkow oczekujacych. Mysql odpiera inserty i updaty do zblokowanej tabeli > i > ustawia je w kolejke dopoki nie osiagnie parametru max_connections ktory w > Twoim > wypadku wynosi 150. > Czasem warto zainteresowac sie rowniez syntaxem INSERT DELAY...
Dzieki, juz sprawdzam jak jest z tymi indexami - aplikacja pisana nie przeze mnie :-( . W logu od slow_queries mam w momencie zaciecia informacje # Query_time: 1150 Lock_time: 10 Rows_sent: 0 Rows_examined: 0
Nie bardzo wiem do czego odniesc lock_time.
pozdrawiam, marcin
Marcin Wojdak - 13-11-2006 00:14
> Hmm... Oracle zaleca na RAID 1. Zresztą nie raz widzałem serwery na RAID 5 > i chodziło to jak krew z nosa. > Wiesz cały ten problem może być spowodowany złym projektem aplikacji. > Przejrzyj dokładnie archiwum grupy, pamiętam, że był jakiś wątek na ten > temat.
Ok, dzieki, skupie sie na razie wlasnie na optymalizacji samej aplikacji i struktury bazy. Natomiast jesli chodzi o ten RAID, to chyba mimo wszystko RAID 5 powienien byc szybszy niz RAID 1 (ktory przeciez jest tak szybki jak pojedynczy dysk... w najlepszym przypadku). Ja zastanawialem sie raczej nad raidem 10.
pozdrawiam, marcin
Michał Kuratczyk - 13-11-2006 00:14
Marcin Wojdak wrote: > Ok, dzieki, skupie sie na razie wlasnie na optymalizacji samej aplikacji i > struktury bazy. Natomiast jesli chodzi o ten RAID, to chyba mimo wszystko > RAID 5 powienien byc szybszy niz RAID 1 (ktory przeciez jest tak szybki > jak pojedynczy dysk... w najlepszym przypadku). RAID5 jest niezły przy odczytach, ale słaby przy zapisach.
> Ja zastanawialem sie raczej nad raidem 10. I słusznie. To jest zazwyczaj najlepszy wybór dla bazy danych.
-- Michał Kuratczyk
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.plred-hacjenda.opx.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 |
|