如何限制 MySQL 产生的子进程的数量?

如何限制 MySQL 产生的子进程的数量?

有没有办法限制子进程的数量mysqld?或者不应该担心这个?我的 VPS 只有 512MB 的 RAM。

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

我已经使用 aptitude 安装了 MySQL。

$ 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

答案1

您可以使用 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

答案2

我不知道这些子进程到底是什么,但我相信没什么好担心的

您的htop读数显示/usr/sbin/mysqld总共使用了 136 MB 的 RAM(来自字段VIRT)。子进程没有使用任何更明显的 RAM 量。136 MB 可能看起来很多,但是MySQL 对内存的要求很高

如果你认为CPU使用率是一个问题,其实不应该。该TIME+领域几乎没有使用任何mysqld流程。

我曾经也拥有一台内存为 512 MB 的 VPS。正是由于我选择的软件不当,导致内存不足——我尝试运行多个虚拟服务器虚拟分钟. 512 MB 并不多,而且虚拟化解决方案开放VZ不允许您将任何东西交换到磁盘,因此请注意可能增加 RAM 使用量的其他因素。

相关内容