Skocz do zawartości
Zaloguj się, aby obserwować  
Mich@ł

MySQL zabija serwer :)

Polecane posty

Od 2 dni mam pewien problem a konkretniej MySQL "zabija serwer" ponieważ zaczyna wykorzystywać 120-150% mocy obliczeniowej procesora... O dziwo dzieje się tak tylko co jakiś czas... normalnie w ciągu dnia nie wykorzystuje więcej niż 20-30%...

 

W czym może być problem? Są może jakieś logi abym mógł dowiedzieć się dlaczego są akie nagłe skoki?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Oczywiście że są logi... /var/log/mysql ... pewnie obciążenie wzrasta pod wieczór gdy jest większy ruch.. zoptymalizuj skrypty + mysqla. Czy masz jakiegoś cachera do php?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

W rzeczy by się przydały.

1) Cat konfiguracji MySQL.

2) mysql> show status;

Nie wklejaj zawartości czasem do tematu. Tylko daj link do jakiegoś pliku .txt

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Czy masz jakiegoś cachera do php?
Jeszcze nie :mellow: Jestem w trakcie męczenia się z instalacja eacceleratora :) Ale to raczej będzie do optymalizacji php a nie MySQL :) No chyba że się mysle :>?

 

Mój my.cnf

[mysqld]

set-variable = max_connections=200
safe-show-database
skip-locking
skip-name-resolve
thread_concurrency=4
key_buffer = 16M
sort_buffer_size = 16M
record_buffer = 32M
table_cache = 64M
thread_cache_size = 8
connect_timeout = 19
wait_timeout = 19
tmp_table_size=256M
read_rnd_buffer_size=4M
max_allowed_packet = 16M
query_cache_limit = 2M
query_cache_size = 8M
query_cache_type = 1

 

Serwer Core2Duo 2,0 2GB RAM (kimsufi 2XL)

 

mysql> show status: http://krynski.net/show_status.txt

 

mysqlTuner.pl: http://krynski.net/mysqltuner.pl.txt

 

Wydaje mi się że problem musi być gdzieś w mojej konfiguracji MySQL z uwagi na to że dane które obecnie znajdują się na serwerze był wcześniej wrzucone na inny serwer z serii 2XL (było na nim o wiele więcej danych) i tylko był load na poziomie 5-6

 

 

[edit]

Myślę że problem też nie leży w tym że MySQL zapycha się podczas zbyt dużego ruchu z uwagi na to że nie ma w tm czasie zbyt dużo procesów http.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Nie wklejaj zawartości czasem do tematu. Tylko daj link do jakiegoś pliku .txt
Niby dlaczego? Wklejanie zawartości do tematu specjalnie nie przeszkadza, a powoduje, że będzie on użyteczny w przyszłości... W przypadku umieszczania plików na zewnętrznych serwerach, taki temat staje się bezużyteczny i równie dobrze może trafić do kosza zaraz po rozwiązaniu problemu, bo gwarantuję Ci, że za kilka miesięcy tych plików już tam nie będzie...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Niby dlaczego?

Hm? Cholerka... zapomniałem jak bardzo pożyteczny potrafi być wynik show status; :)

Mistrzu rozumiem gdyby było to coś rzeczywiście pożądanego, ale show status...

Rozumiem czepiać się, ale trzeba to robić z głową.

 

Teraz moja propozycja konfiguracji. Po zastosowaniu odczekaj jakieś 24 godziny i ponownie możesz pochwalić się show status;

[mysqld]
local-infile=0
tmpdir		  = /tmp

set-variable = max_connections=200
safe-show-database
skip-locking
skip-bdb
skip-name-resolve
thread_concurrency=4
key_buffer = 128M
join_buffer_size= 8M
sort_buffer_size = 4M
record_buffer = 4M
table_cache = 2048
thread_cache_size = 4M
connect_timeout = 20
wait_timeout = 10
tmp_table_size=128M
max_heap_table_size=64M
read_rnd_buffer_size=4M
max_allowed_packet = 16M
query_cache_limit = 4M
query_cache_size = 32M
query_cache_type = 1
innodb_buffer_pool_size=64M

