MySQL自动调整最大连接值


11

我在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     |
+----------------------+-------+

1
尝试设置较高的ulimit打开文件,例如4096。– ulimit -n 4096

行为改变了吗?我有5.0.77版本,但没有注意到此问题。仅当我升级到5.5.20时,我才更改了值!
shantanuo'2

1
只是要问明显的问题。您是否已确认升级没有更改my.cnf?另外,什么操作系统?这是由包管理器(例如)安装的yum吗?如果是这样,哪个包裹?
Derek Downey '02

Answers:


6

对我来说似乎还可以。max_connections不能大于该值,因为open_files_limit太低。对于每个连接,MySQL都会打开几个文件。在这里看看。

因此,您将必须增加操作系统上打开文件的限制,然后,您可以设置更高的max_connections值。


5

尽管我使用的是CentOS 7和MySQL 5.6.26,但这似乎与我在此处的stackoverflow中回答的问题相同。

您需要同时限制mysql用户(在limits.conf中)和mysql服务(在mysql.service文件中)的打开文件限制

将这两行附加到/etc/security/limits.conf

mysql hard nofile 65535
mysql soft nofile 65535

将此行附加到/usr/lib/systemd/system/mysqld.service(在[service]部分中)

LimitNOFILE=65535

然后最后重新启动,并检查这些错误消息是否已从mysql错误日志中消失。


另一种解决方案是:dba.stackexchange.com/questions/32987/...
导航

@Nav-是的,如果您的操作系统不允许mysqld使用适当数量的文件句柄,则无法使用配置的最大连接数
MNB

另外,Ubuntu 15.04+还需要一种不同的方法:stackoverflow.com/questions/23977095/…–
Nav

0

这似乎是新mysqld中的一些错误。我有同样的问题。将max_connections设置为700是可以的,但是如果我将其设置为900,则在启动过程中会将其重置为214。如果这是有目的的更改,那么它将降低到700或类似的值,则值214没有意义。
无论如何,使用ulimit -n增加描述符限制可以解决该问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.