Actualmente estamos utilizando 4 ventanas de caja de CPU con 8 gb de RAM con MySQL 5.x instalado en el mismo cuadro. Estamos utilizando el servidor de aplicaciones Weblogic para nuestra aplicación. Estamos apuntando a 200 usuarios simultáneos para nuestra aplicación (obviamente no para el mismo módulo/pantalla). Entonces, ¿cuál es el número óptimo de conexiones que deberíamos configurar en el conjunto de conexiones (número mínimo y máximo) (estamos utilizando el mecanismo de agrupación de conexiones AS 'weblogic')?Número óptimo de conexiones en el grupo de conexiones
Respuesta
Hay una respuesta muy simple a esta pregunta:
El número de conexiones en la agrupación de conexiones debe ser igual al número de los hilos exec configurados en WebLogic.
El razonamiento es muy simple: si el número de conexiones es menor que el número de subprocesos, algunos de los subprocesos tal vez esperen una conexión, lo que hace que el grupo de conexiones sea un cuello de botella. Por lo tanto, debe ser igual al menos el número de subprocesos del ejecutor (tamaño del grupo de subprocesos).
Usted debe perfilar los diferentes flujos de trabajo previstos para averiguar. Idealmente, su grupo de conexiones también ajustará dinámicamente la cantidad de conexiones en vivo según el uso reciente, ya que es bastante común que la carga sea una función de la hora actual del área geográfica de destino.
comenzar con un número pequeño y tratar de llegar a un número razonable de usuarios concurrentes, a continuación, poner encima. Creo que es probable que descubra que su mecanismo de agrupación de conexiones no es tan instrumental en su escalabilidad como el resto del software.
+1 como creo que estoy descubriendo "Creo que es probable que encuentre que su mecanismo de agrupación de conexiones no es tan instrumental en su escalabilidad como el resto del software" – wmorrison365
Esto es algo que tiene que ser probado y determinado de forma individual - es casi imposible dar una respuesta precisa para sus circunstancias sin estar íntimamente familiarizado con ellos.
¿Hay alguna fórmula/mecanismo por el cual puede obtener una cantidad aproximada de conexiones en el grupo de conexiones? –
Probablemente desee comenzar cualquier cálculo determinando cuántas transacciones concurrentes (o usuarios) realmente puede esperar –
Es difícil obtener datos concretos para esto. Es también depende de una serie de factores que no mencionan -
200 usuarios concurrentes, pero ¿cuánto de su actividad generará consultas a la base? ¿10 consultas por carga de página? 1 consulta solo al iniciar sesión? etc., etc.
Tamaño de las consultas y el PP obviamente. Algunas consultas se ejecutan en milisegundos, algunas en minutos.
Puede supervisar MySQL para ver las consultas activas actuales con "show processlist". Esto podría darle una mejor idea de cuánta actividad realmente está sucediendo en el DB bajo carga máxima.
Es casi 1 consulta por página con un máximo de 3000 registros por consulta. –
La agrupación de conexiones debe ser capaz de crecer y Shink basado en las necesidades reales. Registre los números necesarios para hacer análisis en el sistema en ejecución, ya sea a través de declaraciones de registro o a través de la vigilancia JMX. Considere configurar alertas para escenarios como "pico detectado: más de X nuevas entradas tuvieron que ser asignadas en Y segundos", "la conexión estuvo fuera de la piscina por más de X segundos" lo que le permitirá prestar atención a problemas de rendimiento antes de que lleguen problemas reales
¿De verdad quiso decir 200 concurrentes usuarios o solo 200 usuarios registrados? En la mayoría de los casos, un usuario del navegador no podrá hacer más de 1 solicitud de página por segundo. Entonces, 200 usuarios traducen a 200 transacciones por segundo. Ese es un número bastante alto para la mayoría de las aplicaciones.
En cualquier caso, como ejemplo, vamos a ir con 200 transacciones por segundo. Digamos que cada parte delantera (navegador) tx tarda 0.5 segundos en completarse y de los 0.5 segundos, 0.25 se gastan en la base de datos. Por lo tanto, necesitaría 0.5 * 200 o 100 conexiones en el conjunto de temas de WebLogic y 0.25 * 200 = 50 conexiones en el grupo de conexiones de base de datos.
Para estar seguro, me gustaría indicar el tamaño de grupo de subprocesos máximo de al menos un 25% mayor de lo esperado para permitir picos de carga. Los mínimos pueden ser una pequeña fracción del máximo, pero la compensación es que podría llevar más tiempo para algunos usuarios porque se tendría que crear una nueva conexión. En este caso, 50 - 100 conexiones no son muchas para una base de datos, por lo que probablemente sea un buen número inicial.
Tenga en cuenta que para averiguar cuáles son sus tiempos de respuesta de transacción promedio, junto con su tiempo promedio de consulta de base de datos, tendrá que hacer una prueba de rendimiento porque sus tiempos de carga probablemente no serán los tiempos ver con un solo usuario.
bien explicado. :) –
El grupo de conexiones de dimensionamiento no es algo trivial. Usted necesita básicamente:
- métricas para investigar el uso de la conexión
- mecanismos de conmutación por error para cuando no hay conexión disponible
FlexyPool tiene como objetivo ayudarle a calcular el tamaño correcto de nuestro grupo de conexiones.
debes revisar los siguientes artículos:
- 1. Cuántas conexiones están disponibles en el grupo de conexiones ADO.NET
- 2. ¿Cómo configura su grupo de conexiones?
- 3. OpenSSL configure el número máximo de conexiones
- 4. El grupo de conexiones JDBC no vuelve a abrir Conexiones en tomcat
- 5. desconexión del grupo de conexiones android
- 6. ¿Cómo programar un grupo de conexiones?
- 7. ¿Cómo decido el número de conexiones requeridas en la agrupación de conexiones?
- 8. ¿Cómo supervisar el grupo de conexiones activo en SQL Server?
- 9. Qué sucede cuando el grupo de conexiones Npgsql alcanza Max
- 10. Faltan conexiones en el conjunto de conexiones tomcat jdbc
- 11. Número de conexiones de red posibles
- 12. Cómo encontrar lo que está usando las conexiones en mi grupo de conexiones
- 13. Todas las conexiones en el grupo están en uso
- 14. Aumento MongoDB número máximo de conexiones
- 15. Hibernate c3p0 grupo de conexiones sin tiempo de espera conexiones inactivas
- 16. Grupo de conexiones de bases de datos concurrentes en Haskell
- 17. Supervisión de conexiones usadas en mysql para depurar 'demasiadas conexiones'
- 18. ¿Cómo limito el número de conexiones que Jetty aceptará?
- 19. Limitar el número de conexiones simultáneas en Apache 2
- 20. Aumentar el número de conexiones simultáneas en tomcat 7
- 21. ¿Cómo verificar el número de conexiones abiertas en node.js?
- 22. ¿Qué sucede cuando se agota un grupo de conexiones?
- 23. agrupación de conexiones en Netty
- 24. El número de conexiones de Memcache nunca baja, sigue creciendo
- 25. Crear un grupo de conexiones de base de datos
- 26. Averigüe el número de conexiones al servidor tomcat
- 27. Conexiones de socket múltiple
- 28. c3p0 acrónimo origen - jdbc nombre del grupo de conexiones
- 29. ¿Realmente necesita un grupo de conexiones db para unicornios?
- 30. Número de conexiones de base de datos abierta
Esta pregunta probablemente pertenece en serverfault. – Elijah
@Elijah - Su gran pregunta relacionada con la programación. La descripción del cofre de H/W es para detallar el problema. SO es el lugar perfecto para esta pregunta. –
Sugeriría 4 (CPU) dividido por la espera% por ciento de tiempo. Sugiero MAX no más de 50 conexiones en paralelo, probablemente menos. Su CPU solo puede ejecutar 4 hilos a la vez, ninguna cantidad de configuración puede superar eso. La única forma en que ayuda es manejar esperas IO, que depende de su aplicación. – jasonk