mysql - Speicherbrauch

MySQL, PostgreSQL, SQLite
flotte
Posts: 93
Joined: 2002-09-13 23:27

mysql - Speicherbrauch

Post by flotte » 2004-06-07 12:23

Habe kein richtiges Problem, aber eine Verständnisfrage.
Der RSS-Wert bei "top" für die mysq-Prozesse steigt im Laufe der Zeit stetig an. Wenn Mysql gestartet wird, liegt RSS bei ca. 14 MB. Jetzt nach einem Tag Laufzeit liegen die RSS-Werte bei 58 MB

Code: Select all

 12:02pm  up 97 days, 22:59,  1 user,  load average: 0.28, 0.29, 0.27
120 processes: 116 sleeping, 2 running, 2 zombie, 0 stopped
CPU states:  0.1% user,  0.5% system,  0.0% nice, 99.2% idle
Mem:  1550064K av, 1162560K used,  387504K free,       0K shrd,   35680K buff
Swap: 1052248K av,   34500K used, 1017748K free                  789728K cached

  PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME COMMAND
 6085 mysql     15   0 59240  57M  2252 S     0.0  3.8   0:04 mysqld
 6087 mysql     15   0 59240  57M  2252 S     0.0  3.8   0:03 mysqld
 6088 mysql     20   0 59240  57M  2252 S     0.0  3.8   0:00 mysqld
 6089 mysql     20   0 59240  57M  2252 S     0.0  3.8   0:00 mysqld
 6090 mysql     20   0 59240  57M  2252 S     0.0  3.8   0:00 mysqld
 6091 mysql     21   0 59240  57M  2252 S     0.0  3.8   0:00 mysqld
 6092 mysql     15   0 59240  57M  2252 S     0.0  3.8   0:00 mysqld
 6093 mysql     15   0 59240  57M  2252 S     0.0  3.8   0:00 mysqld
 6094 mysql     16   0 59240  57M  2252 S     0.0  3.8   0:00 mysqld
 6095 mysql     15   0 59240  57M  2252 S     0.0  3.8   0:25 mysqld
 7304 mysql     17   0 59240  57M  2252 S     0.0  3.8   0:00 mysqld
27230 mysql     18   0 59240  57M  2252 S     0.0  3.8   0:00 mysqld
27264 mysql     15   0 59240  57M  2252 S     0.0  3.8   0:00 mysqld
Ich betreibe mysql 4.015,.
Die Config sieht so aus:

Code: Select all

[mysqld]
port		= 3306
socket		= /var/lib/mysql/mysql.sock
skip-locking
key_buffer = 64M
max_allowed_packet = 1M
table_cache = 256
sort_buffer_size = 1M
net_buffer_length = 8K
myisam_sort_buffer_size = 16M
language = /usr/share/mysql/german/
query_cache_size = 32M
query_cache_limit = 512K
query_cache_type = 1
max_connections=150

#skip-networking
log-bin
server-id	= 1
#master-host     =   <hostname>
#master-user     =   <username>
#master-password =   <password>
#master-port     =  <port>
#log-bin
#tmpdir		= /tmp/		
#log-update 	= /path-to-dedicated-directory/hostname
#bdb_cache_size = 4M
#bdb_max_lock = 10000
#innodb_data_home_dir = /var/lib/mysql/
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /var/lib/mysql/
#innodb_log_arch_dir = /var/lib/mysql/
#innodb_buffer_pool_size = 16M
#innodb_additional_mem_pool_size = 2M
#innodb_log_file_size = 5M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50

[mysqldump]
quick
max_allowed_packet = 32M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout
Meine Frage:
Ich nehme an, das die steigenden Rescourcen mit dem aktiviertem Querycache zusammenhängen. Wie hoch kann der RSS-Wert mit dieser Konfiguration theoretisch steigen??
Welche Einstellungen sind dafür relevant?

mfg
flotte

kase
Posts: 1031
Joined: 2002-10-14 22:56

Re: mysql - Speicherbrauch

Post by kase » 2004-06-07 13:58

Wenn auf deinem Rechner lediglich ein mysql Server läuft (kein Apache usw) kannst du mal die "huge" Config probieren.

Der verwendete Speicher hängt nicht (nur) vom Querycache ab, IMHO sogar nur zum kleinsten Teil.

So sieht das ganze bei mir aus mit 50 MB Query Cache:

Code: Select all

21007 mysql     14   0  423M 423M  3908 S    14.1 20.9   0:01 mysqld
20995 mysql      9   0  423M 423M  3908 S     6.4 20.9   0:05 mysqld
20895 mysql      9   0  423M 423M  3908 S     5.0 20.9   0:18 mysqld
20818 mysql      9   0  423M 423M  3908 S     4.9 20.9   0:52 mysqld
... (davon ca 20 Prozesse)
Edit: Soviel ich weiß, stimmt der "share" Wert bei mysql nicht ganz. Der ist deutlich höher. Bei mir verbraucht der mySQL Server ca 1,7 GB Ram, obwohl 20*412RSS ja deutlich mehr ergeben müsste.

odysseus
Posts: 115
Joined: 2003-02-07 10:21

Re: mysql - Speicherbrauch

Post by odysseus » 2004-06-07 17:12

Du hast ja gar keine Timeouts definiert.
Versuch mal etwas in der Art:

Code: Select all

[mysqld]
...
set-variable    = wait_timeout=60
set-variable    = interactive_timeout=60
...

oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim

Re: mysql - Speicherbrauch

Post by oxygen » 2004-06-07 20:35

log-bin sollte auch raus, wenn du nicht gerade replikation verwendest.

flotte
Posts: 93
Joined: 2002-09-13 23:27

Re: mysql - Speicherbrauch

Post by flotte » 2004-06-07 20:44

Das "set-variable" hatte ich nciht verwendet, weil es in der Default-Datei auch nicht vorhanden war.
Hatte es jetzt "spaßeshalber" mal vor die Einträge gesetzt, aber dann lies sich mysql nicht mehr starten...
Nach Entfernerung derselben alls wieder OK.
Auch ohne "set-variable" werden die Einstellungen übernommen, was man ja bei der Ausgabe der Variablen prüfen kann.

Die timeout-Sachen habe ich eingetragen und das logbin deaktiviert. Danke für diese Tips. Konnte das auch mittlerweile in anderen Forenbeiträgen erlesen.