J'ai rencontré un problème, la valeur de max_connction dans MySQL est 214 après l'avoir définie à 1000 via la modification du fichier my.cnf, comme ci-dessous:
hadoop@node1:~$ mysql -V
mysql Ver 14.14 Distrib 5.7.15, for Linux (x86_64) using EditLine wrapper
Version de MySQL: 5.7
Version du système d'exploitation: Ubuntu 16.04LTS
mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 151 |
+-----------------+-------+
1 row in set (0.00 sec)
Comme nous pouvons le constater, la valeur de la variable max_connections est 151. Ensuite, je modifie le fichier de configuration de MySQL.
yang2@node1:~$ Sudo vi /etc/mysql/my.cnf
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
max_connections=1000
Redémarrez le service MySQL après avoir enregistré la configuration.
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:~$
Maintenant, on suppose que max_connection vaut 1000, vraiment?
mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 214 |
+-----------------+-------+
1 row in set (0.00 sec)
Il est 214. Je ne comprends pas vraiment ce résultat, qui peut m'aider? THX!
Comme le dit la documentation MySQL sur max_connections setting:
L'augmentation de cette valeur augmente le nombre de descripteurs de fichier que mysqld nécessite. Si le nombre requis de descripteurs n'est pas disponible, le serveur réduit la valeur de max_connections.
Cela signifie que votre serveur MySQL ne dispose probablement pas de suffisamment de ressources pour gérer le nombre requis de descripteurs.
La documentation de MySQL sur Comment MySQL ouvre et ferme les tables précise que:
Les variables système table_open_cache et max_connections affectent le fichier nombre maximum de fichiers que le serveur garde ouverts. Si vous augmentez un ou Ces deux valeurs peuvent vous heurter à une limite imposée par votre système d’exploitation sur le nombre de descripteurs de fichier ouverts par processus . De nombreux systèmes d'exploitation vous permettent d'augmenter la limite de fichiers ouverts, bien que la méthode varie grandement d'un système à l'autre. Consultez votre documentation du système d’exploitation pour déterminer s’il est possible de augmenter la limite et comment le faire.
Vous pouvez définir la valeur manuellement, par exemple.
set global max_connections=500;
cependant, après un redémarrage de MySQL, la valeur est réinitialisée à 214.
La solution dépend du système d'exploitation et de la version de MySQL. Avec Ubuntu 16.04 et MySQL> = 5.7.7, les travaux suivants:
systemctl edit mysql
Entrer
[Service]
LimitNOFILE=8000
enregistrer, cela va créer un nouveau fichier
/etc/systemd/system/mysql.service.d/override.conf
et redémarrez le serveur:
systemctl daemon-reload
systemctl restart mysql
Pour d'autres environnements: Impossible d'augmenter max_open_files pour les connexions Mysql max dans Ubuntu 15
Ajoutez session required pam_limits.so
dans /etc/pam.d/common-session
(généralement pas présent par défaut).
Le dans /etc/security/limits.conf
vous pouvez ajouter quelques limites:
* hard nofile 8192
* soft nofile 4096
Vérifiez également avec ulimit -a
la limite de fichiers ouverts . Ceci peut être augmenté avec ulimit -n 4096
Assurez-vous de redémarrer à la fin.
Suivez les étapes suivantes:
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
Et changez ou ajoutez la ligne suivante dans le fichier /etc/mysql/mysql.conf.d/mysqld.cnf :
[mysqld]
max_connections=110
Juste ceci! @ Mahdi_Mohammadi