1、当前mysql数据库可以打开的文件数目,打开一个表的动作就是打开一个文件,当然和连接数也有关系,总结:只要有文件读写都算一次的。 SQL语句:
show variables like '%open%';
2、最大连接数,也就是目前数据库所允许的最多的连接数。SQL语句:
show variables like '%max_connections%';
3、实时的数据库现在的有效连接数。SQL语句:
show status like '%Threads_connected%';
4、数据库新建的连接数。SQL语句:
show status like '%Threads_create%';
如果数据库使用的并不多,也就是业务并不繁忙,那么可能以上数值都够用的,如果高并发,大流量的情况,很显然,数据库会吃不消报警的。如何解决?更改数据库的设定,使得它可以打开更多的表,保持更多的连接即可。
第一步:调整内核,使得用户层面的打开文件数提高
/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)
————————————————