MaNGOS na VPS hostingu s pamětí 512 MB
Stačí pro spuštění a běh WoW emulátoru MaNGOS virtuální server hosting s pamětí pouze 512 MB? Odpověď samozřejmě zní, pro solidní provoz nestačí. Ovšem i tak je zajímavé zkusit, zda vůbec něco takového je možné.
Bojový plán
Samozřejmě 512 MB je hodně málo pro takový herní server a tedy je potřeba si dobře rozmyslet kde a jak maximálně ušetřit paměť.
Web server
Samotný web server Apache vyžaduje pro svůj běh minimum paměti, ale i tak je potřeba jej vůbec na serveru neprovozovat a ušetřit tak jednotky až desítky MB paměti. V kombinaci s PHP může vyžadovat vytížený web server i stovky MB.
MySQL server
Ten je nutný pro běh emulátoru, ale i u něj se dá lecos nastavit v konfiguračním souboru /etc/my.cnf. Především lze nastavit velikost paměťových bufferů pro řazení tabulek. Ve složce /usr/share/mysql lze nalézt ukázkové konfigurační soubory my-small, my-medium, my-large, my-huge.cnf s různou náročností na paměť pro různě zatížené servery. Nejmenší je zde my-small.cnf. Při pohledu do jeho obsahu je patrné, co vše lze v základu nastavit. Odděleně se zde nastavují velikosti pro databázové podsystémy MyISAM a InnoDB. Při prozkoumání tabulek MaNGOSu lze zjistit, že jsou používány oba systémy pro ukládání dat.
Při srovnání běhových proměnných výchozí instalace se šablonami konfigurace zjistíme, že výchozí konfigurace neodpovídá přímo žádné předdefinované.
my-huge.conf:
- MyISAM
- key_buffer_size = 384M
- max_allowed_packet = 1M
- table_open_cache = 512
- sort_buffer_size = 2M
- read_buffer_size = 2M
- read_rnd_buffer_size = 8M
- myisam_sort_buffer_size = 64M
- thread_cache_size = 8
- query_cache_size = 32M
- thread_concurrency = 8 # Try number of CPU's*2 for thread_concurrency
- InnoDB
- innodb_buffer_pool_size = 384M
- innodb_additional_mem_pool_size = 20M
- innodb_log_file_size = 100M # Set .._log_file_size to 25 % of buffer pool size
- innodb_log_buffer_size = 8M
Na tomto výpise jde vidět, které hodnoty by měly být větší a které stačí i menší.
Výchozí poinstalační nastavení:
- MyISAM
- key_buffer_size = 8M
- max_allowed_packet = 1M
- table_open_cache = 64
- sort_buffer_size = 2M
- read_buffer_size = 128k
- read_rnd_buffer_size = 256k
- myisam_sort_buffer_size = 8M
- thread_cache_size = 0
- query_cache_size = 0
- thread_concurrency = 8 # Try number of CPU's*2 for thread_concurrency
- InnoDB
- innodb_buffer_pool_size = 8M
- innodb_additional_mem_pool_size = 1M
- innodb_log_file_size = 5M # Set .._log_file_size to 25 % of buffer pool size
- innodb_log_buffer_size = 1M
Tedy výchozí nastavení je již samo o sobě nastaveno celkem nízko, ale je možné jej ještě snížit podle potřeby.