J'utilise cette version de Mysql
Ver 14.14 Distrib 5.6.24, for debian-linux-gnu (x86_64)
Sur cette version d'Ubuntu
Distributor ID: Ubuntu
Description: Ubuntu 15.04
Release: 15.04
Codename: vivid
Voici la configuration que j'ai définie pour Mysql:
key_buffer_size = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
innodb_buffer_pool_size=20G
innodb_log_buffer_size=16M
tmp_table_size = 32M
max_heap_table_size = 32M
open-files-limit=4510
max_connections=500
myisam-recover = BACKUP
query_cache_type=1
query_cache_limit = 32M
query_cache_size = 32M
Voici les avertissements que je reçois au démarrage de MYSQL:
2015-06-17 17:28:53 26720 [Warning] Buffered warning: Could not increase number
of max_open_files to more than 1024 (request: 4510)
2015-06-17 17:28:53 26720 [Warning] Buffered warning: Changed limits: max_connections:
214 (requested 500)
2015-06-17 17:28:53 26720 [Warning] Buffered warning: Changed limits: table_open_cache:
400 (requested 2000)
J'ai déjà essayé ces étapes:
1) Ajouter ceci à /etc/security/limits.conf
mysql soft nofile 65535
mysql hard no file 65535
2) Ajouter ceci à /etc/pam.d/common-auth
et /etc/pam.d/commom-session
session required pam_limits.so
3) Ajoutez ceci à /etc/mysql/mysql.conf.d/mysqld.cnf
open-files-limit=4510 or open_files_limit=4510
Aucun de ceux-ci n'a fonctionné et je ne parviens toujours pas à augmenter les connexions mysql max à 500.
J'apprécierais vraiment de l'aide à ce stade.
Merci beaucoup d'avance.
Ubuntu est passé d'Upstart à Systemd dans la version 15.04 et ne respecte plus les limites dans /etc/security/limits.conf pour les services système. Ces limites s'appliquent désormais uniquement aux sessions utilisateur.
Les limites du service MySQL sont définies dans le fichier de configuration Systemd, que vous devez copier de son emplacement par défaut dans/etc/systemd, puis modifier la copie.
Sudo cp /lib/systemd/system/mysql.service /etc/systemd/system/
Sudo vim /etc/systemd/system/mysql.service # or your editor of choice
Ajoutez les lignes suivantes au bas du fichier:
LimitNOFILE=infinity
LimitMEMLOCK=infinity
Vous pouvez également définir une limite numérique, par exemple LimitNOFILE=4510
.
Rechargez maintenant la configuration Systemd avec:
Sudo systemctl daemon-reload
Redémarrez MySQL et il devrait maintenant obéir à la directive max_connections.
J'ai également eu des problèmes pour arrêter MySQL proprement après la mise à niveau vers 15.04. Si cela vous affecte (vous le saurez, car il faudra 300 secondes pour expirer lorsque vous le ferez service mysql stop
ou service mysql restart
) puis l'ajout de la ligne suivante au même fichier /etc/systemd/system/mysql.service l'a corrigé pour moi:
ExecStop=/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf shutdown
Ce dernier problème semble avoir été résolu par 16.04 et cette ligne n'est plus requise, donc avant de faire une mise à niveau de la distribution, vous voudrez arrêter MySQL et supprimer la ligne ExecStop
du fichier de configuration.
Depuis MySQL 5.7.7, c'est ce que la documentation recommande pour Red Hat Enterprise Linux 7, Oracle Linux 7, CentOS 7, SUSE Linux Enterprise Server 12, Fedora 24 et 25:
https://dev.mysql.com/doc/refman/5.7/en/using-systemd.html
Sur Ubuntu 16.04, le service s'appelle mysql, pas mysqld, alors voici ce que j'ai fait:
Sudo mkdir /etc/systemd/system/mysql.service.d
Sudo vi /etc/systemd/system/mysql.service.d/override.conf
Ajouté ceci dans le nouveau fichier override.conf:
[Service]
LimitNOFILE=5000
Puis redémarré le service:
Sudo systemctl daemon-reload
Sudo systemctl restart mysql
Je vous suggère de ne pas copier le fichier mysql.service existant comme suggéré, créez simplement un fichier avec uniquement les modifications qui vous intéressent. Alors faites:
mkdir /lib/systemd/system/mysql.service.d
vim /etc/systemd/system/mysql.service.d/limits.conf
Et le contenu de limits.conf est simplement:
[Service]
LimitNOFILE=10000
LimitMEMLOCK=10000
ou quelles que soient les limites que vous préférez.