Documentation Home
MySQL 8.0 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 36.1Mb
PDF (A4) - 36.2Mb


このページは機械翻訳したものです。

B.3.2.16 ファイルが見つからず同様のエラーが発生しました

MySQL から errno 23 または errno 24ERROR 'file_name' not found (errno: 23)Can't open file: file_name (errno: 24)、またはその他のエラーが発生した場合は、MySQL サーバーに十分なファイル記述子が割り当てられていないことを意味します。 perror ユーティリティーを使用すると、エラー番号の意味の説明を取得できます。

shell> perror 23
OS error code  23:  File table overflow
shell> perror 24
OS error code  24:  Too many open files
shell> perror 11
OS error code  11:  Resource temporarily unavailable

ここでの問題は、mysqld が同時にオープンしたままにしようとしているファイルが多すぎることです。 一度に多数のファイルをオープンしないように mysqld に通知するか、mysqld が使用できるファイルディスクリプタの数を増やします。

一度にオープンするファイル数を少なくするように mysqld に通知するには、table_open_cache システム変数の値 (デフォルト値は 64) を減らすことによってテーブルキャッシュを小さくします。 セクション8.4.3.1「MySQL でのテーブルのオープンとクローズの方法」で説明されているように、状況によっては、サーバーがキャッシュサイズを一時的に拡張しようとする可能性があるため、これによってファイルディスクリプタの不足を完全に防ぐことはできません。 max_connections の値を減らすことによっても、オープンファイルの数が減少します (デフォルト値は 100)。

mysqld が使用できるファイルディスクリプタの数を変更するには、mysqld_safe--open-files-limit オプションを使用するか、open_files_limit システム変数を設定します。 セクション5.1.8「サーバーシステム変数」を参照してください。 これらの値を設定するもっとも簡単な方法は、オプションファイルにオプションを追加することです。 セクション4.2.2.2「オプションファイルの使用」を参照してください。 オープンファイルの制限の設定をサポートしていない古いバージョンの mysqld を使用している場合は、mysqld_safe スクリプトを編集できます。 このスクリプトには、コメントアウトされた行 ulimit -n 256 があります。 # 文字を削除してこの行をコメント解除し、数字 256 を変更して、mysqld が使用できるファイルディスクリプタの数を設定します。

--open-files-limit および ulimit を使用すると、ファイルディスクリプタの数を増やすことができますが、オペレーティングシステムが課している制限が上限となります。 mysqld_safe または mysqldroot として起動した場合にのみオーバーライドできる堅固な制限もあります (この場合、起動後に root として実行され続けないように、--user オプションを指定してサーバーを起動する必要もあります)。 各プロセスで使用できるファイルディスクリプタの数に関するオペレーティングシステムの制限を緩める必要がある場合は、システムのドキュメントを参照してください。

注記

tcsh シェルを実行している場合、ulimit は機能しません。また、tcsh では、現在の制限を問い合わせたときに不正な値が報告されます。 この場合は、sh を使用して mysqld_safe を起動してください。