스크립트 실행 속도가 느림

스크립트 실행 속도가 느림

이상한 문제가 있습니다 ...

내 스크립트:

#!/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 버전 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를 실행합니다.

구성 파일(/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의 의견 이후에 나는 다음과 같이 했습니다.

/etc/hosts의 nagios 서버에서 db2 서버 IP를 추가했습니다. db2 서버 /etc/hosts에서 nagios 서버 IP를 추가했습니다.

나는 두 가지를 더 시도했습니다.

존재하다나기오스섬기는 사람:

주문하다:

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/메시지나는 이것을 찾았다:

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

어떤 아이디어가 있나요?

관련 정보