healthcheck do not working

gidrobaton nginx-forum at nginx.us
Fri Jul 29 09:17:02 UTC 2011


Good day! I have same problem with nginx-1.0.5 (and nginx-1.0.0)

root at true:/tmp/nginx-1.0.5# ./configure
--add-module=/tmp/nginx_upstream_hash-0.3.1/
--add-module=/tmp/healthcheck_nginx_upstreams/ --with-debug

error_log logs/error_log debug_http;

    upstream backend {
        ip_hash;
        server 172.16.0.130:81;
        server 172.16.0.130:82;
        server 172.16.0.130:22;
#       hash $remote_addr;
#       hash_again 0;
        healthcheck_enabled;
        healthcheck_delay 5000;
        healthcheck_timeout 1500;
        healthcheck_failcount 1;
        healthcheck_send "GET /PingAction.do HTTP/1.0" 'Host: ivis0';
    }




2011/07/29 12:15:54 [debug] 26735#0: healthcheck: begun healthcheck of
index 2
2011/07/29 12:15:54 [debug] 26735#0: healthcheck: Memzero done
2011/07/29 12:15:54 [debug] 26735#0: healthcheck: Connecting peer
2011/07/29 12:15:54 [debug] 26735#0: healthcheck: connected so far
2011/07/29 12:15:54 [debug] 26735#0: healthcheck: Peer connected
2011/07/29 12:15:54 [debug] 26735#0: healthcheck: Send size 44
2011/07/29 12:15:54 [debug] 26735#0: healthcheck: Finished sending
request
2011/07/29 12:15:54 [debug] 26735#0: healthcheck: Write handler called
2011/07/29 12:15:54 [debug] 26735#0: healthcheck: Ignoring a write.  Not
in writing state
2011/07/29 12:15:54 [debug] 26735#0: healthcheck: Read handler called
2011/07/29 12:15:54 [debug] 26735#0: healthcheck: Recv size 39 when I
wanted 6442450945000
2011/07/29 12:15:54 [debug] 26735#0: healthcheck: Recv size -2 when I
wanted 6442450944961
2011/07/29 12:15:54 [debug] 26735#0: healthcheck: Process recv
2011/07/29 12:15:54 [debug] 26735#0: healthcheck: Finished
172.16.0.130:22, state 201
2011/07/29 12:15:54 [debug] 26733#0: healthcheck: begun healthcheck of
index 0
2011/07/29 12:15:54 [debug] 26733#0: healthcheck: Memzero done
2011/07/29 12:15:54 [debug] 26733#0: healthcheck: Connecting peer
2011/07/29 12:15:54 [debug] 26733#0: healthcheck: connected so far
2011/07/29 12:15:54 [debug] 26733#0: healthcheck: Peer connected
2011/07/29 12:15:54 [debug] 26733#0: healthcheck: Send size 44
2011/07/29 12:15:54 [debug] 26733#0: healthcheck: Finished sending
request
2011/07/29 12:15:54 [debug] 26733#0: healthcheck: Write handler called
2011/07/29 12:15:54 [debug] 26733#0: healthcheck: Ignoring a write.  Not
in writing state
2011/07/29 12:15:54 [debug] 26733#0: healthcheck: Write handler called
2011/07/29 12:15:54 [debug] 26733#0: healthcheck: Ignoring a write.  Not
in writing state
2011/07/29 12:15:54 [debug] 26733#0: healthcheck: Read handler called
2011/07/29 12:15:54 [debug] 26733#0: healthcheck: Recv size 211 when I
wanted 4398046512104
2011/07/29 12:15:54 [debug] 26733#0: healthcheck: Recv size -2 when I
wanted 4398046511893
2011/07/29 12:15:54 [debug] 26733#0: healthcheck: Process recv
2011/07/29 12:15:54 [debug] 26733#0: healthcheck: Finished
172.16.0.130:81, state 100
2011/07/29 12:15:57 [debug] 26735#0: healthcheck: begun healthcheck of
index 1
2011/07/29 12:15:57 [debug] 26735#0: healthcheck: Memzero done
2011/07/29 12:15:57 [debug] 26735#0: healthcheck: Connecting peer
2011/07/29 12:15:57 [debug] 26735#0: healthcheck: connected so far
2011/07/29 12:15:57 [debug] 26735#0: healthcheck: Peer connected
2011/07/29 12:15:57 [debug] 26735#0: healthcheck: Send size 44
2011/07/29 12:15:57 [debug] 26735#0: healthcheck: Finished sending
request
2011/07/29 12:15:57 [debug] 26735#0: healthcheck: Write handler called
2011/07/29 12:15:57 [debug] 26735#0: healthcheck: Ignoring a write.  Not
in writing state
2011/07/29 12:15:57 [debug] 26735#0: healthcheck: Read handler called
2011/07/29 12:15:57 [debug] 26735#0: healthcheck: Recv size 211 when I
wanted 6442450945000
2011/07/29 12:15:57 [debug] 26735#0: healthcheck: Recv size -2 when I
wanted 6442450944789
2011/07/29 12:15:57 [debug] 26735#0: healthcheck: Process recv
2011/07/29 12:15:57 [debug] 26735#0: healthcheck: Finished
172.16.0.130:82, state 100



Where 81 and 82 tcp-ports is a tomcat, who answer "HTTP/1.1 200 OK\r\n"
with some fields and close connection.
And 22 is a localhost ssh server, who simply close tcp socket without
answer if nginx send "GET /PingAction.do HTTP/1.0\r\n" 

As i see in ngx_http_healthcheck_module.c 
"state 100" is a NGX_HEALTH_OK ( // Good + final states)
"state 201" is a NGX_HEALTH_BAD_STATUS (// bad + final states)

But in my case all inversely - :81 and :82 are good - they answer
"HTTP/1.1 200 OK\r\n"
and 22 is bad - he close connection without answer

Posted at Nginx Forum: http://forum.nginx.org/read.php?2,191445,213076#msg-213076



More information about the nginx mailing list