Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

patrones:pool_conexiones [2013/04/20 14:16]
admin [Pool de conexiones]
patrones:pool_conexiones [2016/09/27 09:43] (actual)
admin [Configurando el pool de conexiones en Tomcat 7]
Línea 41: Línea 41:
     * Cuando llegan "m" peticines web , la aplicación pide "m" conexiones al pool de conexiones,quedando esperando en el pool "n-m" conexiones. Esta operación es muy rápida ya que la conexión ya está creada y solo hay que marcarla como que alguien la está usando. Ahora hay "m"  conexiones activas que está usando la aplicación.     * Cuando llegan "m" peticines web , la aplicación pide "m" conexiones al pool de conexiones,quedando esperando en el pool "n-m" conexiones. Esta operación es muy rápida ya que la conexión ya está creada y solo hay que marcarla como que alguien la está usando. Ahora hay "m"  conexiones activas que está usando la aplicación.
     * Cuando las peticiones web finalizan, las conexiones no se cierran sino que se devuelven al pool indicándole que ya se han acabado de usar las conexiones. Ahora vuelve a quedar "n" conexiones esperando en el pool. Esta operación también es muy rápida ya que realmente no se cierra ninguna conexión sino que simplemente se marcan como que ya no las están usando nadie.     * Cuando las peticiones web finalizan, las conexiones no se cierran sino que se devuelven al pool indicándole que ya se han acabado de usar las conexiones. Ahora vuelve a quedar "n" conexiones esperando en el pool. Esta operación también es muy rápida ya que realmente no se cierra ninguna conexión sino que simplemente se marcan como que ya no las están usando nadie.
-  * Si se piden más conexiones de las que hay esperando en el pool se creará en ese instante una nueva conexión hasta el máximo de conexiones que permita el pool+  * Si se piden más conexiones de las que hay esperando en el pool se crearán en ese instante nuevas conexiones hasta el máximo de conexiones que permita el pool
   * Al devolver una conexión al pool , ésta se queda esperando para que otra petición la pueda usar. Si hay ya demasiadas conexiones esperando a ser usadas se cerrarán para ahorrar recursos en el servidor de base de datos.   * Al devolver una conexión al pool , ésta se queda esperando para que otra petición la pueda usar. Si hay ya demasiadas conexiones esperando a ser usadas se cerrarán para ahorrar recursos en el servidor de base de datos.
  
  ¿Que hemos conseguido con el pool?  ¿Que hemos conseguido con el pool?
-  * Ahora las conexiones ya no se quedarán abiertas cuando el usuario se marcha del portal ya que cada conexión se //pseudoabre// y //pseudocierra// con cada petición. +  * Ahora las conexiones ya no se quedarán abiertas cuando el usuario se marcha del portal ya que cada conexión se //pseudo-abre// y //pseudo-cierra// con cada petición. 
-  * No tenemos tantas conexiones como usuarios usan la aplicación ya que solo se necesitan tantas como usuarios hay haciendo una petición en ese instante. Pensemos por un momento en facebook. ¿cuandos usuarios están conectados a facebook? Supongamos "n". Pero ¿cuantos están realmente haciendo una petición y no viendo los datos que se han servido? Supongamos "m". Obviamente "m" es mucho menor que "n". Con lo que nos hemos ahorrado "n-m" conexiones.+  * No tenemos tantas conexiones como usuarios usan la aplicación ya que solo se necesitan tantas como usuarios hay haciendo una petición en ese instante. Pensemos por un momento en facebook. ¿cuandos usuarios están conectados a facebook? Supongamos "x". Pero ¿cuantos están realmente haciendo una petición y no viendo los datos que se han servido? Supongamos "y". Obviamente "y" es mucho menor que "x". Con lo que nos hemos ahorrado "x-y" conexiones.
  
 ==== Ejemplo de Pool ==== ==== Ejemplo de Pool ====
-Supongamos un pool configurado de la siguiente forma:+Veamos ahora un ejemplo de uso de un pool de conexiones que ha sido configurado de la siguiente forma:
   * Máximo de conexiones: 200   * Máximo de conexiones: 200
   * Maximo de conexiones esperando: 50   * Maximo de conexiones esperando: 50
Línea 98: Línea 98:
 InitialContext initCtx=new InitialContext();;                         InitialContext initCtx=new InitialContext();;                        
 Context envCtx = (Context) initCtx.lookup("java:comp/env"); Context envCtx = (Context) initCtx.lookup("java:comp/env");
