![La tarea de copia de seguridad SFTP tuvo un problema de red y no puede volver a conectarse después en Debian](https://rvso.com/image/1641919/La%20tarea%20de%20copia%20de%20seguridad%20SFTP%20tuvo%20un%20problema%20de%20red%20y%20no%20puede%20volver%20a%20conectarse%20despu%C3%A9s%20en%20Debian.png)
Tengo un problema con una tarea programada en PHP en mi servidor Debian. Todas las noches envío una copia de seguridad de los datos del servidor S1 al servidor S2. Los dos servidores son servidores dedicados pero no están alojados en la misma ubicación.
La copia de seguridad se compone de varios archivos (de 300 MB a 5 GB) enviados con Net_SFTP desde phpseclib, con temporizador de programación múltiple entre las 0 h y las 4 h para no consumir muchos recursos en la conexión de red.
Y todas las noches, tengo problemas con 3 o 4 archivos, con un error de red durante la transferencia (generalmente cuando alcanzamos los 100 000 ms, tal vez un tiempo de espera), seguido de reintentos que fallaron sin problemas de conexión (en 0,1 ms, muy rápido para un problema de red). Puede suceder en cualquier momento durante la noche (3h14 hoy, 3h50 ayer) y cuando se cortó, todos los archivos que se estaban transfiriendo en ese momento obtuvieron exactamente el mismo registro (con solo la hora de transferencia del primer intento que cambió). Nunca es el mismo archivo, un archivo puede fallar 3 días seguidos y funcionar perfectamente el resto de la semana.
Cuando verifico el consumo de recursos en el gráfico de la red, no estoy en el ancho de banda máximo que puede manejar la conexión entre S1 y S2. Cuando solicité un registro en el host de S2, no vieron nada y me dijeron que mirara el registro del sistema en S2 para entender qué sucedió.
Soy root de S1 y S2, por lo que puedo consultar cualquier registro, pero no sé dónde buscar (ni qué busco).
Respuesta1
Después de buscar en el registro de errores de php, encuentro un aviso:
Aviso de PHP: Conexión cerrada prematuramente en /usr/share/php/Net/SSH2.php en línea yyyy Aviso de PHP: Conexión cerrada por el servidor en /usr/share/php/Net/SSH2.php en línea xxxx Aviso de PHP: Conexión cerrada por servidor en /usr/share/php/Net/SSH2.php en la línea xxxx
En el archivo SSH2.php, en la línea xxxx, encontré que $this->fsock no se restablece al fallar la conexión, la prueba if (!is_resource($this->fsock)) sigue siendo falsa, y luego fsockopen no se realiza de nuevo.
Configuré mi clase Net_SFTP en nula y realicé un nuevo Net_SFTP() durante el reintento, y ya no tengo este problema (todavía tengo un corte de red que no puedo identificar, pero el reintento funciona ahora).