У задачи резервного копирования SFTP возникла проблема с сетью, и после этого невозможно повторно подключиться на Debian

У задачи резервного копирования SFTP возникла проблема с сетью, и после этого невозможно повторно подключиться на Debian

У меня проблема с запланированной задачей в PHP на моем сервере Debian. Каждую ночь я отправляю резервную копию данных с сервера S1 на сервер S2. Оба сервера являются выделенными серверами, но не хостятся в одном и том же месте.

Резервная копия состоит из нескольких файлов (от 300 МБ до 5 ГБ), отправленных с помощью Net_SFTP из phpseclib, с несколькими таймерами расписания от 0 до 4 часов, чтобы не занимать слишком много ресурсов сетевого соединения.

И каждую ночь у меня проблема с 3-4 файлами, с сетевой ошибкой во время передачи (обычно, когда мы достигаем времени 100 тыс. мс, так что, возможно, тайм-аут), за которой следуют повторные попытки, которые не увенчались успехом без проблем с подключением (через 0,1 мс, что очень быстро для сетевой проблемы). Это может произойти в любое время ночи (сегодня в 3:14, вчера в 3:50), и когда это прервалось, все файлы, которые передавались в тот момент, получили точно такой же журнал (изменилось только время передачи первой попытки). Это никогда не один и тот же файл, файл может давать сбой 3 дня подряд и работать отлично в остальную часть недели.

Когда я проверяю потребление ресурсов на сетевом графике, я не нахожусь на максимальной пропускной способности, которую может обработать соединение между S1 и S2. Когда я запрашиваю журнал на хосте S2, они ничего не видят и говорят мне посмотреть системный журнал на S2, чтобы понять, что происходит.

Я являюсь пользователем root S1 и S2, поэтому могу проверить любой журнал, но не знаю, где искать (и что искать).

решение1

После поиска в журнале ошибок PHP я нахожу следующее уведомление:

Уведомление PHP: соединение преждевременно закрыто в /usr/share/php/Net/SSH2.php в строке yyyy Уведомление PHP: соединение закрыто сервером в /usr/share/php/Net/SSH2.php в строке xxxx Уведомление PHP: соединение закрыто сервером в /usr/share/php/Net/SSH2.php в строке xxxx

В файле SSH2.php, в строке xxxx, я обнаружил, что $this->fsock не сбрасывается при сбое соединения, тест if (!is_resource($this->fsock)) по-прежнему ложный, и fsockopen больше не выполняется.

Я установил свой класс Net_SFTP на null и выполнил новый Net_SFTP() во время повторной попытки, и у меня больше нет этой проблемы (у меня все еще есть обрыв сети, который я не могу определить, но повторная попытка теперь работает).

Связанный контент