Работа Jenkins зависла при запуске файла .bat на удаленном сервере ssh (windows 2008 R2)

У меня есть установка jenkins, работающая на солярисе. Я настроил задание, которое запускает файл .bat с помощью подключаемого модуля jenkins ssh на удаленном сервере Windows 2008 R2 с базой данных оракула. Файлы .bat восстанавливают RMAN в базе данных оракула. У меня есть сервер openssh, работающий на сервере Windows 2008 R2. Когда я восстанавливаю базу данных меньшего размера, что занимает менее 30 минут, все работает нормально. Но когда база данных большая и восстановление занимает более 3 часов, задание jenkins зависает, даже если восстановление rman, указанное заданием, успешно завершается на сервере.

Это команда, которую я запускаю в командном окне плагина jenkins ssh:

/cygdrive/C/OpenSSH/bin/SSH_ImportTEST_DB.bat TEST3

Это то, что делает файл .bat.

  1. Подготовьте БД для восстановления RMAN (запускает несколько команд sql от имени системного пользователя)
  2. Запустите восстановление RMAN
  3. Запустите еще несколько команд sql, чтобы база данных была доступна для всех пользователей, сбросьте пароли.

Шаги 1 и 2 работают нормально, но задание jenkins просто отображается как выполнение шага 2, даже если оно завершено на удаленном сервере. Шаг 3 никогда не выполняется, если восстановление rman длится более 3 часов.

X:\oracle\admin\TEST3\scripts>rman auxiliary cmdfile=X:\oracle\admin\TEST3\scripts\restore_db2.sql log=Y:\oracle\NightlyBackup\Prod\restore_MSIPTST3.log 
RMAN> 2> 

Вот что содержит restore_db2.sql:

DUPLICATE DATABASE TO TEST3 BACKUP LOCATION 'Y:\oracle\NightlyBackup\Prod';
exit;

Я пробовал restore_db2.sql без команды выхода, но это тоже не помогает.

Я настроил ServerAliveInterval 60 в ssh_config на сервере, где работает jenkins. Я также настроил ClientAliveInterval 60 в sshd_config на сервере openssh, чтобы исключить тайм-ауты.

Может ли кто-нибудь помочь?


person KVD    schedule 11.09.2013    source источник
comment
Вы убедились, что ssh-соединение действительно поддерживается? Если вы запустите сниффер на хосте Jenkins или на подчиненном устройстве, увидите ли вы нулевые пакеты ssh каждую минуту? Исчез ли процесс rman после завершения восстановления базы данных?   -  person Anders Lindahl    schedule 11.09.2013
comment
Как запустить сниффер на хосте Jenkins или на удаленном сервере? Процесс rman завершает работу, как только завершает восстановление. Я отслеживал это через вкладку процессов диспетчера задач Windows. ssh тоже исчезает сразу после завершения восстановления.   -  person KVD    schedule 11.09.2013


Ответы (1)


Настройте свой клиент Windows как подчиненный jenkins, потому что cygwin openssh не подходит для удаленных заданий. В вашем случае я бы рекомендовал вариант Java Web Start. Пример конфигурации опубликован по адресу: https://wiki.jenkins-ci.org/display/JENKINS/Step+by+step+guide+to+set+up+master+and+slave+machines

person SlashGordon    schedule 09.10.2015