Úvod:
Když jsem upgradoval z Mysql 5.5 na 5.6, najednou se na některých webech objevila následující chyba:...... Too many open files
Problém souvisí se současnými omezeními danými systému a systému PAM k otevření max. 1024 souborů. Po nějakém průzkumu jsem níže našel tuto stránku, která je v němčině, ve které je vysvětleno následující:
https://www.filewalker.de/ulimit-mysql-open_files_limit/
KROK:
Zkontrolujte limity otevření souborů nebo spuštění serveru mysql:mysql -p -u root
mysql> SHOW VARIABLES LIKE 'open%';
Velmi možný výstup:+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| open_files_limit | 1024 |
+------------------+-------+
1 row in set (0.00 sec)
To znamená, že server Mysql otevře maximum 1024, což se zdá být příliš málo pro Mysql 5.6.
Zvýšení tohoto limitu
Upravte soubor /etc/security/limits.conf a přidejte následující řádky:mysql hard nofile 65535
mysql soft nofile 65535
Tím se zvýší limit otevřených souborů na 65535 pro uživatele mysql pouze.
Pokud chcete tento limit zvýšit pro všechny uživatele, nahraďte slovo mysql pro *
např.* hard nofile 65535
* soft nofile 65535
A podle tohoto webu upravte soubor /etc/pam.d/common-session a na konec přidejte tento řádek:session required pam_limits.so
Poznámka: Nejsem si však jistý, zda je tento krok skutečně potřebný. Někteří lidé to zkusili bez něj a také to fungovalo. Pro mě v Debian Wheezy jsem to musel udělat, jinak jsem stále dostával chybu.
U systémů, které používají systemd místo InitV, proveďte následující:
Upravte soubor /usr/lib/systemd/system/mysqld.service
Na konec přidejte tyto 2 řádky:LimitNOFILE=65535
LimitNPROC=65535
Restartujte server Mysql a znovu jej otestujteservice mysql restart
mysql -p -u root
mysql>> SHOW VARIABLES LIKE 'open%';
Nadějný výstup:+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| open_files_limit | 65535 |
+------------------+-------+
1 row in set (0.00 sec)
Tato chyba by se již neměla zobrazovat.