GNU/Linux >> Znalost Linux >  >> Linux

Řešení chyby Mysql:Příliš mnoho otevřených souborů

Ú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 otestujte
service 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.


Linux
  1. Chyba příliš mnoha připojení v MySQL

  2. Spuštění udev:udevd inotify_init se nezdařilo:příliš mnoho otevřených souborů

  3. Počítání otevřených souborů na proces

  1. Chyba OpenCA – příliš krátká symetrická délka klíče [Řešení]

  2. Nelze odebrat soubory z adresáře s chybou „Seznam argumentů je příliš dlouhý“

  3. Jak nastavit nginx max otevřené soubory?

  1. MySQL - CHYBA 1045 - Přístup odepřen

  2. Nelze se připojit k serveru MySQL, chyba 111

  3. Závažná chyba:Nelze otevřít a zamknout tabulky oprávnění:Tabulka 'mysql.host' neexistuje