web-dev-qa-db-ja.com

MySQL 5.7のmax_connections

次のように、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

OSバージョン: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です。私はこの結果を本当に理解していません、誰が私を助けることができますか? THX!

13
StrongYoung

max_connections 設定に関するMySQLドキュメントのように:

この値を増やすと、mysqldが必要とするファイル記述子の数が増えます。必要な数の記述子が利用できない場合、サーバーはmax_connectionsの値を減らします。

これはおそらく、MySQLサーバーに必要な記述子の数を維持するのに十分なリソースがないことを意味します。

MySQLがテーブルを開閉する方法 に関するMySQLドキュメントは、以下を明確にします:

Table_open_cacheおよびmax_connectionsシステム変数は、サーバーが開いたままにするファイルの最大数に影響します。これらの値のいずれかまたは両方を増やすと、オペレーティングシステムが開いているファイル記述子のプロセスごとの数に課せられた制限に達する可能性があります。多くのオペレーティングシステムでは、オープンファイルの制限を増やすことができますが、方法はシステムによって大きく異なります。オペレーティングシステムのドキュメントを参照して、制限を増やすことができるかどうか、およびその方法を決定してください。

10
Shadow

値を手動で設定できます。

set global max_connections=500;

ただし、MySQLの再起動後、値は214にリセットされます。

ソリューションは、OS(のバージョン)とMySQLバージョンに依存します。 Ubuntu 16.04およびMySQL> = 5.7.7では、次のように機能します。

systemctl edit mysql

入る

[Service]
LimitNOFILE=8000

保存すると、新しいファイルが作成されます

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

サーバーを再起動します。

systemctl daemon-reload
systemctl restart mysql

その他の環境の場合: buntu 15のMysql max-connectionsのmax_open_filesを増やすことはできません

12
WernerE

次の手順に従ってください:

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

これだけ!なかむら

1
Mohsen Abasi

session required pam_limits.so/etc/pam.d/common-sessionを追加します(通常、デフォルトでは存在しません)。

/etc/security/limits.confでは、いくつかの制限を追加できます。

*   hard    nofile  8192
*   soft    nofile  4096

また、ulimit -aを使用して、開いているファイルの制限を確認します。これは、ulimit -n 4096で増やすことができます

最後に必ず再起動してください。

1
Dragos

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. /etc/mysql/mysql.conf.d/mysqld.cnf max_connections = 99999を編集します

1
sonjaya sonjaya