Last Updated on 08/08/2025 by administrator
Proxmox – Jak snížit alokaci RAM pro MySQL v LXC
Proxmox – Jak snížit alokaci RAM pro MySQL v LXC
Motivace:
Provozuji menší LXC kontejner na Proxmox, na kterém mi běží aplikace Speedtest pro měření rychlosti doma. Všiml jsem si, že po upgradu LXC konteineru, se mi zvýšila alokace paměti pro MySQL i přesto, že se provedl minor patch MySQL.
Původní verze MySQL – před apt-upgrade:
root@speedtest-u24:~# mysql --version mysql Ver 8.0.42-0ubuntu0.24.04.1 for Linux on x86_64 ((Ubuntu))
Aktuální verze MySQL – po apt-upgrade:
root@speedtest-u24:~# mysql --version mysql Ver 8.0.42-0ubuntu0.24.04.2 for Linux on x86_64 ((Ubuntu))
MySQL si tak alokovala přes 66% celkové kapatity z 512 MB RAM .
Není to bug, ale změna výchozí konfigurace v MySQL 8, která není přátelská k malým LXC kontejnerům. Stačí ale upravit pár parametrů v configu a MySQL bude běžet i na 512 MB RAM bez problémů.
Implementace:
Jak snížit alokaci RAM pro MySQL v LXC:
Vytvořit nový konfigurační soubor lowmem.cnf v /etc/mysql/conf.d/ složce :
vi /etc/mysql/conf.d/lowmem.cnf
a vložit do něj následující řádky níže:
[mysqld] # Menší InnoDB buffer innodb_buffer_pool_size = 64M innodb_buffer_pool_instances = 1 # Menší redo log a log buffer innodb_log_file_size = 32M innodb_log_buffer_size = 8M # Omezit počet spojení max_connections = 20 # Menší dočasné tabulky tmp_table_size = 16M max_heap_table_size = 16M # Vypnout performance schema (šetří RAM) performance_schema = off # Malá thread cache thread_cache_size = 2
Provést restart MySQL:
systemctl restart mysql
Ověření úspory paměti:
root@speedtest-u24:~# top
Jak lze vidět spotřeba RAM pro MySQL klesla z 66 % na 27 %:
Zdroj:
[1] https://github.com/iistarion/lowmem-mysql/blob/master/low-memory-my.cnf