Linux MySQL连接数的查看和最大连接数的调整

       Linux MySQL连接数的查看和最大连接数的调整

MariaDB [(none)]> show variables like '%open%';#当前mysql数据库可以打开的文件数目,打开一个表的动作就是打开一个文件哦,当然,和连接数也有关系,总之,只要有文件读写都算一次的。现在的值为1024
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| have_openssl      | YES   |
| innodb_open_files | 431   |
| open_files_limit  | 1024  |
| table_open_cache  | 431   |
+-------------------+-------+
4 rows in set (0.01 sec)

MariaDB [(none)]> show variables like '%max_connections%';#最大连接数,也就是目前数据库所允许的最多的连接数是151
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| extra_max_connections | 1     |
| max_connections       | 151   |
+-----------------------+-------+
2 rows in set (0.01 sec)

 


MariaDB [(none)]> show status like '%Threads_connected%';#实时的数据库现在的有效连接数,现在值为1
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| Threads_connected | 1     |
+-------------------+-------+
1 row in set (0.00 sec)

MariaDB [(none)]> show status like '%Threads_create%';#数据库新建的连接数,现在值为4
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| Threads_created | 4     |
+-----------------+-------+
1 row in set (0.00 sec)

执行ulimite -a 命令,结果如下(open files  (-n) 1024):

[root@centos7 ~]# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 15718
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 15718
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

 

如果数据库使用的并不多,也就是业务并不繁忙,那么可能以上数值都够用的,如果高并发,大流量的情况,很显然,数据库会吃不消报警的。如何解决?更改数据库的设定,使得它可以打开更多的表,保持更多的连接即可。

第一步:调整内核,使得用户层面的打开文件数提高

/etc/security/limits.conf  #该文件末尾添加如下内容:

* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* soft nproc 65535

第二步:vim /usr/lib/systemd/system/mariadb.service#只要是服务启动脚本就行了。

【server】下添加:

LimitNOFILE=65535#注意,这个是区分大小写的,不可大意。
LimitNPROC=65535

第三步:修改MySQL主配置文件my.cnf ,重新加载配置文件,重启服务

vim /etc/my.cnf

在mysqld字段内添加

max_connections=65535

保存文件,退出,执行命令 :systemctl daemon-reload && systemctl restart mariadb

第四步:验证结果

MariaDB [(none)]> show global variables like '%max_connec%';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| extra_max_connections | 1     |
| max_connect_errors    | 100   |
| max_connections       | 64725 |
+-----------------------+-------+
3 rows in set (0.00 sec)

MariaDB [(none)]> show global variables like '%open%';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| have_openssl      | YES   |
| innodb_open_files | 400   |
| open_files_limit  | 65535 |
| table_open_cache  | 400   |
+-------------------+-------+
4 rows in set (0.00 sec)

 

 


 

 

你可能感兴趣的:(Linux,数据库,mysql,java,linux,centos)