MySQL 进程过多

use*_*994 14 mysql

在他告诉我他的 MySQL 使用了太多内存后,我试图帮助他的服务器......事实证明它不仅使用了大量内存,而且有太多的 mysql 进程在运行!

这是结果ps auxww|grep mysqlhttp : //pastebin.com/kYrHLXVW

所以基本有13个mysql进程,按照mysqladmin连接的客户端只有1个...

一段时间后,这些进程中的每一个都会占用多达 50MB 的内存,因此最终会消耗大量内存......

我直接从 /usr/share/mysql 使用 my-medium.cnf 配置模板...我重新启动了 mysql 服务器,但是,一旦它启动,13 个进程又回来了...我不知道是什么问题可能是......任何想法/建议将不胜感激!

Jas*_*son 18

mysql     9804  0.0  0.6 58556 22960 pts/0   S    12:43   0:00  \_ /usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql --user=mysql --pid-file=/var/lib/mysql/myhostname.pid --skip-external-locking --port=3306 --socket=/var/lib/mysql/mysql.sock
mysql     9807  0.0  0.6 58556 22960 pts/0   S    12:43   0:00      \_ /usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql --user=mysql --pid-file=/var/lib/mysql/myhostname.pid --skip-external-locking --port=3306 --socket=/var/lib/mysql/mysql.sock
mysql     9808  0.0  0.6 58556 22960 pts/0   S    12:43   0:00          \_ /usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql --user=mysql --pid-file=/var/lib/mysql/myhostname.pid --skip-external-locking --port=3306 --socket=/var/lib/mysql/mysql.sock
mysql     9809  0.0  0.6 58556 22960 pts/0   S    12:43   0:00          \_ /usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql --user=mysql --pid-file=/var/lib/mysql/myhostname.pid --skip-external-locking --port=3306 --socket=/var/lib/mysql/mysql.sock
mysql     9810  0.0  0.6 58556 22960 pts/0   S    12:43   0:00          \_ /usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql --user=mysql --pid-file=/var/lib/mysql/myhostname.pid --skip-external-locking --port=3306 --socket=/var/lib/mysql/mysql.sock
[ ... repeated output truncated ... ]
Run Code Online (Sandbox Code Playgroud)

他们没有使用 13 * 50mb 的内存——他们可能总共使用了 70mb 之类的东西。请记住,Linux 将在进程之间共享未修改的内存页面,因此如果您的服务器刚刚启动,大部分内存都将被共享。事实上,由于 mysql 是线程化的,因此每个线程分配的内存可能更少。如果您担心每个 mysql 进程的内存使用情况,请查看/etc/mysql/my.cnf,并查看 mysqld 部分中的变量:

  • key_buffers
  • thread_stack
  • thread_cache_size
  • max_connections
  • query_cache_limit
  • query_cache_size

但是请注意,这些是非常强大的调整变量,如果将它们设置得太低,很容易降低 mysql 性能,或者通过将它们设置得太高来浪费可以在其他地方使用的内存。

找出优化 mysql 实例的最佳方法的一个简单起点是运行您的应用程序一段时间,然后从此处运行 mysqltune 脚本,该脚本将分析您的性能计数器,然后针对您应该更改的内容提出建议你的服务器配置。