[squid-users] tcp timeout issue

From: Frank Ruiz <[email protected]>
Date: Tue, 2 Oct 2007 11:35:02 -0700

Greetings,

I patched squid2.6 stable 14 with the tcp probe patch.

It patched two files:

cache_cf.c
neighbors.c

However, After about 14 hours of good runtime, my response times,
began to suck, and began to see errors again indicative of the tcp
probe issue:

2007/10/02 01:57:15| Detected REVIVED Parent: 10.10.10.20
2007/10/02 01:57:16| TCP connection to 10.10.10.20/80 failed
2007/10/02 01:57:16| TCP connection to 10.10.10.20/80 failed
2007/10/02 01:57:16| TCP connection to 10.10.10.20/80 failed
2007/10/02 01:57:16| TCP connection to 10.10.10.20/80 failed
2007/10/02 01:57:16| TCP connection to 10.10.10.20/80 failed
2007/10/02 01:57:16| TCP connection to 10.10.10.20/80 failed
2007/10/02 01:57:16| TCP connection to 10.10.10.20/80 failed
2007/10/02 01:57:16| TCP connection to 10.10.10.20/80 failed
2007/10/02 01:57:16| TCP connection to 10.10.10.20/80 failed
2007/10/02 01:57:16| TCP connection to 10.10.10.20/80 failed
2007/10/02 01:57:16| Detected DEAD Parent: 10.10.10.20
2007/10/02 01:57:16| TCP connection to 10.10.10.20/80 failed

The origin server is available, however I keep getting
revivied/connectionfailed/dead

It seems that the only way to recover from this is a restart.

I am running solaris 10, and I had to download the gnu patch utility
in order to patch the src.

Here was the patch applied.

Index: src/cache_cf.c
===================================================================
RCS file: /cvsroot/squid/squid/src/cache_cf.c,v
retrieving revision 1.470
diff -u -p -r1.470 cache_cf.c
--- src/cache_cf.c 20 Jul 2007 21:08:47 -0000 1.470
+++ src/cache_cf.c 28 Aug 2007 23:46:47 -0000
@@ -1621,6 +1621,7 @@ parse_peer(peer ** head)
     p->stats.logged_state = PEER_ALIVE;
     p->monitor.state = PEER_ALIVE;
     p->monitor.interval = 300;
+ p->tcp_up = PEER_TCP_MAGIC_COUNT;
     if ((token = strtok(NULL, w_space)) == NULL)
        self_destruct();
     p->host = xstrdup(token);
Index: src/neighbors.c
===================================================================
RCS file: /cvsroot/squid/squid/src/neighbors.c,v
retrieving revision 1.318
diff -u -p -r1.318 neighbors.c
--- src/neighbors.c 20 Jul 2007 21:08:47 -0000 1.318
+++ src/neighbors.c 28 Aug 2007 23:46:47 -0000
@@ -1010,12 +1010,13 @@ peerDNSConfigure(const ipcache_addrs * i
        debug(0, 0) ("WARNING: No IP address found for '%s'!\n", p->host);
        return;
     }
- p->tcp_up = PEER_TCP_MAGIC_COUNT;
     for (j = 0; j < (int) ia->count && j < PEER_MAX_ADDRESSES; j++) {
        p->addresses[j] = ia->in_addrs[j];
        debug(15, 2) ("--> IP address #%d: %s\n", j, inet_ntoa(p->addresses[j]))
;
        p->n_addresses++;
     }
+ if (!p->tcp_up)
+ peerProbeConnect((peer *) p);
     ap = &p->in_addr;
     memset(ap, '\0', sizeof(struct sockaddr_in));
     ap->sin_family = AF_INET;

Any ideas is much appreciated. Any special debug info you need, please
let me know.

Also, as I side note, I have monitorurl set as well

cache_peer 10.10.10.20 parent 80 0 no-query no-digest originserver
monitorinterval=30 monitorurl=http://10.10.10.20/test.jpg

Thank you!
Received on Tue Oct 02 2007 - 12:35:08 MDT

This archive was generated by hypermail pre-2.1.9 : Thu Nov 01 2007 - 13:00:00 MDT