Řešení 1:
To je naprosto normální.
Při startu systému se spustí řada služeb. Tyto služby se samy inicializují, načítají konfigurační soubory, vytvářejí datové struktury a tak dále. Používají nějakou paměť. Mnoho z těchto služeb již nikdy nebude spuštěno po celou dobu provozu systému, protože je nepoužíváte. Některé z nich mohou běžet v hodinách, dnech nebo týdnech. Přesto jsou všechna tato data ve fyzické paměti.
Systém tato data samozřejmě nemůže zahodit. Nemůže dokázat, že k němu nebude doslova nikdy přístup. Jednou z těchto služeb může být například ta, která vám poskytuje vzdálený přístup ke schránce. Možná jste ho nepoužili za týden, ale pokud ho použijete, bude fungovat lépe.
Systém však ví, že by mohl chtít tuto fyzickou paměť použít pro věci, jako je disková mezipaměť nebo jiné způsoby, které zlepší výkon. Takže to dělá oportunní swapování. Když nemá nic lepšího na práci, zapisuje data, která nebyla velmi dlouho použita, na disk pomocí odkládacího prostoru. Stále však uchovává stránky ve fyzické paměti. Stále k nim tedy lze přistupovat, aniž byste je museli vyměňovat.
Nyní, pokud systém později potřebuje tuto fyzickou paměť pro něco jiného, může tyto stránky jednoduše zahodit, protože je již zapsal k výměně. To dává systému to nejlepší z obou světů. Data jsou stále uchovávána v paměti, takže k nim lze přistupovat, aniž byste je museli číst z disku. Pokud ale systém potřebuje tuto paměť pro jiný účel, nebude ji muset nejprve vypisovat. Velká výhra všude kolem.
Řešení 2:
To se může stát, pokud jste někdy v minulosti potřebovali více paměti, než máte fyzickou RAM v počítači. V té době budou některá data zapsána do odkládacího prostoru.
Když se později paměť uvolní, data ze swapu se automaticky nepřečtou zpět do RAM:to se stane pouze tehdy, když data ve swapu skutečně potřebuje nějaký proces. To je naprosto normální.
Pokud jde o váš proces mysql:to vše závisí na typu dotazů, které spouštíte. Teoreticky by k takovému zatížení mohly pravděpodobně stačit 2 velmi složité dotazy, bez ohledu na počet vašich uživatelů. Můžete povolit protokol pomalých dotazů, abyste získali lepší přehled o tom, které dotazy jsou náročné na načítání.
Řešení 3:
Toto chování můžete také změnit do sysctl -w vm.swappiness=10
, což výrazně sníží využití swapu, dokud nebude skutečně potřeba.
Pokud jde o MySQL, provedli jste alespoň základní konfigurační test pomocí skriptu tuning-primer.sh?