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.cnf
mysqld 섹션의 변수를 확인하십시오.
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 클라이언트에서 실행하십시오 . 당신이 보여주는 것에서, 나는 무엇이 잘못되었다고 확신조차하지 않습니다.