Muitos processos do MySQL

11
Estou tentando ajudar um amigo com seu servidor depois que ele me disse que seu MySQL estava usando muita memória ... Acontece que ele não está apenas usando muita memória, mas também há muitos processos do mysql rodando!

Veja o resultado do ps auxww|grep mysql : link

Então, basicamente existem 13 processos do MySQL, e há apenas 1 cliente conectado de acordo com o mysqladmin ...

Depois de um tempo, cada um desses processos consome até 50 mb de memória, de modo que acaba consumindo MUITA de memória ...

Estou usando o template de configuração my-medium.cnf direto de / usr / share / mysql ... Reiniciei o servidor mysql mas, assim que ele inicia, os 13 processos estão de volta ... não tenho idéia do que o problema poderia ser ... qualquer idéia / sugestão seria muito apreciada!

    
por user24994 14.08.2010 / 18:23

3 respostas

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

Eles não estão usando 13 * 50mb de RAM - Eles provavelmente estão usando algo como 70mb total . Lembre-se de que esse linux compartilhará páginas de memória não modificadas entre processos, portanto, se seu servidor for iniciado de novo, a maior parte dessa memória será compartilhada. Na verdade, como o mysql é encadeado, provavelmente haverá menos memória alocada por thread. Se você está preocupado com o uso de memória de cada processo do mysql, veja em /etc/mysql/my.cnf , e veja as variáveis na seção mysqld:

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

Esteja avisado, porém, que essas são variáveis muito poderosas para sintonizar, e você pode facilmente matar sua performance no mysql configurando-as muito baixas, ou desperdiçar memória que poderia ser usada em outro lugar definindo-as muito altas.

Um ponto de partida fácil para descobrir a melhor maneira de sintonizar sua instância mysql é rodar seu aplicativo um pouco, então execute o script mysqltune de aqui , que analisará seus contadores de desempenho e produzirá uma recomendação sobre o que você deve alterar na configuração do seu servidor.

    
por 15.08.2010 / 06:31
3

O Linux mostra encadeamentos como processos separados. O MySQL inicia um thread por conexão. Executando ps com f . Por exemplo, ps auxfw exibirá como os encadeamentos estão relacionados.

Quantas conexões existem para o MySQL? Execute show full processlist; no cliente MySQL. Pelo que você está mostrando, nem tenho certeza de que há algo errado.

    
por 14.08.2010 / 18:40
1

Você pode querer experimentar o MySQLTuner que eu achei muito útil, ele irá sugerir a você quais variáveis de configuração você deve tentar ajustar.

    
por 16.08.2010 / 13:40

Tags