我在 my.cnf 文件中将最大连接数设置为 2000 左右。
max_connections=2048
我已升级到 5.5.20,现在我在错误日志中看到以下行。
120201 19:40:24 [Warning] Changed limits: max_open_files: 1024 max_connections: 214 table_cache: 400
为什么 mysql 将最大连接值更改为 214 ?
# mysqladmin variables | grep max_connections
| max_connections | 214
操作系统限制的软硬打开文件为1024
# ulimit -Sa | grep "open files"
open files (-n) 1024
# ulimit -Ha | grep "open files"
open files (-n) 1024
实际使用的最大连接数:
# mysql -e"show status like '%used_connections%'"
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| Max_used_connections | 95 |
+----------------------+-------+
对我来说似乎没问题。你不能让 max_connections 大于那个值,因为你的 open_files_limit 太低了。对于每个连接,MySQL 打开几个文件。看看这里。
因此,您将不得不增加操作系统上的打开文件限制,然后,您可以设置更高的 max_connections 值。
尽管我使用的是 CentOS 7 和 MySQL 5.6.26,但这似乎与我在 stackoverflow中回答的问题相同
您需要为 mysql 用户(在 limits.conf 中)和 mysql 服务(在 mysql.service 文件中)提高打开文件的限制
将这两行附加到 /etc/security/limits.conf
将此行附加到 /usr/lib/systemd/system/mysqld.service (在 [service] 部分中)
然后最后重新启动并检查这些错误消息是否已从您的 mysql 错误日志中消失。
这似乎是新 mysqld 中的一些错误。我有同样的问题。将 max_connections 设置为 700 有效,但如果我将其设置为 900,它会在启动期间重置为 214。如果这是一个有目的的更改,那么它会将其降低到 700 或类似的值,值 214 没有意义。
无论如何,使用 ulimit -n 提高描述符限制可以解决问题。