Skocz do zawarto軼i


 

Zdj璚ie

Pomoc przy wyborze odpowiedniego rozwi您ania

Pomoc przy wyborze odpowiedniego rozwi您ania mysql

  • Prosz si zalogowa aby odpowiedzie
17 odpowiedzi na ten temat

Pomoc przy wyborze odpowiedniego rozwi您ania

#1 gutek

gutek

    Sta造 u篡tkownik

  • U篡tkownicy
  • PipPipPipPipPip
  • 209 post闚
  • Sk康:Wroc豉w

Napisany 16 stycze 2014 - 23:14

W dużym skrócie:

  • Baza danych około 1 mln rekordów, waga 0,5 gb
  • Serwer obsługuje wszystkie usługi (www, mysql): Xeon E3-1230 v2, 4 gb ram
  • dostęp do bazy (tylko odczyt) przez aplikacje www
  • aktualizacja zawartości bazy z poziomu php cli w trybie ciągłym tzn skrypt się kończy i zaczna kolejny raz itd

W czym problem:

W godzinach szczytu gdy dostęp do systemu ma więcej osób zwiększa się czas dostępu do aplikacji - nie wyrabia mysql. Jeżeli chodzi o wykorzystanie zasobów to nie ma problemu bo ram około 20-30%, procesor nie przekracza w maksymalnym momencie 50%. Nie wiem tylko co zmienić żeby zwiększyć wydajność mysql, aktualizacja musi być wykoywana na bieżąco i to ona może być powodem blokady tabel itp.

 

Aplikacja jest raczej dobrze zooptymalizowana.

 

Co możecie zaproponować?

Zmiana parametrów mysql? Replikacja i odczyt tylko ze slave? Zmiana serwera na mocniejszy? Może zmniejszenie parametrów aktualizacji np. pobieranie mniejszej ilości wierszy?

 

Zastanawiam się nad zmianą serwera na 2 x Xeon E5-2620, 32 gb, dyski sas.

 

Aplikacja się rozwija, rekordów przybywa i problem będzie coraz większy.

 

Dzięki za podpowiedzi.


  • 0

#2 Go嗆_patrys_*

Go嗆_patrys_*
  • Go軼ie

Napisany 16 stycze 2014 - 23:35

Więcej ramu, zmienić dyski na SSD i poprawić konfiguracje MySQL, a dopiero myśleć o replikacjach.

Zawsze jeszcze zostaje użycie Memcached czy Redis...


  • 0

#3 gutek

gutek

    Sta造 u篡tkownik

  • U篡tkownicy
  • PipPipPipPipPip
  • 209 post闚
  • Sk康:Wroc豉w

Napisany 16 stycze 2014 - 23:39

Czy zwiększenie ilości ramu coś pomoże skoro nie jest on wykorzystywany nawet w połowie.. Co w mysql poprawić?


  • 0

#4 SiXwishlist

SiXwishlist

    Freedom Forever

  • Firma Bronze
  • PipPipPipPipPipPipPipPip
  • 2366 post闚
  • Sk康:Great Britain
  • Firma:SiXwishlist

Napisany 16 stycze 2014 - 23:55

Na początek tylko poprawić konfiguracje MySQL nic więcej. Wnioski czytając twój opis o wykorzystaniu zasobów. Dodatkowo przemyśl  przejście na dyski SSD jak pierwsze proponowane rozwiązanie nie spowoduje znaczącej poprawy. Konfiguracja to podstawa i to jest klucz, może nie do sukcesu ale zdecydowanie do rozgraniczenia dwóch elementów: oprogramowanie = serwer (konfiguracja sprzętowa).

 

jakie masz te dyski SAS? Model?


Edytowany przez SiXwishlist, 16 stycze 2014 - 23:57.

  • 0

#5 gutek

gutek

    Sta造 u篡tkownik

  • U篡tkownicy
  • PipPipPipPipPip
  • 209 post闚
  • Sk康:Wroc豉w

Napisany 16 stycze 2014 - 23:57

Spytam z ciekawości na który parametr w konfiguracji mysql zwrócić uwagę? Zmieniałem już kilka i nie wiele to zmienia, być może błądze..


  • 0

#6 SiXwishlist

SiXwishlist

    Freedom Forever

  • Firma Bronze
  • PipPipPipPipPipPipPipPip
  • 2366 post闚
  • Sk康:Great Britain
  • Firma:SiXwishlist

Napisany 17 stycze 2014 - 00:06

Zainteresuj się tym: http://www.thomas-kr...formance_Tuning

Nie mam zbytnio czasu siedzieć na forum ale użycie oprogramowania z linku zobrazuje tobie elementy których konfiguracja jest niewskazana i wymagana jest ich poprawa - zmiana.


  • 0

#7 Go嗆_patrys_*

Go嗆_patrys_*
  • Go軼ie

