[FUG-BR] Diferença absurda do mysql no Linux para o do FreeBSD

Edson Brandi ebrandi em fugspbr.org
Quarta Julho 11 11:49:24 BRT 2012


Em 11 de julho de 2012 10:36, Marcelo Gondim <gondim at bsdinfo.com.br> escreveu:
> Pessoal,
>
> Peguei uma base mysql rodando no FreeBSD e setei o max_connection para
> 4000. Tenho 12Gb de ram nessa máquina que fiz o teste, meu i7. :)  após
> rodar o tuning-primer o memory usage simplesmente estoura. Conforme abaixo:
>
> MEMORY USAGE
> Max Memory Ever Allocated : 438 M
> Configured Max Per-thread Buffers : 48.46 G
> Configured Max Global Buffers : 426 M
> Configured Max Memory Limit : 48.87 G
> Physical Memory : 13.00 G
>
> Max memory limit exceeds 90% of physical memory
>
> Valores até 1000 eu consegui no FreeBSD, sem estourar, mas ocupava
> bastante ram mesmo assim.
> Quando eu faço a mesma coisa em uma máquina equivalente, com mais
> memória, só que com Linux, usando os 4000 em max_connections a coisa
> fica boa conforme abaixo:
>
> MEMORY USAGE
> Max Memory Ever Allocated : 10.10 G
> Configured Max Per-thread Buffers : 11.71 G
> Configured Max Global Buffers : 2.13 G
> Configured Max Memory Limit : 13.85 G
> Physical Memory : 23.53 G
> Max memory limit seem to be within acceptable norms
>
> Reparem que no caso do Linux o "Configured Max Per-thread Buffers" e o
> "Configured Max Memory Limit" não estouraram a ram disponível. O que
> poderia estar causando isso no FreeBSD? Já procurei em tudo quanto foi
> lugar pra tentar resolver e a única coisa que eu havia visto é que no
> Linux suportaria as 4000 conexões mas em outras plataformas não.
>
> Quem puder fazer esses testes e comprovar é só dizer.  :)

Marcelo,

Antes de palpitar, me diga uma coisa...

O seu FreeBSD roda em 32 ou 64 Bits? O seu mysqld é 32 ou 64 bits?

Como está o seu kern.maxdsiz ? Pelos numero me parece que sua maquina
ainda está usando o tamanho default de 512 Mb como sendo o segmento
máximo de memoria que pode ser alocada por um processo, esse é o
primeiro problema que eu vejo...

Cada thread do mysql vai consumir no minimo uns 200k de memoria, para
4000 conexões/threads vc precisa permitir no minimo 1.5 Gb de memoria
alocada por processo.

De uma olhada nos demais limites do seu sistema com o ulimit-a , vc
pode precisar mexer em outros items...

Como estão os parâmetros da sessão [mysqld] do seu my.cnf na sua
instalação FreeBSD e na sua instalação Linux? Eles estão iguais?
Existem uma série de itens de configuração que mudam radicalmente o
consumo de memoria do seu servidor, e a comparação pra ser justa tem
que ser feita em cenários iguais.

Se tiver tempo, recomendo a leitura do artigo
http://mysql.rjweb.org/doc.php/memory , vai ajudar a entender melhor
como o mysql trata o uso de memoria.

[ ]´s Brandi


Mais detalhes sobre a lista de discussão freebsd