Медленное выполнение сценария

У меня странная проблема…

Мой скрипт:

#!/bin/bash SECONDS=0 lock_file=/tmp/$0.lock [ -e $lock_file ] && exit touch $lock_file echo "<<<db2_hadr_check>>>" instances=( db2inst1 db2inst2 ) plog() { lfile=/tmp/$0.log echo "[`date +%T`] $1" >> $lfile } for instance in "${instances[@]}"; do plog "get dbname for instance $instance" name=$(su - $instance -c 'echo $dbname') plog "get hadr info for instance $instance" arr=($(su - $instance -c 'db2pd -db $dbname -hadr | egrep -i "HADR_CONNECT_STATUS |HADR_LOG_GAP" | cut -d "=" -f 2')) plog "check result for instance $instance" s=${arr[0]} lg=${arr[1]} [ -z $s ] && s="DISCONNECTED" [ -z $lg ] && lg=0 plog "return result for instance $instance" #dbname hadr_conn_status log_gap echo "$name $s $lg" done plog "Execution time: $SECONDS" plog "############################################################" rm $lock_file 

Я вручную запускаю этот скрипт на своем тестовом сервере (Fedora release 21) …

Вход из моего ручного запуска:

 [11:46:36] get dbname for instance db2inst1 [11:46:37] get hadr info for instance db2inst1 [11:46:37] check result for instance db2inst1 [11:46:37] return result for instance db2inst1 [11:46:37] get dbname for instance db2inst2 [11:46:38] get hadr info for instance db2inst2 [11:46:39] check result for instance db2inst2 [11:46:39] return result for instance db2inst2 [11:46:39] Execution time: 3 [11:46:39] ############################################################ 

После этого я добавил эту проверку на свой мониторный сервер (nagios + check_mk). Если я запустил check_mk_agent (который затем вызывает мой скрипт), я получаю это время выполнения:

 real 0m2.923s user 0m0.755s sys 0m1.982s 

Хорошо.

Вот моя проблема …

Вход из выполнения с сервером check_mk:

 [11:48:38] get dbname for instance db2inst1 [11:49:04] get hadr info for instance db2inst1 [11:49:30] check result for instance db2inst1 [11:49:30] return result for instance db2inst1 [11:49:30] get dbname for instance db2inst2 [11:49:55] get hadr info for instance db2inst2 [11:50:21] check result for instance db2inst2 [11:50:21] return result for instance db2inst2 [11:50:21] Execution time: 103 [11:50:21] ############################################################ 

когда этот скрипт вызывается из check_mk (nagios), он работает в течение 103 секунд !

Может ли кто-нибудь объяснить это?


Дополнительная информация № 1:

сервер check_mk использует xinetd для выполнения check_mk_agent на хосте

config file (/etc/xinetd.d/check_mk):

 service check_mk { type = UNLISTED port = 6556 socket_type = stream protocol = tcp wait = no user = root server = /usr/bin/check_mk_agent log_on_success = disable = no } 

/etc/pam.d/su:

 #%PAM-1.0 auth sufficient pam_rootok.so # Uncomment the following line to implicitly trust users in the "wheel" group. #auth sufficient pam_wheel.so trust use_uid # Uncomment the following line to require a user to be in the "wheel" group. #auth required pam_wheel.so use_uid auth substack system-auth auth include postlogin account sufficient pam_succeed_if.so uid = 0 use_uid quiet account include system-auth password include system-auth session include system-auth session include postlogin session optional pam_xauth.so 

Дополнительная информация № 2:

После комментария @Lambert я сделал следующее:

На сервере nagios в / etc / hosts я добавил сервер db2 IP На сервере db2 / etc / hosts я добавил IP-адрес сервера nagios

Я попробовал еще 2 вещи:

На сервере nagios :

Команда:

 time ssh root@db2server /usr/bin/check_mk_agent 

Результат:

 ... real 0m5.917s user 0m0.025s sys 0m0.028s 

Команда:

 time telnet db2server 6556 

Результат:

 ... real 0m51.859s user 0m0.005s sys 0m0.014s 

Я запускал это несколько раз с теми же результатами …

На db2server в / var / log / messages я нашел это:

 Oct 30 14:48:55 db2server su: (to db2inst1) root on pts/0 <- 1. command Oct 30 14:50:59 db2server su: (to db2inst1) root on none <- 2. command 

Дополнительная информация № 3:

Команда:

 time ssh root@db2server telnet localhost 6556 

Результат:

 real 0m7.510s user 0m0.029s sys 0m0.034s 

Есть идеи?

Linux и Unix - лучшая ОС в мире.