Как я могу ограничить количество дочерних процессов, которые порождает MySQL?

8

Есть ли способ ограничить количество детей, чем mysqldнерестится? Или не стоит об этом беспокоиться? Мой VPS имеет только 512 МБ оперативной памяти.

Вот вывод htop, после того как я установил max_connectionsна 6 и перезапустил mysqlсервис:

  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

Я установил MySQL, используя 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
Дан Дакалеску
источник

Ответы:

3

Вы можете использовать max_user_connections, чтобы ограничить количество соединений, которые может иметь один пользователь mysql за один раз.

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

вам нужно попробовать несколько различных настроек / комбинаций max_connections и max_user_connections, чтобы получить лучшую производительность без исчерпания соединений.

Кроме того, это не соотношение 1: 1 между соединениями и потоками.

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

Джонатан
источник
-1

Я не знаю точно, что это за дочерние процессы, но я считаю, что им не о чем беспокоиться .

Ваше htopчтение показывает, что /usr/sbin/mysqldиспользуется 136 МБ ОЗУ всего (из VIRTполя). Дочерние процессы не используют более заметный объем оперативной памяти. 136 МБ может показаться большим, но MySQL, естественно, требует памяти .

Если вы думаете, что использование процессора является проблемой, это не должно быть. TIME+Поле показывает небольшое использование любого из mysqldпроцессов.

Когда-то у меня был VPS с 512 МБ ОЗУ. Это был мой неудачный выбор программного обеспечения, который привел меня к нехватке ОЗУ - я попытался запустить несколько виртуальных серверов с Virtualmin . 512 МБ не так много, и решения для виртуализации, такие как OpenVZ , не позволяют вам ничего выгружать на диск, поэтому следите за другими факторами, которые могут увеличить использование вашей оперативной памяти.

Deltik
источник