首页 文章

MySQL 5.7中的max_connections

提问于
浏览
13

我遇到了一个问题,在我通过编辑my.cnf设置1000后,MySQL中max_connction的值是214,如下所示:

hadoop@node1:~$ mysql -V
mysql  Ver 14.14 Distrib 5.7.15, for Linux (x86_64) using  EditLine wrapper

MySQL版本:5.7

操作系统版本:ubuntu 16.04LTS

mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 151   |
+-----------------+-------+
1 row in set (0.00 sec)

我们可以看到,max_connections的变量值是151.然后,我编辑MySQL的配置文件 .

yang2@node1:~$ sudo vi /etc/mysql/my.cnf
[mysqld]

character-set-server=utf8
collation-server=utf8_general_ci
max_connections=1000

保存混淆后重启MySQL服务 .

yang2@node1:~$ service mysql restart
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to restart 'mysql.service'.
Multiple identities can be used for authentication:
 1.  yangqiang,,, (yang2)
 2.  ,,, (hadoop)
Choose identity to authenticate as (1-2): 1
Password: 
==== AUTHENTICATION COMPLETE ===
yang2@node1:~$

现在,我们猜max_connection是1000,真的吗?

mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 214   |
+-----------------+-------+
1 row in set (0.00 sec)

这是214.我真的不明白这个结果,谁可以帮助我?谢谢!

5 回答

  • 9

    关于max_connections设置的MySQL文档说:

    增加此值会增加mysqld所需的文件描述符数 . 如果所需的描述符数量不可用,则服务器会减小max_connections的值 .

    这意味着您的MySQL服务器可能没有足够的资源来维护所需数量的描述符 .

    How MySQL Opens and Closes Tables上的MySQL文档清楚地表明:

    table_open_cache和max_connections系统变量会影响服务器保持打开的最大文件数 . 如果增加这些值中的一个或两个,则可能会遇到操作系统对每个进程的打开文件描述符数量施加的限制 . 许多操作系统允许您增加开放文件限制,尽管该方法因系统而异 . 请参阅操作系统文档以确定是否可以增加限制以及如何增加限制 .

  • 10

    您可以手动设置值,例如

    set global max_connections=500;
    

    但是,重新启动MySQL后,该值将重置为214 .

    解决方案取决于(版本)操作系统和MySQL版本 . 随着Ubuntu 16.04和MySQL> = 5.7.7以下工作:

    systemctl编辑mysql

    输入

    [Service]
    LimitNOFILE=8000
    

    保存,这将创建一个新文件

    /etc/systemd/system/mysql.service.d/override.conf

    并重新启动服务器:

    systemctl daemon-reload
    systemctl restart mysql
    

    对于其他环境:Can not increase max_open_files for Mysql max-connections in Ubuntu 15

  • 0

    /etc/pam.d/common-session 中添加 session required pam_limits.so (默认情况下通常不存在) .

    /etc/security/limits.conf 中你可以添加一些限制:

    *   hard    nofile  8192
    *   soft    nofile  4096
    

    还要检查 ulimit -a 打开文件限制 . 你可以用 ulimit -n 4096 增加

    确保最后重启 .

  • 0

    请遵循以下步骤:

    cp /lib/systemd/system/mysql.service /etc/systemd/system/
    echo -e "\r\nLimitNOFILE=infinity" >> /etc/systemd/system/mysql.service
    echo "LimitMEMLOCK=infinity" >> /etc/systemd/system/mysql.service
    sudo systemctl daemon-reload
    sudo service mysql restart
    

    并将以下行更改或添加到文件 /etc/mysql/mysql.conf.d/mysqld.cnf

    [mysqld]
    max_connections=110
    

    只是这个! @Mahdi_Mohammadi

  • 1

    1.编辑mysql服务文件

    #sudo cat /etc/systemd/system/multi-user.target.wants/mysql.service
    # MySQL systemd service file
    
    [Unit]
    Description=MySQL Community Server
    After=network.target
    
    [Install]
    WantedBy=multi-user.target
    
    [Service]
    Type=forking
    User=mysql
    Group=mysql
    PIDFile=/run/mysqld/mysqld.pid
    PermissionsStartOnly=true
    ExecStartPre=/usr/share/mysql/mysql-systemd-start pre
    ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid
    TimeoutSec=600
    Restart=on-failure
    RuntimeDirectory=mysqld
    RuntimeDirectoryMode=755
    ##this bellow for tuneup 
    LimitNOFILE=infinity
    LimitMEMLOCK=infinity
    

    2.edit /etc/mysql/mysql.conf.d/mysqld.cnf max_connections = 99999

相关问题