gutek 23 Zgłoś post Napisano Styczeń 16, 2014 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. Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość patrys Zgłoś post Napisano Styczeń 16, 2014 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... Udostępnij ten post Link to postu Udostępnij na innych stronach
gutek 23 Zgłoś post Napisano Styczeń 16, 2014 Czy zwiększenie ilości ramu coś pomoże skoro nie jest on wykorzystywany nawet w połowie.. Co w mysql poprawić? Udostępnij ten post Link to postu Udostępnij na innych stronach
bybunny 540 Zgłoś post Napisano Styczeń 16, 2014 (edytowany) 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? Edytowano Styczeń 16, 2014 przez SiXwishlist (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
gutek 23 Zgłoś post Napisano Styczeń 16, 2014 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.. Udostępnij ten post Link to postu Udostępnij na innych stronach
bybunny 540 Zgłoś post Napisano Styczeń 16, 2014 Zainteresuj się tym: http://www.thomas-krenn.com/de/wiki/MySQL_Performance_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. Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość patrys Zgłoś post Napisano Styczeń 16, 2014 @gutek: to nie jest takie proste, że poprawisz jeden parametr który ktoś Ci napisze na forum. Udostępnij ten post Link to postu Udostępnij na innych stronach
gutek 23 Zgłoś post Napisano Styczeń 17, 2014 Napisałem który parametr mając na myśli parametry .. w weekend przeprowadze kolejne próby, pozmieniam i zobaczymy co będzie.. Udostępnij ten post Link to postu Udostępnij na innych stronach
Pan Kot 1535 Zgłoś post Napisano Styczeń 17, 2014 (edytowany) 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. Edytowano Styczeń 17, 2014 przez Archi (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
m0t 0 Zgłoś post Napisano Styczeń 17, 2014 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 Udostępnij ten post Link to postu Udostępnij na innych stronach
gutek 23 Zgłoś post Napisano Sierpień 7, 2014 (edytowany) 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 Edytowano Sierpień 7, 2014 przez gutek (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
Miłosz 2311 Zgłoś post Napisano Sierpień 7, 2014 Zmień na innodb. W myisam masz robiony lock tabeli, wtedy reszta czeka. key_buffer = 4096Mkey_buffer_size = 16384M 16gb? Ile zajmują Twoje indexy? Te dwie wartości, to to samo. Udostępnij ten post Link to postu Udostępnij na innych stronach
gutek 23 Zgłoś post Napisano Sierpień 7, 2014 (edytowany) 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? Edytowano Sierpień 7, 2014 przez gutek (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
Pan Kot 1535 Zgłoś post Napisano Sierpień 8, 2014 Do odczytu się stosuje widoki, a nie kopiowanie tabeli. Udostępnij ten post Link to postu Udostępnij na innych stronach
gutek 23 Zgłoś post Napisano Sierpień 16, 2014 (edytowany) 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 ? Edytowano Sierpień 16, 2014 przez gutek (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
gutek 23 Zgłoś post Napisano Sierpień 16, 2014 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 ? Udostępnij ten post Link to postu Udostępnij na innych stronach
likufanele 77 Zgłoś post Napisano Sierpień 16, 2014 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. Udostępnij ten post Link to postu Udostępnij na innych stronach
Misiek08 285 Zgłoś post Napisano Sierpień 20, 2014 Ja trochę od tematu - czy koniecznie potrzebujesz tego silnika i obudowy bazy? Używasz transakcji? Może NoSQL jakiś lub np. zamiast MySQL, Percona? Udostępnij ten post Link to postu Udostępnij na innych stronach