GNU/Linux >> Znalost Linux >  >> Linux

Chyba serveru MySQL – „Nelze vytvořit nové vlákno (chyba 11)“

Chyba operačního systému 11 je „Prostředek dočasně nedostupný“. Nejčastější příčinou této chyby při pokusu o vytvoření nového vlákna je to, že jádro procesu vynutilo limit na otevřené popisovače souborů. Druhou nejčastější příčinou je dosažení limitu počtu procesů/vlákna vynuceného jádrem procesu.

Zde jsou zahrnuté faktory:

  1. Celosystémové limity:sysctl -e fs.file-max &&sysctl -e kernel.threads-max
  2. Omezení na jednotlivé procesy (v *novém* shellu):ulimit -n, grep nofile /etc/security/limits.conf a ulimit -u, grep nproc /etc/security/limits.conf.
  3. Nastavení open_files_limit v mysqld (mysql> zobrazuje globální proměnné jako „open_files_limit“;).
  4. Další nastavení v rámci mysqld, která mohou ovlivnit počet otevřených FD a vláken, která může proces používat (max_connections, thread_cache_size, table_open_cache, table_definition_cache, innodb_open_files atd.)

Za předpokladu, že jsme ve skutečnosti dosáhli limitu otevřených souborů, který je na většině systémů Linux nastaven na 1024 – měli bychom být schopni se tomuto problému vyhnout provedením těchto kroků:

1. Zvýšení explicitního limitu otevřených souborů v mysqld provedením této změny v souboru my.cnf:

[mysqld]

# Here X could be (max_connections+table_cache)*3  OR you could simply set it very high, for example 32000
open-files-limit = X 

2. Restartujte službu mysqld:

/etc/init.d/mysql restart

Limity NPROC

Pokud se místo toho zdá, že příčinou je limit nproc (CentOS 6 na to dává nízký limit v /etc/security/limits.conf), můžeme limit nproc zvýšit několika různými způsoby.

1. Upravit limity.conf:

Limity pro uživatele mysql můžeme nastavit v souboru limited.conf, například:

mysql soft nproc 10240
mysql hard nproc 40960

Všimněte si, že limited.conf se vztahuje pouze na přihlašovací shelly a neovlivňuje procesy spouštěné init nebo systemd. Jakékoli změny v limitech.conf se budou vztahovat pouze na nová přihlášení, pro zahájení nové relace se musíte odhlásit a přihlásit.

2. Upravte skript mysqld_safe:

Můžeme také jednoduše přidat volání ulimit v horní části skriptu mysqld_safe, například:

$ ulimit -u 40000

3. Použijte obalový skript:

Viz níže uvedený příspěvek o „Jak používat Wrapper Script k nastavení vlastních atributů pro každý proces pro MySQL Server“.

Jak používat Wrapper Script k nastavení vlastních atributů pro každý proces pro MySQL Server

Aby se změny projevily, budeme muset restartovat mysqld.


Linux
  1. Vytvořte server DNS

  2. Vytvořte nového uživatele a udělte oprávnění v MySQL

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

  1. Je errno vlákno bezpečné?

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

  3. Jak mohu exportovat oprávnění z MySQL a poté importovat na nový server?

  1. Vytvořte novou databázi a použijte ji v MySQL/MariaDB

  2. Chyba 1130 při připojování k Mysql na serveru Ubuntu 12.04?

  3. Pitchfork:Vytvořte server