Estou usando o asp.net com o MySQL. Na cadeia de conexão .Net, configurei o Tamanho máximo do pool como 150.
Se eu executar o seguinte, obtenho esses valores:
SHOW GLOBAL STATUS LIKE 'max_used_connections'; gives 66
SHOW GLOBAL STATUS LIKE 'Threads_created'; gives 66
SHOW GLOBAL STATUS LIKE 'connections'; gives 474
O que fornece Threads_created / Connections = 0,1392.
Então, a partir disso, parece que eu preciso aumentar thread_cache_size
.
Mas se eu correr SHOW PROCESSLIST
, sempre vejo que tenho muitas conexões abertas (a maioria delas dormindo) por causa do pool criado pelo .Net. Ainda preciso definir o thread_cache_size
como ainda reutilizarei as conexões do pool de conexões? Se o tamanho da piscina for 150, você acha que um bom valor seria definir thread_cache_size
150+? Isso afetaria muito a CPU e a memória?
fonte
De acordo com os documentos do MySQL, você deve configurar
thread_cache_size
para que a maioria das novas conexões use threads do cache em vez de threads recém-criados. Isso economiza alguma sobrecarga na criação de encadeamentos, embora normalmente não crie uma melhoria significativa no desempenho:Isso significa que você deve definir o seu
thread_cache_size
para queThreads_created / Connections
(a% de conexões que levam à criação de novos threads) seja bastante baixa. Se você pegar os documentos do MySQL literalmente ("most"), o valor deve ser <50%. A resposta de RolandoMySQLDBA diz <1%. Não sei quem está mais perto da verdade.Você não deve definir
thread_cache_size
mais alto queMax_used_connections
. A sentença final na resposta de RolandoMySQLDBA ("No mínimo, thread_cache_size deve ser maior que Max_used_connections") não parece sensata porque diz que você deve manter mais threads no cache do que o servidor já usa. O MySQL nunca colocará tantos threads no cache de qualquer maneira - ele não coloca preventivamente threads no cache - apenas os coloca depois que um cliente cria um thread e se desconecta. Se você nunca tiver clientes X conectados ao mesmo tempo, nunca terá X threads no cache:Veja também esta resposta de Michael:
/dba//a/28701
fonte
No dia útil de trabalho, um 'novo contratado' possivelmente precisaria de uma conexão? A maioria dos mágicos não sabe quantas pessoas podem ser contratadas nos próximos dias. A V 8 do MySQL sugere CAP thread_cache_size em 100 para evitar sobrecarga, independentemente de max_used_connections. Para mim, 100 é um bom CAP.
Veja este link, por favor.
fonte