너무 많은 MySQL 프로세스 말한 후 서버와 친구를 돕기

MySQL이 너무 많은 메모리를 사용하고 있다고 말한 후 서버와 친구를 돕기 위해 노력하고 있습니다 … 많은 메모리를 사용하고있을뿐만 아니라 너무 많은 mysql 프로세스가 실행되고 있음이 밝혀졌습니다!

결과는 다음과 같습니다 ps auxww|grep mysql. http://pastebin.com/kYrHLXVW

따라서 기본적으로 13 개의 MySQL 프로세스가 있으며 mysqladmin에 따라 하나의 클라이언트 만 연결되어 있습니다 …

잠시 후, 이러한 각 프로세스는 최대 50MB의 메모리를 사용하므로 많은 메모리를 소비하게됩니다.

/ usr / share / mysql에서 바로 my-medium.cnf 구성 템플릿을 사용하고 있습니다 … mysql 서버를 다시 시작했지만 시작하자마자 13 개의 프로세스가 다시 시작됩니다 … 문제는 … 어떤 아이디어 / 제안도 정말 감사하겠습니다!



답변

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 ... ]

그들은 13 * 50mb의 램을 사용하지 않습니다. 아마도 70MB와 같은 것을 사용하고있을 것입니다 . 리눅스는 프로세스간에 수정되지 않은 메모리 페이지를 공유하므로 서버가 새로 시작되면 대부분의 메모리가 공유됩니다. 사실, mysql이 스레드되기 때문에 스레드 당 할당되는 메모리는 훨씬 적을 것입니다. 각 mysql 프로세스의 메모리 사용에 대해 우려가있는 경우을보고 /etc/mysql/my.cnfmysqld 섹션의 변수를 확인하십시오.

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

그러나 변수는 조정하기에 매우 강력한 변수이므로 mysql 성능을 너무 낮게 설정하거나 쉽게 설정하여 다른 곳에서 사용할 수있는 메모리를 낭비 할 수 있습니다.

mysql 인스턴스를 조정하는 가장 좋은 방법을 찾는 쉬운 출발점 중 하나는 앱을 약간 실행 한 다음 여기 에서 mysqltune 스크립트를 실행 하여 성능 카운터를 분석 한 다음 변경해야 할 사항에 대한 권장 사항을 생성하는 것입니다 서버 구성.


답변

리눅스는 스레드를 별도의 프로세스로 보여줍니다. MySQL은 연결 당 하나의 스레드를 시작합니다. 로 실행 중 ps입니다 f. 예를 들어 ps auxfw스레드가 어떻게 관련되어 있는지 표시합니다.

MySQL에는 몇 개의 연결이 있습니까? show full processlist;MySQL 클라이언트에서 실행하십시오 . 당신이 보여주는 것에서, 나는 무엇이 잘못되었다고 확신조차하지 않습니다.


답변

내가 매우 유용하다고 생각한 MySQLTuner 를 사용 해보고 싶을 때 조정해야 할 구성 변수를 제안합니다.


답변