MySQLを再起動するたびに、次の警告が表示されます。
[警告]バッファリングされた警告:変更された制限:max_connections:214(要求された800)
したがって、max_connections
変数を変更する必要があります。
set global max_connections = 800;
ただし、/etc/my.cf
にはmax_connections
が設定されています。
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
max_connections = 800
mysqld.service
も変更しました:
# Start main service
ExecStart=/usr/bin/mysqld_safe --defaults-file=/etc/my.cnf
Centosの最大オープンファイルも1024から2000に更新しました。
ulimit -Sa | grep "open files"
open files (-n) 2000
しかし、問題は解決しません。
MySQLログの開始:
150924 13:15:04 mysqld_safe mysqld from pid file
/var/run/mysqld/mysqld.pid ended
150924 13:15:04 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
2015-09-24 13:15:04 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2015-09-24 13:15:04 0 [Note] /usr/sbin/mysqld (mysqld 5.6.25) starting as process 29997 ...
2015-09-24 13:15:04 29997 [Warning] Buffered warning: Changed limits: max_open_files: 1024 (requested 5000)
2015-09-24 13:15:04 29997 [Warning] Buffered warning: Changed limits: max_connections: 214 (requested 800)
2015-09-24 13:15:04 29997 [Warning] Buffered warning: Changed limits: table_open_cache: 400 (requested 2000)
2015-09-24 13:15:04 29997 [Note] Plugin 'FEDERATED' is disabled.
2015-09-24 13:15:04 29997 [Note] InnoDB: Using atomics to ref count buffer pool pages
2015-09-24 13:15:04 29997 [Note] InnoDB: The InnoDB memory heap is disabled
2015-09-24 13:15:04 29997 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2015-09-24 13:15:04 29997 [Note] InnoDB: Memory barrier is not used
2015-09-24 13:15:04 29997 [Note] InnoDB: Compressed tables use zlib 1.2.3
2015-09-24 13:15:04 29997 [Note] InnoDB: Using Linux native AIO
2015-09-24 13:15:04 29997 [Note] InnoDB: Using CPU crc32 instructions
2015-09-24 13:15:04 29997 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2015-09-24 13:15:04 29997 [Note] InnoDB: Completed initialization of buffer pool
2015-09-24 13:15:04 29997 [Note] InnoDB: Highest supported file format is Barracuda.
2015-09-24 13:15:04 29997 [Note] InnoDB: 128 rollback segment(s) are active.
2015-09-24 13:15:04 29997 [Note] InnoDB: Waiting for purge to start
2015-09-24 13:15:04 29997 [Note] InnoDB: 5.6.25 started; log sequence number 24337684937
2015-09-24 13:15:04 29997 [Note] Server hostname (bind-address): '*'; port: 3306
2015-09-24 13:15:04 29997 [Note] IPv6 is available.
2015-09-24 13:15:04 29997 [Note] - '::' resolves to '::';
2015-09-24 13:15:04 29997 [Note] Server socket created on IP: '::'.
2015-09-24 13:15:04 29997 [Note] Event Scheduler: Loaded 0 events
2015-09-24 13:15:04 29997 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.6.25' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Server (GPL)
すべてのGoogleソリューションを試しましたが、結果は常に同じです...
MySQLはCentOS Linuxリリース7.1.1503(コア)で実行されています。
ありがとう!
MySQL 5.6.26を搭載したCentOS 7でまったく同じ問題に1〜2時間かかったので、ここで解決策を示します。既に完了しているように見える(mysqlユーザーの)最大オープンファイルを上げることに加えて、「LimitNOFILE = 65535」(または設定する制限の高さに応じて同様)を追加する必要がありますmysql.service定義ファイル。
だから私にとっての完全な解決策は次のとおりでした
これらの2行を/etc/security/limits.confに追加します
mysql hard nofile 65535
mysql soft nofile 65535
この行を/usr/lib/systemd/system/mysqld.serviceに追加します([service]セクション)
LimitNOFILE=65535
最後に再起動して、これらのエラーメッセージがmysqlエラーログから消えていることを確認します。
編集:@SieGeL 以下 に感謝します。「。service」ファイルを直接更新すると、アップグレード時に編集内容が失われます。アップグレード後に編集内容を保持するには、/ etc/systemd/system/mysqld.service.dに追加のconfファイルを作成してsystemdオーバーライドを使用します
更新中に上書きされるため、元のsystemdファイルを編集することはお勧めしません。
制限を変更するには、次の手順を実行します。
mkdir /etc/systemd/system/mysqld.service.d
そのディレクトリ内に、新しいファイルlimits.confを作成し、そのファイルに次を追加します。
[Service]
LimitNOFILE = 65535
最後にsystemdをリロードします:
systemctl daemon-reload
mysqldを再起動して、変更を有効にします。
systemctl restart mysqld
次のクエリを使用して、変更が成功したことを確認します。
mysql> show variables like '%file%';
次のような行があります。
| open_files_limit | 65535
これで、変更はMySQLの更新に耐えられます。