Napisany 17 stycze 2014 - 00:55

@gutek: to nie jest takie proste, że poprawisz jeden parametr który ktoś Ci napisze na forum.


  • 0

#8 gutek

gutek

    Sta造 u篡tkownik

  • U篡tkownicy
  • PipPipPipPipPip
  • 209 post闚
  • Sk康:Wroc豉w

Napisany 17 stycze 2014 - 03:05

Napisałem który parametr mając na myśli parametry .. w weekend przeprowadze kolejne próby, pozmieniam i zobaczymy co będzie..


  • 0

#9 Pan Kot

Pan Kot

    Mrrr

  • Zbanowani
  • PipPipPipPipPipPipPipPip
  • 2819 post闚

Napisany 17 stycze 2014 - 03:07

Mysqltuner to podstawa. Poza tym skoro ram jest używany w 50% i jesteś pewny, że winowajcą jest serwer mysql to coś robisz źle. Albo źle oszacowałeś winowajcę, albo nie ruszałeś konfiguracji mysqla od czasu instalacji.


Edytowany przez Archi, 17 stycze 2014 - 03:07.

  • 0

#10 m0t

m0t

    Czasami na forum

  • U篡tkownicy
  • 50 post闚

Napisany 17 stycze 2014 - 12:57

W dużym skrócie:

  • Baza danych około 1 mln rekordów, waga 0,5 gb
  • Serwer obsługuje wszystkie usługi (www, mysql): Xeon E3-1230 v2, 4 gb ram
  • dostęp do bazy (tylko odczyt) przez aplikacje www
  • aktualizacja zawartości bazy z poziomu php cli w trybie ciągłym tzn skrypt się kończy i zaczna kolejny raz itd

W czym problem:

W godzinach szczytu gdy dostęp do systemu ma więcej osób zwiększa się czas dostępu do aplikacji - nie wyrabia mysql. Jeżeli chodzi o wykorzystanie zasobów to nie ma problemu bo ram około 20-30%, procesor nie przekracza w maksymalnym momencie 50%. Nie wiem tylko co zmienić żeby zwiększyć wydajność mysql, aktualizacja musi być wykoywana na bieżąco i to ona może być powodem blokady tabel itp.

 

Aplikacja jest raczej dobrze zooptymalizowana.

 

Co możecie zaproponować?

Zmiana parametrów mysql? Replikacja i odczyt tylko ze slave? Zmiana serwera na mocniejszy? Może zmniejszenie parametrów aktualizacji np. pobieranie mniejszej ilości wierszy?

 

Zastanawiam się nad zmianą serwera na 2 x Xeon E5-2620, 32 gb, dyski sas.

 

Aplikacja się rozwija, rekordów przybywa i problem będzie coraz większy.

 

Dzięki za podpowiedzi.

 

masz jakiekolwiek statystyki z dzialania bazy ? z systemu w postaci IO/VM ?

jesli cpu nie przekracza 50% szukalbym nekow w podsystemach

 

sprawdz ile tabel ci sie tworzy na dyskach, moze przenies tmp na jakis ramdysk skromny

opcji jest wiele ale nie podales zadnych danych wiec ciezko pomoc,

moze pokaz chociaz staty io/vm z okresu w ktorym ci sie grzeje i proclist

z taka mala baze cachebuffery index buffer itp nie musi byc za duzy, z tego co piszesz moze to byc problem z IO ale niekoniecznie odrazu musisz zmieniac sprzet... staty/logi i info_schema to podstawa

sprzet mozesz zmienic zawsze


  • 0

#11 gutek

gutek

    Sta造 u篡tkownik

  • U篡tkownicy
  • PipPipPipPipPip
  • 209 post闚
  • Sk康:Wroc豉w

Napisany 07 sierpie 2014 - 19:29

Odświeżam wątek

 

Zmieniłem maszynę na E5-2650, 32 gb ram, 2 x 240 ssd (raid1)

 

baza danych składa się z około 50 tabel (tabele o największej pojemności zawierają około 1 mln rekordów i są jako myisam), cała baza zajmuje około 1,5 gb

 

Wykonywane są regularne aktualizacje zawartości tabel tzn cały dzień działa aplikacja która dokonuje updateów i insertów tych tabel, może być próba wykonania wielu aktualizacji w tym samym czasie przez różne wątki aplikacji w jednej tabeli

 

Z optymalizacją to chyba przesadziłem, oto ona:

key_buffer              = 4096M
key_buffer_size         = 16384M
tmp_table_size          = 8192M
max_allowed_packet      = 256M
thread_stack            = 1024K
thread_cache_size       = 256
query_cache_limit       = 256M
query_cache_size        = 512M
max_connections        = 500
sort_buffer_size        = 2048M
table_open_cache        = 2048M
read_buffer_size        = 2048M
innodb_buffer_pool_size = 8196M