Mniej więcej tak powinno być OK - ale tak jak mówiłem. Spróbuj zastosować tą konfiguracje. I zobacz po 24 godzinach jak się sprawuje.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Hm? Cholerka... zapomniałem jak bardzo pożyteczny potrafi być wynik show status; :)

Mistrzu rozumiem gdyby było to coś rzeczywiście pożądanego, ale show status...

Rozumiem czepiać się, ale trzeba to robić z głową.

Przyznam szczerze, że nie zwróciłem uwagi na to jakie rzeczy wymieniłeś, gdyż bardziej chodziło mi o samą ideę umieszczania wyników / plików konfiguracyjnych poza forum, bo już któryś raz widzę taką propozycję w ciągu ostatnich kilku dni. Skoro jednak odpisałeś w taki a nie inny sposób, to zwróć uwagę na fakt, że Twoja propozycja znajdowała się pod listą 'przydatnych rzeczy', a nie obok show status, co może sugerować, że dotyczyła ona wszystkich pozycji z tej listy, a nie tylko tej ostatniej :D

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Witam,

 

Postanowiłem nie zakładać nowego tematu tylko zapytać w tym gdyż mam podobny problem, mysql generuje load dochodzący do 400% a load average przez większą część dnia to około 2.0

 

Mój my.cnf

[client]

default-character-set=utf8

 

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

log_slow_queries = /var/log/mysql-slow.log

user=mysql

local-infile=0

tmpdir = /tmp

set-variable = max_connections=300

bind-address=127.0.0.1

safe-show-database

skip-locking

skip-bdb

skip-innodb

thread_concurrency=4

key_buffer = 128M

join_buffer_size= 8M

sort_buffer_size = 4M

record_buffer = 4M

table_cache = 2048

thread_cache_size = 4M

tmp_table_size=128M

max_heap_table_size=64M

read_rnd_buffer_size=4M

max_allowed_packet = 16M

query_cache_limit = 4M

query_cache_size = 32M

query_cache_type = 1

innodb_buffer_pool_size=64M

default-character-set=utf8

character-set-server = utf8

collation-server = utf8_general_ci

 

 

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

 

[mysql]

default-character-set=utf8

 

show status;

http://pokazywarka.pl/nwp9p1/

 

Na serwerze jest xcache, 8GB ramu, procesor QuadCore

Slowlogi czyściutkie

Nie wiem czy można coś optymalizować czy czeka mnie zmiana serwera albo osobny serwer pod bazę danych?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Slowlogi mogą być czyste a zapytania zabierać 0,8 sekundy i ciągnąć cpu. Lepiej napisz co tam masz na tym serwerze.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Tak a dodatkowo umożliwia cachowanie zmiennych z PHP czyli np wyników zapytań mysql o ile skrypt jest pod to przygotowany, a vb jest i jest częściej zalecany niż memcache, chyba że problem jest z konfiguracją xcache

 

Version 1.2.2

Modules Built cacher optimizer

Readonly Protection N/A

Opcode Cache enabled, 67,108,864 bytes, 4 split(s), with 1024 slots each

Variable Cache enabled, 16,777,216 bytes, 4 split(s), with 1024 slots each

Shared Memory Schemes mmap

 

Directive Local Value Master Value

xcache.admin.enable_auth On On

xcache.cacher On On

xcache.coredump_directory no value no value

xcache.count 4 4

xcache.gc_interval 0 0

xcache.mmap_path /dev/zero /dev/zero

xcache.optimizer On On

xcache.readonly_protection no value no value

xcache.shm_scheme mmap mmap

xcache.size 64M 64M

xcache.slots 1K 1K

xcache.stat On On

xcache.test no value no value

xcache.ttl 0 0

xcache.var_count 4 4

xcache.var_gc_interval 300 300

xcache.var_maxttl 0 0

xcache.var_size 16M 16M

xcache.var_slots 1K 1K

xcache.var_ttl 0 0

 

Na serwerze są dyski 7200 więc może to jest problemem:/ Średnio zapytań na sekunde jest 36,25 więc bardzo malutko

Chyba że jeszcze spróbuje tego memcache zamiast xcache...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×