2016-10-11 6 views
5

ich ein Problem erfüllt ist, ist der Wert von max_connction in MySQL 214, nachdem ich es 1000 über bearbeiten die my.cnf eingestellt, wie unten:Die max_connections in MySQL 5.7

[email protected]:~$ mysql -V 
mysql Ver 14.14 Distrib 5.7.15, for Linux (x86_64) using EditLine wrapper 

MySQL-Version: 5.7

OS Version: ubuntu 16.04LTS

mysql> show variables like 'max_connections'; 
+-----------------+-------+ 
| Variable_name | Value | 
+-----------------+-------+ 
| max_connections | 151 | 
+-----------------+-------+ 
1 row in set (0.00 sec) 

Wie wir die Variable Wert von max_connections sehen können, ist 151. Dann habe ich die Konfigurationsdatei von MySQL bearbeiten.

[email protected]:~$ sudo vi /etc/mysql/my.cnf 
[mysqld] 

character-set-server=utf8 
collation-server=utf8_general_ci 
max_connections=1000 

Starten Sie den MySQL-Dienst neu, nachdem Sie die Konfiguration gespeichert haben.

[email protected]:~$ 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 === 
[email protected]:~$ 

Jetzt schätzen wir die max_connection 1000, wirklich?

Es ist 214. Ich verstehe dieses Ergebnis nicht wirklich, wer kann mir helfen? Danke!

Antwort

5

Wie MySQL-Dokumentation auf max_connections Einstellung sagt:

diesen Wert erhöhen, erhöht die Anzahl der Datei-Deskriptoren, die mysqld erfordert. Wenn die erforderliche Anzahl von Deskriptoren nicht verfügbar ist, reduziert der Server den Wert von max_connections.

Dies bedeutet, dass Ihr MySQL-Server wahrscheinlich nicht über genügend Ressourcen verfügt, um die erforderliche Anzahl von Deskriptoren zu verwalten.

MySQL-Dokumentation auf How MySQL Opens and Closes Tables macht deutlich, dass:

Das table_open_cache und max_connections Systemvariablen beeinflussen die maximale Anzahl von Dateien der Server geöffnet hält. Wenn Sie einen oder beide Werte auf einen Wert von erhöhen, kann es vorkommen, dass ein Limit von für die Anzahl der geöffneten Dateideskriptoren pro Prozess auftritt. Viele Betriebssysteme erlauben es Ihnen, das Limit für offene Dateien zu erhöhen, , obwohl die Methode von System zu System sehr unterschiedlich ist. Wenden Sie sich an Ihre Betriebssystem-Dokumentation, um zu bestimmen, ob es möglich ist, das Limit zu erhöhen und wie es zu wird.

+0

Vielen Dank, und können Sie mir die Detail Ressourcen sagen, dass MySQL-Server erforderlich, Mein Computer 16 GB Speicher und 8 Kerne hat. Ich weiß also nicht, was die "genug Ressourcen" sind. – StrongYoung

+1

Die Ressource ist die maximale Anzahl von Dateideskriptoren, die vom Betriebssystem gesteuert werden, nicht Ihre Speicher- und Prozessorkapazität. – Shadow

+0

Darf ich es bitte aktualisieren? – StrongYoung

1

Hinzufügen session required pam_limits.so in /etc/pam.d/common-session (normalerweise ist nicht standardmäßig vorhanden).

Die in /etc/security/limits.conf können Sie einige Grenzen hinzu:

* hard nofile 8192 
* soft nofile 4096 

Auch die geöffneten Dateien begrenzen mit ulimit -a überprüfen. Dies können Sie erhöhen mit ulimit -n 4096

Stellen Sie sicher, dass Sie am Ende neu starten.

3

Sie können den Wert manuell einstellen, z.

set global max_connections=500; 

jedoch nach einem Neustart von MySQL ist der Wert auf 214

Die Lösung auf der (Version) Betriebssystem und die MySQL-Version abhängig ist. Mit Ubuntu 16.04 und MySQL> = 5.7.7 folgende Arbeiten:

systemctl bearbeiten mysql

Geben Sie

[Service] 
LimitNOFILE=8000 

speichern, werden diese erstellen Sie eine neue Datei

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

und starten Sie den Server:

systemctl daemon-reload 
systemctl restart mysql 

Für andere Umgebungen: Can not increase max_open_files for Mysql max-connections in Ubuntu 15