Si encuentras el error 10054 en una computadora con sistema operativo Windows o el error 104 en una computadora con sistema operativo Linux eso puede significar que alguna aplicación (un sistema de contabilidad, de ventas, de facturación, etc.) no cerró correctamente la conexión con el Servidor del Firebird. O también que fue la propia red, el router o el firewall quien cerró la conexión porque ésta estuvo mucho tiempo ociosa (o sea, la conexión estaba abierta pero no tenía tráfico, entonces fue cerrada).

El error 10054 “connection reset by peer” es un problema de la red que a veces puede deberse a una red que está mal configurada o a un problema de hardware. Por ejemplo, los routers pueden ser configurados para que después de “x” segundos cierren las conexiones ociosas. Si tu router está configurado para cerrar las conexiones que estén 60 ó más segundos ociosas, cualquier conexión que no tenga movimiento durante 60 segundos será cerrada y el programa que abrió esa conexión no lo sabrá, se enterará recién cuando quiera hacer uso de ella pero no pueda porque el router la cerró.

En un lenguaje más técnico lo que sucede es lo siguiente:

  • Una computadora (o algún otro dispositivo conectado al Servidor, como un celular, una tableta, etc.) quiso hacer uso de una conexión que ya tenía establecida con otra computadora (o celular o tableta, etc.) y como no lo consiguió envió un paquete para restablecer TCP
  • La computadora que recibió el paquete (normalmente aquella donde se encuentra el Servidor del Firebird) no había cerrado la conexión que ya tenía abierta con esa computadora (o celular, o tableta, etc.)
  • No hay forma de saber cual fue el motivo para que se restableciera la conexión, pero puedes escribir un ping que envíe muchos paquetes al Servidor y mirar si hay paquetes perdidos: PING -t -l 1350 192.168.0.2 (el segundo parámetro es una L minúscula, no es el número 1. La dirección IP es la de tu Servidor que generalmente será distinta a la de este ejemplo). Si dejas correr al PING durante uno o dos minutos y encuentras que hay paquetes perdidos entonces tu red no es confiable
  • Una causa común del error 10054 (104 en Linux) es que el tamaño de los paquetes que viajan por la red no es de 1500 (que es el valor por defecto). Usando direcciones de IP fijas generalmente resuelve el problema
  • La otra causa común es que la red, el router o el firewall cierren las conexiones que estén ociosas durante más de “x” segundos. La solución es no dejar conexiones ociosas durante tanto tiempo o aumentar los segundos de tolerancia.
  • Otra causa, no tan común pero que tampoco es rara es la siguiente: saliste de tu aplicación sin cerrar la conexión con la Base de Datos.
  • Y una cuarta forma de evitar ese error es la siguiente: te conectas con el Servidor, le envías un comando, te desconectas. Si necesitas enviar muchos comandos esta constante apertura y cierre de conexión hará que tu aplicación sea lenta, pero al menos funcionará.

IMPORTANTE: Puedes usar el programa IBSurgeon Log Viewer para detectar cuando y por qué ocurre el error 10054. Este programa es gratis y lo puedes descargar desde:

http://firebirdsurgeon.blogspot.com/2012/01/ibsurgeon-log-viewer-new-free-product.html

 

 

.