Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La configuración del tiempo de espera del controlador JDBC se puede usar para priorizar la capacidad de respuesta de la aplicación. De forma predeterminada, la mayoría de los tiempos de espera del controlador priorizan la espera de un resultado para garantizar la coherencia de los datos. Asegúrese de elegir los tiempos de espera adecuados para las necesidades de la aplicación.
Para la conexión inicial, se usa loginTimeout:
-
loginTimeoutes la cantidad de tiempo, en segundos, que el controlador espera para establecer una conexión con el servidor. Si se supera esta cantidad, se devuelve un error y no se establece ninguna conexión abierta. Un valor cero indica que el tiempo de espera es el predeterminado del sistema, que es de 30 segundos en la versión 11.2 y versiones posteriores. En la versión 10.2 y versiones inferiores, el tiempo de espera predeterminado es de 15 segundos. Cualquier valor distinto de cero es el número de segundos que debe esperar el controlador antes de dar por agotado el tiempo de espera de una conexión fallida. Si tiene problemas para establecer una conexión con el controlador JDBC de forma constante, es posible que tenga que aumentar este tiempo de espera a 90 o incluso 120 segundos.
Una vez establecida la conexión, queryTimeout, cancelQueryTimeout y lockTimeout se usan durante las ejecuciones de instrucciones.
socketTimeout se usa para cualquier comunicación del controlador con el servidor.
-
queryTimeoutes el tiempo, en segundos que esperará el controlador, después de enviar un comando execute al servidor, para recibir una respuesta del servidor con datos. Si se supera este tiempo, se cancela el comando. Superar este tiempo de espera no hace que se cierre la conexión. El valor predeterminado es -1, lo que significa que el tiempo de espera es infinito. -
cancelQueryTimeoutes el tiempo, en segundos, que el controlador espera una confirmación del servidor de la cancelación dequeryTimeoutantes de finalizar o cerrar la conexión de forma forzada. Es decir, el controlador espera la cantidad total decancelQueryTimeoutmásqueryTimeoutsegundos, antes de cerrarse la conexión. Establecer este tiempo de espera en un valor distinto de cero garantiza que las aplicaciones puedan seguir respondiendo si hay un error de red o de comunicación con el servidor, una vez superado el tiempo de espera de una consulta. El valor predeterminado de esta propiedad es -1, que es un tiempo de espera infinito. -
lockTimeoutes la cantidad de tiempo que hay que esperar para que se libere un bloqueo, en aquellos casos en los que hay un bloqueo en la ejecución de instrucciones. Superar este tiempo de espera no da como resultado una conexión cerrada. El valor predeterminado de esta propiedad es -1, que es un tiempo de espera infinito. -
socketTimeoutse aplica a todas las comunicaciones de socket con el servidor. Si el servidor detiene la comunicación con el controlador, ya sea no confirmando los datos o no respondiendo a estos, el controlador espera el valor desocketTimeoutantes de cerrar la conexión. Establecer este tiempo de espera en un valor distinto de cero garantiza que las aplicaciones puedan seguir respondiendo si hay un error de red o de comunicación con el servidor. El valor predeterminado es 0, lo que significa que el tiempo de espera es infinito. Asegúrese de quesocketTimeoutes mayor quequeryTimeoutpara evitar excepciones de tiempo de espera de socket durante la ventanaqueryTimeout. De forma similar, asegúrese de quesocketTimeoutes mayor quecancelQueryTimeoutpara evitar excepciones de tiempo de espera de socket durante la ventanacancelQueryTimeout.
Los valores de tiempo de espera razonables de la aplicación dependen de las prioridades de esta. Con el establecimiento de valores inferiores para los tiempos de espera se prioriza la capacidad de respuesta de la aplicación sobre la coherencia de los datos. Cuando se alcanzan los tiempos de espera, las aplicaciones deben decidir la mejor forma de actuar. Esa decisión se basa en la operación de la base de datos que se está realizando. Por ejemplo, en el caso de una instrucción SELECT, la decisión podría ser notificar un error al usuario o bien conectarse de nuevo y volver a intentarlo. En el caso de las instrucciones INSERT o UPDATE, esa decisión puede ser diferente.
En el caso de una aplicación con capacidad de respuesta, loginTimeout y queryTimeout deben establecerse en valores relativamente bajos. Del mismo modo, cancelQueryTimeout también debe establecerse en un valor bajo a fin de garantizar que el controlador no tenga que esperar demasiado tiempo para que el servidor confirme la cancelación de la consulta, al superarse un valor queryTimeout. Por último, socketTimeout debe establecerse para evitar que el controlador espere demasiado tiempo durante cualquier escenario en el que la conectividad al servidor se haya interrumpido (interrupción de la red, bloqueo del servidor, etc.).
Resumen de propiedades
| Propiedad | Descripción | Valor predeterminado | Resultado de conexión |
|---|---|---|---|
loginTimeout |
Número de segundos que el controlador debe esperar antes de que se agote el tiempo de espera de una conexión fallida. | 30 segundos [11.2 y versiones posteriores], en caso contrario, 15 segundos |
Conexión cerrada |
queryTimeout |
Número de segundos de espera antes de cancelar una consulta. | -1 [tiempo de espera infinito] | Conexión abierta |
cancelQueryTimeout |
Número de segundos de espera para la confirmación de la cancelación de QueryTimeout. | -1 [tiempo de espera infinito] | Conexión cerrada |
lockTimeout |
Número de milisegundos que se debe esperar antes de que la base de datos devuelva un error de bloqueo por tiempo de espera. | -1 [tiempo de espera infinito] | Conexión abierta |
socketTimeout |
Número de milisegundos de espera en una operación de lectura o escritura en un socket. | Cero [tiempo de espera infinito] | Conexión cerrada |