Existe uma maneira de especificar essas opções no arquivo de configuração?
Eu tentei adicioná-los na [mysqld_safe]
seção, mas não funciona:
[mysqld_safe]
numa-interleave = 1
flush-caches = 1
-
# ps -ww -lfC mysqld_safe
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 17180 1 0 80 0 - 26549 wait 15:06 pts/1 00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/mysql.pid
Observe que estou usando o servidor Percona 5.5.30-30.2
EDIÇÃO: 28 de agosto de 2013 - 08:34:
Infelizmente não consigo encontrar esta linha em /etc/init.d/mysql
:
# grep -n "interleave" < /etc/init.d/mysql
# echo $?
1
Eu sou capaz de invocar manualmente estas opções:
mysqld_safe --datadir=/mnt/data/mysql --pid-file=/mnt/data/mysql/db3.improve.pid --numa-interleave --flush-caches
mas com o arquivo de opção ainda há default
política
# cat /proc/$(pidof mysqld)/numa_maps | cut -d ' ' -f 2 | uniq
default
Deve haver alguma maneira diferente de codificar essas opções no init
script ou iniciar manualmente o daemon do MySQL ...
EDIÇÃO: 29 de agosto de 2013 - 08:38:
Acabei de testar com Percona Server 5.5.28-29.1.
Ainda não vejo numa
entradas relacionadas, no /etc/init.d/mysql
entanto, existem no mysqld_safe
script:
# grep -n "interleave" /usr/bin/mysqld_safe
21:numa_interleave=0
67: --numa-interleave Run mysqld with its memory interleaved
215: --numa-interleave) numa_interleave=1 ;;
777:# Set mysqld's memory interleave policy.
780:if true && test $numa_interleave -eq 1
785: log_error "numactl command not found, required for --numa-interleave"
788: elif ! numactl --interleave=all true
794: cmd="$cmd numactl --interleave=all"
795:elif test $numa_interleave -eq 1
797: log_error "--numa-interleave is not supported on this platform"
Eu testei outras opções como nice
, open_files_limit
e elas funcionam bem, então parece que a única opção é codificá-lo no init
script
Acredito que o Percona já tenha essa opção integrada.
Dentro
/etc/init.d/mysql
, em algum lugar eu vi algo comoQuando descobri isso, sempre que instalava o MySQL da Oracle, adicionava esse comando ao arquivo
/etc/init.d/mysql
.Se você quiser ter certeza, basta executar isto:
e você verá qual linha aparece.
Eu já discuti isso antes
Jul 22, 2013
: Alto uso da CPU do MySQL 5.5Mar 06, 2013
: mysqld_safe versão diferente do mysqld?Dec 30, 2012
: Mysql lentamente usa memória até começar a usar swapCom base no link que você postou , você poderá ativar esses recursos a partir do Percona Server 5.5.28. Minhas postagens mencionadas
numactl
eram evidentemente de versões anteriores do Percona Server.À luz de tudo isso, a mesma coisa se aplica a
flush-caches
.ATUALIZAÇÃO 28/08/2013 09:54 EDT
Se você tiver o Percona Server 5.5.30 e não houver opções, instale o Percona Server 5.5.28 ou 5.5.29 em um Dev Server e teste lá. Verifique
/etc/init.d/mysql
da seguinte forma:Se você encontrá-lo, Percona deve ter deixado de colocar essa opção em 5.5.30 (o que seria muito surpreendente). Como solução rápida, pegue a linha mysqld_safe de 5.5.28/29 e codifique-a na invocação mysqld_safe em 5.5.30.
No mínimo, siga a linha que você disse que funciona:
e incorpore isso
/etc/init.d/mysql
para 5.5.30 onde mysqld_safe é chamado.Espero que o erro humano (percona perdendo este (altamente improvável)) seja a razão desse problema e não algo muito mais profundo.