Estoy usando Asp.Net junto con MySQL. En la cadena de conexión .Net, configuré Max Pool Size en 150.
Si ejecuto lo siguiente, obtengo estos 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
Lo que da Threads_created / Connections = 0,1392.
Entonces, parece que necesito aumentar thread_cache_size
.
Pero si corro SHOW PROCESSLIST
siempre veo que tengo muchas conexiones abiertas (la mayoría de ellas inactivas) debido al grupo creado por .Net. ¿Debo seguir configurando thread_cache_size
ya que seguiré reutilizando las conexiones del grupo de conexiones? Si el tamaño de la agrupación es 150, ¿cree que un buen valor sería establecer thread_cache_size
150+? ¿Esto afectaría mucho la CPU y la memoria?
fuente
De acuerdo con los documentos de MySQL, debe configurar
thread_cache_size
para que la mayoría de las conexiones nuevas usen hilos del caché en lugar de hilos recién creados. Esto ahorra algunos gastos generales de creación de subprocesos, aunque normalmente no crea una mejora significativa del rendimiento:Esto significaría que debe configurar su
thread_cache_size
modo para queThreads_created / Connections
(el% de conexiones que conducen a la creación de nuevos hilos) sea bastante bajo. Si toma los documentos de MySQL literalmente ("la mayoría"), el valor debe ser <50%. La respuesta de RolandoMySQLDBA dice <1%. No sé quién está más cerca de la verdad.Usted debe no establecer
thread_cache_size
más alto queMax_used_connections
. La oración final en la respuesta de RolandoMySQLDBA ("Como mínimo, thread_cache_size debería ser mayor que Max_used_ connections") no parece sensata porque dice que debe mantener más hilos en la memoria caché de los que utiliza su servidor . MySQL nunca colocará tantos subprocesos en el caché de todos modos, no coloca subprocesos preventivamente en el caché, solo los coloca allí después de que un cliente crea un subproceso y se desconecta. Si nunca tiene clientes X conectados al mismo tiempo, nunca tendrá hilos X en el caché:Ver también esta respuesta de Michael:
/dba//a/28701
fuente
En el día laboral común, ¿necesitaría una 'nueva contratación' una conexión? La mayoría de los magos no sabrán cuántas personas podrían ser contratadas en los próximos días. V 8 de MySQL sugiere CAP thread_cache_size a 100 para evitar la sobrecarga, independientemente de max_used_ connections. Para mí, 100 es un buen CAP.
Vea este enlace, por favor.
fuente