Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

mysqld: Out of memory

[es] :: MySQL :: mysqld: Out of memory

[ Pregleda: 1466 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

maroon984

Član broj: 284654
Poruke: 57
*.teol.net.



+1 Profil

icon mysqld: Out of memory21.10.2011. u 06:32 - pre 151 meseci
Pozdrav,

server je pod Linux-om 64bit, 16G RAM-a, MySQL 5.1.

Variable u my.cnf :

Code:
key_buffer =256M
max_allowed_packet = 8M
table_cache = 256
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 16M
event_scheduler = ON
thread_concurrency = 8

default-character-set=utf8
default-collation=utf8_general_ci
wait_timeout            = 300
interactive_timeout     = 300
query_cache_limit       = 2M
query_cache_size        = 32M
max_connections         = 300
expire_logs_days        = 10
max_binlog_size         = 256M
binlog_format           = ROW
binlog_cache_size       = 32M
max_binlog_cache_size   = 128M

innodb_data_home_dir = /usr/local/mysql/data/
innodb_data_file_path = ibdata1:10000M:autoextend
innodb_log_group_home_dir = /usr/local/mysql/data/

innodb_buffer_pool_size = 10G
innodb_additional_mem_pool_size = 20M

innodb_log_file_size = 64M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50



Kada je došlo do određenog broja konekcija, pojavila se greška i mysqld se restartovao

Code:
[ERROR] /usr/local/mysql/bin/mysqld: Out of memory


U logu je još pisalo :

Code:
key_buffer_size=268435456
read_buffer_size=2097152
max_used_connections=253
max_threads=300
threads_connected=253
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 1494000 K
bytes of memory
Hope that's ok; if not, decrease some variables in the equation.


Gdje mi "škripi" sa memorijom?
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: mysqld: Out of memory21.10.2011. u 12:40 - pre 151 meseci
ocigledno je da si ostao bez ram-a a da je mysql prso zato sto nije mogao da alocira potreban ... da li imas na serveru jos neki proces koji jede ram ?

mysql ti trosi odokativno koliko vidim odavde oko 13G + temporary tabele i ram tabele .. odnosno trosis oko 10.5G u osnovi + 8.5M po svakom tredu. Sa 300 max tredova to izadje na oko 13G. Limiti za heap/memory/temporary tabele su ti 16M tako da tu mozes da pojedes jos rama.

kazes da server ima 16G - ako ti je nesto drugo pojelo ram (oko 3G) na primer apache, mysql nije imao za sebe.
 
Odgovor na temu

maroon984

Član broj: 284654
Poruke: 57
*.teol.net.



+1 Profil

icon Re: mysqld: Out of memory21.10.2011. u 13:37 - pre 151 meseci
Na serveru nema nijedan "veći" proces. Nema apache-a. Server je prvenstveno za MySQL.
Danas sam imao više konekcija (285) nego što je bilo juče kada je pukao (253), i sve je prošlo OK.

Napominjem, u serveru je bilo 8G rama (5G pool buffer). Juče sam ubacio još 8G i alocirao na 10G pool buffer. Pokrenuo sam server, i tada je došlo do pucanja.

Sada mi server troši puno mem

Code:
Mem:  16473764k total, 16376096k used,    97668k free,   162692k buffers


Evo par redova 'top'-a :

Code:
  
   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
  4174 mysql     20   0 19.0g  11g 6284 S    5 71.7 258:57.89 mysqld
  1970 root      20   0 1237m 113m  11m S    1  0.7   2:50.92 java
19844 root      20   0 16800 1260  948 R    1  0.0   0:00.86 top
       1 root      20   0   864  336  272 S    0  0.0   0:01.16 init
       2 root      15  -5     0    0    0 S    0  0.0   0:00.00 kthreadd


Drugi proces koji uzima najvise je java. Koliko vidim 113M uzima...
Da li je rješenje da smanjim innodb pool buffer size?

 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: mysqld: Out of memory21.10.2011. u 13:53 - pre 151 meseci
mysql ti trosi 19G to je lose ... aj baci CEO my.cnf (ako ima nesto sto ne bi na forum, mozes i da ga bacis meni na mail - bogdan.kecman [] crsn.rs ) da vidimo sta moze da bude .. koji je to mysql ?
 
Odgovor na temu

maroon984

Član broj: 284654
Poruke: 57
*.teol.net.



+1 Profil

icon Re: mysqld: Out of memory21.10.2011. u 14:07 - pre 151 meseci
Poslao sam ti ne email.

MySQL je 5.1
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: mysqld: Out of memory21.10.2011. u 15:15 - pre 151 meseci
hm ... 11,068,768,256 bajtova (10.3G) ti je potrosnja "staticna" sto je ok za 16G rama
ali trosis 42,237,952 bajtova (40M) po tredu, na 253 treda gde ti je prso mysql to je 10G dodatnih (ili 12G za max 300 konekcija) !!! tako da je ispao i iz swap-a ... pritom ti mysql non stop swapuje ...

elem .. potrosnja memorije po thread-u je:

thread_stack + net_buffer_length*2 + read_buffer_size + read_rnd_buffer_size + sort_buffer_size + binlog_cache_size

kod tebe je to:

262,144 + 16,384 * 2 + 2,097,152 + 4,194,304 + 2,097,152 + 33,554,432

32M za binlog cache je mnogo

E sad, ti imas 16G ...

ili smanji broj max konekcija, ili smanji ram usage po konekciji ili smanji ibd buffer pool .. sve u svemu mora redukujes taj tesko swapujuci mysql!

moj savet ovako odokativno da smanjis binlog_cache_size na 4M, sa tom promenom 300 tredova trosi 3.6G, statika ti ostaje ista sa 10.3G sto ti ostavlja nesto sitno oko 2G za OS i ostale programe

probaj pa javi
 
Odgovor na temu

maroon984

Član broj: 284654
Poruke: 57
*.teol.net.



+1 Profil

icon Re: mysqld: Out of memory24.10.2011. u 07:34 - pre 151 meseci
Uf...nisam znao da binlog_cache_size size uzima po svakom thread-u.
Imao sam problem prije sa pokretanjem procedura (LINK), pa sam to riješio povećanjem binlog_cache_size i max_binlog_cache_size (LINK). E sada, buni me malo odnos binlog cache i max binlog cache. Je li fora kada se "probije" alocirani binlog cache, da MySQL uzima do max vrijednosti? Ako je tako, onda binlog cache trebam postaviti na najmanju moguću vrijednost. Kažem, meni je povećanje ove dvije vrijednosti riješilo problem oko transakcija i zapisa u binlog.

Broj konekcija ne mogu da smanjim...naprotiv. Uskoro će da ide još više.
Nekako mi je "najbezbolnije" da smanjim innodb buffer pool...
Najgore mi je što je ovo na produkciji, pa ne mogu da čačkam k'o čovjek. :)
Pokušaću prvu ili treću opciju. Bogdane kralj si, šta da ti kažem...
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: mysqld: Out of memory24.10.2011. u 16:55 - pre 151 meseci
veza izmedju ta dva kesha nije bas direktna ..
u 5.5.9 pa na dalje je ponasanje za max_binlog_cache_size malo drugacije .. (jos jedan od razloga za prelazak na 5.5.x :D )

sve u svemu ako su ti preevlike transakcije ne mozes da smanjis binlog_cache_size tako da uzmi istu tu racunicu koju sam ti pokazao pa u odnosu na to smanji ibd buffer pool da se uglavis u kolicinu rama koju imas ... tebi mysql trenutno gadno swapuje a to onda ubija poentu ibd buffer pool-a moras mysql da uglavis u ram .. ako swapuje buffer pool postaje duplo gora varijanta kesiras disk pristup kroz swap - beskorisno zar ne :D

dakle kada vidis da ti je mysql u swap-u, nesto ne valja !! posebno ako ce da ti raste broj konekcija
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: mysqld: Out of memory24.10.2011. u 17:14 - pre 151 meseci
btw najjednostavniji opis za max_binlog_cache_size je da ako je transakcija veca od binlog_cache_size onda se na dalje kesira na disku. Ako je veca i od max_binlog_cache size onda transakcija prsne. Dakle max_binlog_cache_size uopste ne utice na ram usage sto je tebi bitno, a mozes da ga povecas ako imas velike transakcije no racunaj da ce one da prave kes na disku te ce biti znatno sporije ...

u slucaju da radis sa velikim transakcijama cesto - stavis veliki binlog_cache_size, u koliko da imas nekoliko velikih i pun kofer malih transakcija, stavis malo manji binlog_cace_size a tih par velikih neka idu sporo preko diska (max_binlog_cache_size) ...

nadam se da je jasno sto se toga tice, ima tu sad mnogo nekih specijalnih uslova, limita ovoga onoga, no uprosteno to je to
 
Odgovor na temu

maroon984

Član broj: 284654
Poruke: 57
*.teol.net.



+1 Profil

icon Re: mysqld: Out of memory27.10.2011. u 12:04 - pre 151 meseci
Smanjio sam binlog_cache_size na 4M. Sada mi je 12M po konekciji. Povećao sam broj konekcija sa 300 na 400 (4.8G max), plus 10G alocirano na ibd buffer pool < 16G u serveru.
Ovo fercera super (barem za sada), i server mi je `prodisao`! Stalno swapovao, nije mu bilo lako. :)
Kada budem iduci put dizao max_conn, `otkidacu` od ibd buffer pool-a.

Hvala Bogdane ljudino, mnogo toga si mi pojasnio!
 
Odgovor na temu

[es] :: MySQL :: mysqld: Out of memory

[ Pregleda: 1466 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.