Wie kann ich die Anzahl der untergeordneten Prozesse begrenzen, die MySQL erzeugt?

8

Gibt es eine Möglichkeit, die Anzahl der Kinder als mysqldSpawns zu begrenzen ? Oder sollte man sich darüber keine Sorgen machen? Mein VPS hat nur 512 MB RAM.

Hier ist die Ausgabe von htop, nachdem ich max_connectionsauf 6 gesetzt und den mysqlDienst neu gestartet habe :

  PID USER     PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
27082 mysql     20   0  136M 28868  5800 S  0.0  5.7  0:00.41  `- /usr/sbin/mysqld
27121 mysql     20   0  136M 28868  5800 S  0.0  5.7  0:00.05  |   `- /usr/sbin/mysqld
27099 mysql     20   0  136M 28868  5800 S  0.0  5.7  0:00.23  |   `- /usr/sbin/mysqld
27097 mysql     20   0  136M 28868  5800 S  0.0  5.7  0:00.00  |   `- /usr/sbin/mysqld
27096 mysql     20   0  136M 28868  5800 S  0.0  5.7  0:00.00  |   `- /usr/sbin/mysqld
27095 mysql     20   0  136M 28868  5800 S  0.0  5.7  0:00.00  |   `- /usr/sbin/mysqld
27094 mysql     20   0  136M 28868  5800 S  0.0  5.7  0:00.02  |   `- /usr/sbin/mysqld
27093 mysql     20   0  136M 28868  5800 S  0.0  5.7  0:00.01  |   `- /usr/sbin/mysqld
27091 mysql     20   0  136M 28868  5800 S  0.0  5.7  0:00.00  |   `- /usr/sbin/mysqld
27090 mysql     20   0  136M 28868  5800 S  0.0  5.7  0:00.00  |   `- /usr/sbin/mysqld
27089 mysql     20   0  136M 28868  5800 S  0.0  5.7  0:00.00  |   `- /usr/sbin/mysqld
27088 mysql     20   0  136M 28868  5800 S  0.0  5.7  0:00.00  |   `- /usr/sbin/mysqld

Ich habe MySQL mit aptitude installiert.

$ aptitude search '~i'
i A mysql-client-5.1                                                                - MySQL database client binaries
i A mysql-client-core-5.1                                                           - MySQL database core client binaries
i A mysql-common                                                                    - MySQL database common files, e.g. /etc/mysql/my.cnf
i   mysql-server                                                                    - MySQL database server (metapackage depending on the latest version)
i A mysql-server-5.1                                                                - MySQL database server binaries and system database setup
i A mysql-server-core-5.1                                                           - MySQL database server binaries
Dan Dascalescu
quelle

Antworten:

3

Sie können max_user_connections verwenden, um die Anzahl der Verbindungen zu begrenzen, die ein einzelner MySQL-Benutzer gleichzeitig haben kann

http://dev.mysql.com/doc/refman/5.0/de/server-system-variables.html#sysvar_max_user_connections

Sie müssen einige verschiedene Einstellungen / Kombinationen von max_connections und max_user_connections ausprobieren, um die beste Leistung zu erzielen, ohne dass die Verbindungen ausgehen.

Außerdem ist es kein 1: 1-Verhältnis zwischen Verbindungen und Gewinden.

http://dev.mysql.com/doc/internals/en/threads.html

Jonathan
quelle
-1

Ich weiß nicht genau, was diese untergeordneten Prozesse sind, aber ich glaube, dass sie kein Grund zur Sorge sind .

Ihre htopLesung zeigt, dass /usr/sbin/mysqldinsgesamt 136 MB RAM (aus dem VIRTFeld) verwendet werden. Die untergeordneten Prozesse verwenden nicht mehr RAM. 136 MB scheinen viel zu sein, aber MySQL verlangt natürlich nach Speicher .

Wenn Sie der Meinung sind, dass die CPU-Auslastung ein Problem darstellt, sollte dies nicht der Fall sein. Das TIME+Feld zeigt wenig Verwendung eines der mysqldProzesse.

Ich hatte einmal auch einen VPS mit 512 MB RAM. Es war meine schlechte Wahl der Software, die dazu führte, dass mir der Arbeitsspeicher ausgeht - ich habe versucht, mehrere virtuelle Server mit Virtualmin auszuführen . 512 MB sind nicht viel, und mit Virtualisierungslösungen wie OpenVZ können Sie nichts auf die Festplatte austauschen. Achten Sie daher auf andere Faktoren, die Ihre RAM-Auslastung erhöhen könnten.

Deltik
quelle