GNU/Linux >> Linux の 問題 >  >> Linux

MySQL サーバー エラー – 「新しいスレッドを作成できません (errno 11)」

OSエラー11は「リソースが一時的に利用できません」です。新しいスレッドを作成しようとしたときにこのエラーを受け取る最も一般的な原因は、プロセスのカーネルにヒットして、開いているファイル記述子に制限を適用したことです。 2 番目に多い原因は、プロセス/スレッドの数がプロセスのカーネルによって強制された制限に達したことです。

関連する要因は次のとおりです。

<オール>
  • システム全体の制限:sysctl -e fs.file-max &&sysctl -e kernel.threads-max
  • プロセスごとの制限 (*新しい* シェル):ulimit -n, grep nofile /etc/security/limits.conf および ulimit -u, grep nproc /etc/security/limits.conf.
  • mysqld の open_files_limit 設定 (mysql> は「open_files_limit」などのグローバル変数を表示します;)
  • プロセスが使用するオープン FD とスレッドの数に影響を与える mysqld 内のその他の設定 (max_connections、thread_cache_size、table_open_cache、table_definition_cache、innodb_open_files など)
  • ほとんどの Linux システムでデフォルトで 1024 に設定されている open-files-limit に実際に到達したと仮定すると、次の手順を実行することで問題を回避できるはずです。

    1. my.cnf ファイルに次の変更を加えて、mysqld で明示的に開いているファイルの制限を増やします:

    [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. mysqld サービスを再起動します:

    /etc/init.d/mysql restart

    NPROC 制限

    代わりに nproc 制限が原因であると思われる場合 (CentOS 6 では /etc/security/limits.conf でこれに低い制限が設定されています)、いくつかの異なる方法で nproc 制限を増やすことができます。

    1. limits.conf を編集します:

    たとえば、limits.conf ファイルで mysql ユーザーの制限を設定できます。

    mysql soft nproc 10240
    mysql hard nproc 40960

    limits.conf はログイン シェルにのみ適用され、init または systemd によって開始されたプロセスには影響しないことに注意してください。 limits.conf への変更は新しいログインにのみ適用されます。新しいセッションを開始するには、ログアウトしてからログインする必要があります。

    2. mysqld_safe スクリプトを編集します:

    mysqld_safe スクリプトの先頭近くに ulimit 呼び出しを追加することもできます。例:

    $ ulimit -u 40000

    3.ラッパー スクリプトを使用する:

    以下の投稿「ラッパー スクリプトを使用して MySQL サーバーのプロセスごとのカスタム属性を設定する方法」を参照してください。

    ラッパー スクリプトを使用して、MySQL サーバーのプロセスごとのカスタム属性を設定する方法

    変更を有効にするには、mysqld を再起動する必要があります。


    Linux
    1. プログラムで新しい cron ジョブを作成するにはどうすればよいですか?

    2. MySQL サーバー エラー 111 に接続できません

    3. エラー:「ソケット '/var/run/mysqld/mysqld.sock' (2) を介してローカル MySQL サーバーに接続できません」 -- /var/run/mysqld/mysqld.sock がありません

    1. 新しいデータベースを作成し、MySQL/MariaDBで使用します

    2. エラー1130UbuntuServer 12.04でMysqlに接続していますか?

    3. MySQL から権限をエクスポートして、新しいサーバーにインポートするにはどうすればよいですか?

    1. DNSサーバーを作成する

    2. 新しいユーザーを作成し、MySQLで権限を付与します

    3. Pitchfork:サーバーを作成する