Comment puis-je limiter le nombre de processus enfants générés par MySQL?

8

Existe-t-il un moyen de limiter le nombre d'enfants qui ne se mysqldreproduisent pas? Ou ne faut-il pas s'en inquiéter? Mon VPS n'a que 512 Mo de RAM.

Voici la sortie de htop, après avoir défini max_connections6 et redémarré le mysqlservice:

  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

J'ai installé MySQL en utilisant aptitude.

$ 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
la source

Réponses:

3

vous pouvez utiliser max_user_connections pour limiter le nombre de connexions qu'un seul utilisateur mysql peut avoir à la fois

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

vous devez essayer différents paramètres / combinaisons de max_connections et max_user_connections pour obtenir les meilleures performances sans manquer de connexions.

aussi, ce n'est pas un rapport 1: 1 entre les connexions et les threads.

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

Jonathan
la source
-1

Je ne sais pas exactement quels sont ces processus enfants, mais je crois qu'ils ne sont pas à craindre .

Votre htoplecture montre qu'il /usr/sbin/mysqldutilise 136 Mo de RAM au total (sur le VIRTterrain). Les processus enfants n'utilisent plus de quantité de mémoire vive notable. 136 Mo peuvent sembler beaucoup, mais MySQL est naturellement gourmand en mémoire .

Si vous pensez que l'utilisation du CPU est une préoccupation, elle ne devrait pas l'être. Le TIME+champ montre peu d'utilisation de l'un des mysqldprocessus.

J'ai également eu un VPS avec 512 Mo de RAM. C'est mon mauvais choix de logiciel qui m'a conduit à manquer de RAM - j'ai essayé d'exécuter plusieurs serveurs virtuels avec Virtualmin . 512 Mo, ce n'est pas beaucoup, et les solutions de virtualisation comme OpenVZ ne vous permettent pas d'échanger quoi que ce soit sur le disque, alors faites attention aux autres facteurs qui pourraient augmenter votre utilisation de la RAM.

Deltik
la source