Jak mogę ograniczyć liczbę procesów potomnych, które spawnuje MySQL?

8

Czy istnieje sposób na ograniczenie liczby dzieci niż mysqldspawnowania? A może nie należy się tym martwić? Mój VPS ma tylko 512 MB pamięci RAM.

Oto dane wyjściowe htoppo ustawieniu max_connectionsna 6 i ponownym uruchomieniu mysqlusługi:

  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

Zainstalowałem MySQL przy użyciu 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
źródło

Odpowiedzi:

3

możesz użyć max_user_connections, aby ograniczyć liczbę połączeń, które pojedynczy użytkownik mysql może mieć jednocześnie

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

musisz wypróbować kilka różnych ustawień / kombinacji max_connections i max_user_connections, aby uzyskać najlepszą wydajność bez wyczerpywania połączeń.

ponadto nie jest to stosunek 1: 1 między połączeniami a gwintami.

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

Jonathan
źródło
-1

Nie wiem dokładnie, jakie są te procesy potomne, ale wierzę, że nie ma się o co martwić .

Twój htopodczyt pokazuje, że /usr/sbin/mysqldzużywa łącznie 136 MB pamięci RAM (z VIRTpola). Procesy potomne nie używają więcej zauważalnej ilości pamięci RAM. 136 MB może wydawać się dużo, ale MySQL jest naturalnie wymagające pod względem pamięci .

Jeśli uważasz, że użycie procesora stanowi problem, nie powinno tak być. TIME+Pole pokazuje mały wykorzystanie któregokolwiek z mysqldprocesów.

Kiedyś miałem VPS z 512 MB pamięci RAM. To mój zły wybór oprogramowania doprowadził mnie do braku pamięci RAM - próbowałem uruchomić wiele wirtualnych serwerów za pomocą Virtualmin . 512 MB to niewiele, a rozwiązania wirtualizacyjne, takie jak OpenVZ , nie pozwalają na wymianę niczego na dysk, więc uważaj na inne czynniki, które mogą zwiększyć wykorzystanie pamięci RAM.

Deltik
źródło