-DataSource ds = (DataSource)envCtx.lookup("jdbc/hibernate1"); +DataSource dataSource = (DataSource)envCtx.lookup("jdbc/hibernate1");
 </code> </code>
  
 Siendo ''jdbc/hibernate1'' el nombre del pool de conexiones. Siendo ''jdbc/hibernate1'' el nombre del pool de conexiones.
- 
 ===== Configurando el pool de conexiones en Tomcat 7 ===== ===== Configurando el pool de conexiones en Tomcat 7 =====
 Por último nos queda configurar el pool de conexiones. Cada servidor web puede usar su propia implementación del pool de conexiones y se configura de forma específica. Nosotros vamos a explicar como configurar el pool que viene incluido en Tomcat 7. Por último nos queda configurar el pool de conexiones. Cada servidor web puede usar su propia implementación del pool de conexiones y se configura de forma específica. Nosotros vamos a explicar como configurar el pool que viene incluido en Tomcat 7.
Línea 137: Línea 136:
 Hasta ahora solo hemos indicado los atributo básicos de conexión a la base de datos, veamos ahora los atributos concretos del pool: Hasta ahora solo hemos indicado los atributo básicos de conexión a la base de datos, veamos ahora los atributos concretos del pool:
   * El atributo 'maxActive' de la línea 12 indica el número máximo de conexiones que pueden usarse. Esto indicará el nº máximo de usuarios que podrá haber a la vez haciendo peticiones.Si hay más usuarios se producirá un error indicando que ya no hay conexiones.   * El atributo 'maxActive' de la línea 12 indica el número máximo de conexiones que pueden usarse. Esto indicará el nº máximo de usuarios que podrá haber a la vez haciendo peticiones.Si hay más usuarios se producirá un error indicando que ya no hay conexiones.
-  * El atributo 'maxIdle' de la línea 13 indica el número máximo de conexiones libres que puede haber esperando a que llegue un usuario para usarlas. Si hay demasiadas conexiones libres Tomcat empezará a cerrarlas hasta llegar al valor ''maxIdle'' para ahorrar recursos del servidor de base de datos.+  * El atributo 'maxIdle' de la línea 13 indica el número máximo de conexiones que puede haber esperando a que llegue un usuario para usarlas. Si hay demasiadas conexiones esperando Tomcat empezará a cerrarlas hasta que baje hasta el valor ''maxIdle''. Ésto se hace para ahorrar recursos del servidor de base de datos.
   * El atributo 'maxWait' de la línea 14 indica el tiempo en ms que esperará Tomcat a que haya una conexión libre en caso de que no hubiera ninguna libre en ese instante.   * El atributo 'maxWait' de la línea 14 indica el tiempo en ms que esperará Tomcat a que haya una conexión libre en caso de que no hubiera ninguna libre en ese instante.
   * El atributo 'validationQuery' de la línea 15 indica una SQL de tipo ''SELECT'' que lanza Tomcat para comprobar que la conexión aun está conectada a la base de datos y que ésta ultima no la ha cerrado unilateralmente.   * El atributo 'validationQuery' de la línea 15 indica una SQL de tipo ''SELECT'' que lanza Tomcat para comprobar que la conexión aun está conectada a la base de datos y que ésta ultima no la ha cerrado unilateralmente.
  
 +<note important>
 +El muy importante indicar el atributo ''validationQuery'' ya que sino se podría usar una conexión que la base de datos ha cerrado pero que Tomcat cree que aun está conectada.
 +</note>
  
 <note tip>Más información sobre el formato de este fichero se puede encontrar en [[http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html|The Tomcat JDBC Connection Pool]]</note> <note tip>Más información sobre el formato de este fichero se puede encontrar en [[http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html|The Tomcat JDBC Connection Pool]]</note>
 +
 +<note important>
 +En Tomcat 8 se usa un nuevo pool de conexiones.Esta nueva versión ha cambiado el nombre de varios atributos al configurar el pool y añadido otros nuevos.
 +Los mas destacables son los siguientes:
 +  * El parámetro de configuración ''maxActive'' ha sido renombrado a **maxTotal**
 +  * El parámetro de configuración ''maxWait'' ha sido renombrado a **maxWaitMillis**
 +
 +Mas información en [[https://tomcat.apache.org/migration-8.html#Database_Connection_Pooling|Apache Tomcat - Migration Guide - Tomcat 8.0.x - Database Connection Pooling]] y en [[http://commons.apache.org/proper/commons-dbcp/|Apache Commons BDCP]]
 +</note>
 +
patrones/pool_conexiones.1366460198.txt.gz · Última modificación: 2016/07/03 20:18 (editor externo)
Ir hasta arriba
CC Attribution-Noncommercial-Share Alike 3.0 Unported
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0