너무 많은 MySQL 프로세스


12

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

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

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

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

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

답변:


16
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 스크립트를 실행 하여 성능 카운터를 분석 한 다음 변경해야 할 사항에 대한 권장 사항을 생성하는 것입니다 서버 구성.


1
나는 mysqltune매우 유용한 감사를 몰랐다 . 또한 htop스레드를 채색하고 프로세스 당 사용 된 실제 메모리를 볼 수 있습니다.
mveroone

3

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

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


여기서 결과는 다음과 같습니다 pastebin.com/raw.php?i=XNCsG6KS는 서버가 한 단지 당신이 /etc/init.d/mysql 형태의 내용을 의미합니까 초기화 스크립트에 의해 ... 확실하지 도움이된다면 시작?
user24994

그것은 나에게 완벽하게 정상적인 것 같습니다.
워너

에 따르면 show full processlist데이터베이스에이 개 연결이 있습니다. 그중 하나는 localhost를 실행 show full processlist하고 다른 하나는 phpmyadmin을 통해 나입니다. 사이트가 아직
활성화

연결의 수는 응용 프로그램의 성능에 따라 달라지며 반드시 사용자 수와 직접 관련되지는 않습니다. MySQL은 cnf 설정에 따라 메모리를 사용합니다. 무엇이 잘못되고 있다고 생각합니까?
워너

죄송합니다, 내 질문에 정말 명확하지 않은 것 같습니다. 하찮은 일이 일어나지 않을 것입니다. 방금 mysql이 많은 메모리 (약 13 * 50mb, 650mb의 램)를 사용하고 있으며 아직 사이트에 트래픽이 없음을 알았습니다 ... phpmyadmin에서 엉망이되었습니다. 그래서 제 질문은 "문제가 있습니까?" "무슨 문제"대신 :)
user24994

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.