Wyczytałem dzisiaj, że nie ma potrzeby zwiększania wielu parametrów aż tak bardzo jak u mnie i teraz moje pytanie co zmienić aby poprawić wydajność

 

Czy postawienie 4 x ssd w raid 10 coś pomoże?

 

Może warto zmienić silnik dla tabel które mają wiele updateów na innodb ?

 

Bardzo dziękuję za ewentualne podpowiedzi


Edytowany przez gutek, 07 sierpie 2014 - 19:30.

  • 0

#12 Mi這sz

Mi這sz

    Weteran WHT

  • Moderatorzy
  • PipPipPipPipPipPipPipPip
  • 4026 post闚
  • Sk康:Tuchola
  • Firma:Sys-Com / M-Networks Sp. z o.o.
  • Imi:Mi這sz
  • Nazwisko:Oller

Napisany 07 sierpie 2014 - 20:57

Zmień na innodb. W myisam masz robiony lock tabeli, wtedy reszta czeka.

 

key_buffer = 4096M
key_buffer_size = 16384M

 

16gb? :) Ile zajmują Twoje indexy? Te dwie wartości, to to samo.


  • 0

#13 gutek

gutek

    Sta造 u篡tkownik

  • U篡tkownicy
  • PipPipPipPipPip
  • 209 post闚
  • Sk康:Wroc豉w

Napisany 07 sierpie 2014 - 21:43

Zmień na innodb. W myisam masz robiony lock tabeli, wtedy reszta czeka.

 

key_buffer = 4096M
key_buffer_size = 16384M

 

16gb? :) Ile zajmują Twoje indexy? Te dwie wartości, to to samo.

 

Wprowadziłem zmiany. Indeksy zajmują dużo mniej :)

 

Czy ma sens kopiowanie tabeli np. dane1 > dane2 gdzie dane1 jest cały czas aktualizowana a dane2 służy tylko do odczytu przez inną część aplikacji i wtedy dane2 myisam ? Tak mam teraz bo bardzo blokowało dostęp.

 

A pozostałe parametry z tych ustawionych są okey?


Edytowany przez gutek, 07 sierpie 2014 - 21:45.

  • 0

#14 Pan Kot

Pan Kot

    Mrrr

  • Zbanowani
  • PipPipPipPipPipPipPipPip
  • 2819 post闚

Napisany 08 sierpie 2014 - 02:31

Do odczytu się stosuje widoki, a nie kopiowanie tabeli.


  • 0

#15 gutek

gutek

    Sta造 u篡tkownik

  • U篡tkownicy
  • PipPipPipPipPip
  • 209 post闚
  • Sk康:Wroc豉w

Napisany 16 sierpie 2014 - 12:36

dzisiaj się zorientowałem że w tabeli z engine innodb nie działają inserty, przeszukałem internet zmieniając wiele wartości w celu sprawdzenia i dalej nic.. według mnie nie działa autoincrement mimo że jest zaznaczone bo jest bład powielenia wartości dla PRIMARY key..

 

zmieniłem innodb_autoinc_lock_mode z 1 na 0, czy tak będzie lepiej mimo, że insert dalej nie działa ?


Edytowany przez gutek, 16 sierpie 2014 - 12:37.

  • 0

#16 gutek

gutek

    Sta造 u篡tkownik

  • U篡tkownicy
  • PipPipPipPipPip
  • 209 post闚
  • Sk康:Wroc豉w

Napisany 16 sierpie 2014 - 13:10

Chyba znalazłem rozwiązanie, bo inserty już działają.

 

Zmieniłem typ wiersza na BIGINT i działa, czy według Was tak ma być czy jest inna przyczyna ?


  • 0

#17 likufanele

likufanele

    Sta造 u篡tkownik

  • U篡tkownicy
  • PipPipPipPipPip
  • 234 post闚

Napisany 16 sierpie 2014 - 18:26

Ile masz rekordów w tej tabeli...? Jeśli pole AUTOINCREMENT było typu INT i doleciało do limitu dla tego typu pola (tutaj pewnie 2147483647 rekordów) to siłą rzeczy więcej już nie dodasz bez zmiany typu pola.


  • 0

#18 Misiek08

Misiek08

    Weteran WHT

  • WHT Pro
  • PipPipPipPipPipPipPipPip
  • 1157 post闚

Napisany 20 sierpie 2014 - 15:39

Ja trochę od tematu - czy koniecznie potrzebujesz tego silnika i obudowy bazy? Używasz transakcji? Może NoSQL jakiś lub np. zamiast MySQL, Percona?
  • 0






Tak瞠 otagowane jednym lub wi璚ej z tych s堯w kluczowych: mysql

0 u篡tkownik闚 czyta ten temat

0 u篡tkownik闚, 0 go軼i, 0 anonimowych u篡tkownik闚