次のように、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!
max_connections 設定に関するMySQLドキュメントのように:
この値を増やすと、mysqldが必要とするファイル記述子の数が増えます。必要な数の記述子が利用できない場合、サーバーはmax_connectionsの値を減らします。
これはおそらく、MySQLサーバーに必要な記述子の数を維持するのに十分なリソースがないことを意味します。
MySQLがテーブルを開閉する方法 に関するMySQLドキュメントは、以下を明確にします:
Table_open_cacheおよびmax_connectionsシステム変数は、サーバーが開いたままにするファイルの最大数に影響します。これらの値のいずれかまたは両方を増やすと、オペレーティングシステムが開いているファイル記述子のプロセスごとの数に課せられた制限に達する可能性があります。多くのオペレーティングシステムでは、オープンファイルの制限を増やすことができますが、方法はシステムによって大きく異なります。オペレーティングシステムのドキュメントを参照して、制限を増やすことができるかどうか、およびその方法を決定してください。
値を手動で設定できます。
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を増やすことはできません
次の手順に従ってください:
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
これだけ!なかむら
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. 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を編集します