Plz Help Varnish died signal=6 , keep panic and restart every few second - minute

M L ml at tinwong.com
Mon Sep 21 12:18:07 CEST 2009


Hi list , i have googled few day , have no luck to find any clue for my
problem  anyone have idea solve this problem thanks alot

Box config : centos 5.3 kernel 2.6.18-8.1.14.el5  64bit / varnish 2.0.4

varnishd -a 0.0.0.0:80 -T 127.0.0.1:3500 -p client_http11=on -f vconf2 -s
file,/usr/local/varnish/cache.bin,80G -h classic,500009 -p listen_depth=4096
-p obj_workspace=32768 -p sess_workspace=32768 -p send_timeout=327

from /var/log/message

Sep 20 21:26:36 x2
varnishd[21933]<http://varnish.projects.linpro.no/changeset/21933>:
Child (21934) died signal=6 Sep 20 21:26:36 x2
varnishd[21933]<http://varnish.projects.linpro.no/changeset/21933>:
Child (21934) Panic message: Assert error in VRT_IP_string(), cache_vrt.c
line 693: Condition((p = WS_Alloc(sp->http->ws, len)) != 0) nlient =
211.74.185.119:2909, step = STP_RECV, handling = error, err_code = 503,
err_reason = (null), ws = 0x2abeb5926078 { overflow id = "sess", {s,f,r,e} =
cname = { "input", "Default", }, }, },

Sep 20 21:26:36 x2
varnishd[21933]<http://varnish.projects.linpro.no/changeset/21933>:
child (21952) Started Sep 20 21:26:36 x2
varnishd[21933]<http://varnish.projects.linpro.no/changeset/21933>:
Child (21952) said Closed fds: 4 5 8 9 11 12 Sep 20 21:26:36 x2 varnishd
[21933] <http://varnish.projects.linpro.no/changeset/21933>: Child (21952)
said Child starts Sep 20 21:26:36 x2
varnishd[21933]<http://varnish.projects.linpro.no/changeset/21933>:
Child (21952) said managed to mmap 85899345920 bytes of 85899345920 Sep 20
21:26:36 x2 varnishd[21933]<http://varnish.projects.linpro.no/changeset/21933>:
Child (21952) said Ready Sep 20 21:28:10 x2
varnishd[21933]<http://varnish.projects.linpro.no/changeset/21933>:
Child (21952) died signal=6 Sep 20 21:28:10 x2
varnishd[21933]<http://varnish.projects.linpro.no/changeset/21933>:
Child (21952) Panic message: Assert error in WS_Release(), cache_ws.c line
170: Condition(bytes <= ws->e - ws->f) not true. thread = (10:32759, step =
STP_RECV, handling = error, err_code = 503, err_reason = (null), ws =
0x2abeb5a65078 { id = "sess", {s,f,r,e} = {0x2abeb5a65808+32738,+32
"Default", }, }, },


VCL config


backend default {
    .host = "10.0.0.5";
    .port = "80";
    .connect_timeout = 1s;
    .first_byte_timeout = 5s;
    .between_bytes_timeout = 2s;
}

backend srv1 {
    .host = "10.0.0.5";
    .port = "80";
    .connect_timeout = 1s;
    .first_byte_timeout = 5s;
    .between_bytes_timeout = 2s;
}

backend srv2 {
    .host = "10.0.0.5";
    .port = "80";
    .connect_timeout = 1s;
    .first_byte_timeout = 5s;
    .between_bytes_timeout = 2s;
}

acl purge {

    "localhost"; "127.0.0.1";
}

#recv
sub vcl_recv {

if (req.http.host ~ "www.foobar.com") {
    set req.http.host = "www.foobar.com";
    if (req.restarts == 0) {
    set req.backend = srv1;
    } else if (req.restarts == 1) {
    set req.backend = allhabit2;
    }

}elseif ( req.http.host ~ "www.zoobar.com") {
    set req.http.host = "www.zoobar.com";
    if (req.restarts == 0) {
        set req.backend = srv1;
        } else if (req.restarts == 1) {
        set req.backend = srv2;
        }

}elseif ( req.http.host ~ "www.yoobar.com") {
    set req.http.host = "www.yoobar.com";
    if (req.restarts == 0) {
        set req.backend = srv1;
        } else if (req.restarts == 1) {
        set req.backend = srv2;
        }

}elseif ( req.http.host ~ "218.242.39.202") {
    set req.http.host = "118.142.39.202";
    if (req.restarts == 0) {
        set req.backend = srv1;
        } else if (req.restarts == 1) {
        set req.backend = srv2;
        }

}elseif ( req.http.host ~ "218.242.39.203") {
    set req.http.host = "118.142.39.203";
    if (req.restarts == 0) {
        set req.backend = srv1;
        } else if (req.restarts == 1) {
        set req.backend = srv2;
        }

}elseif ( req.http.host ~ "204.186.59.41") {
    set req.http.host = "204.186.59.41";
    if (req.restarts == 0) {
        set req.backend = srv1;
        } else if (req.restarts == 1) {
        set req.backend = srv2;
        }

}elseif ( req.http.host ~ "204.126.59.45") {
    set req.http.host = "204.126.59.45";
    if (req.restarts == 0) {
        set req.backend = srv1;
        } else if (req.restarts == 1) {
        set req.backend = srv2;
        }

}else{
    error 401 "Bad Domain";
}

#set req.grace = 30s;

# Add a unique header containing the client address
remove req.http.X-Forwarded-For;
set    req.http.X-Forwarded-For = client.ip;
# [...]


if (req.request == "PURGE") {
    if(!client.ip ~ purge) {
        error 405 "Not Allowed";
    } lookup;}


#if (req.request != "GET" && req.request != "HEAD") {
#        pipe;
#    }

#if (req.request == "POST") {
#     pass;
# }

if (req.http.Expect) {
        pipe;
    }


if (req.request != "GET" &&
                req.request != "HEAD" &&
                req.request != "PUT" &&
                req.request != "POST" &&
                req.request != "TRACE" &&
                req.request != "OPTIONS" &&
                req.request != "DELETE") {
                        /* Non-RFC2616 or CONNECT which is weird. */
                        pipe;
        }
        if (req.request != "GET" && req.request != "HEAD") {
                /* We only deal with GET and HEAD by default */
                pass;
        }




if (req.http.Cache-Control ~ "no-cache") {
        pass;
    }

if (req.http.Authenticate) {
    pass;
  }

#if (req.http.Cookie) {
#    pass;
#  }

if (req.url ~
"\.(zip|ico|dat|torrent|png|gif|jpg|swf|css|js|bmp|bz2|tbz|mp3|ogg)$") {
    unset req.http.cookie;
    lookup;
#    unset req.http.authenticate;
    }

if (req.http.Accept-Encoding) {
    if (req.url ~
"\.(zip|ico|dat|torrent|png|gif|jpg|swf|css|js|bmp|bz2|tbz|mp3|ogg)$") {
            # No point in compressing these
            remove req.http.Accept-Encoding;
        } elsif (req.http.Accept-Encoding ~ "gzip") {
            set req.http.Accept-Encoding = "gzip";
        } elsif (req.http.Accept-Encoding ~ "deflate") {
            set req.http.Accept-Encoding = "deflate";
        } else {
            # unkown algorithm
            remove req.http.Accept-Encoding;
        }
    }


} #end recv


sub vcl_hash {
set req.hash += req.url;
set req.hash += req.http.host;
#set req.hash += req.http.cookie;
#set req.hash += server.ip;
hash;
}  #end hash

# sub vcl_hash {
#     set req.hash += req.url;
#     if (req.http.host) {
#         set req.hash += req.http.host;
#     } else {
#         set req.hash += server.ip;
#     }
#     hash;
# }


#if (req.http.Accept-Encoding ~ "gzip") {
#set req.hash += "gzip";
#}
#else if (req.http.Accept-Encoding ~ "deflate") {
#set req.hash += "deflate";
#}

#hash;
#}  #end hash


#sub vcl_hash {
#        set req.hash += req.url;
#        set req.hash += req.http.host;

#        if (req.http.Accept-Encoding ~ "gzip") {
#                set req.hash += "gzip";
#        }
#        else if (req.http.Accept-Encoding ~ "deflate") {
#                set req.hash += "deflate";
#        }
#}



# strip the cookie before the image is inserted into cache.
sub vcl_fetch {

#if (obj.status != 200 && obj.status != 302) {
#restart;
#}

    if(obj.http.Set-Cookie){
                pass;
                }


  if(obj.http.Pragma ~ "no-cache" ||
              obj.http.Cache-Control ~ "no-cache" ||
            obj.http.Cache-Control ~ "private"){
            pass;
            }

#    set obj.grace = 30s;

    if (req.url ~
"\.(zip|ico|dat|torrent|png|gif|jpg|swf|css|js|bmp|bz2|tbz|mp3|ogg)$") {
        unset obj.http.set-cookie;
        set obj.ttl = 1w;
               }


#    if (req.request == "GET" && req.url ~ "\.(txt|js)$") {
#                 set obj.ttl = 1d;
#               } else {
#                 set obj.ttl = 1w;
#               }

if (req.url ~
"\.(zip|ico|dat|torrent|png|gif|jpg|swf|css|js|bmp|bz2|tbz|mp3|ogg)$") {
unset obj.http.expires;
set obj.http.cache-control = "max-age=315360000, public";
set obj.ttl = 1w;
set obj.http.magicmarker = "1";
}



#    if (obj.cacheable) {
#                        /* Remove Expires from backend, it's not long
enough */
#                        unset obj.http.expires;

#                        /* Set the clients TTL on this object */
#                        set obj.http.cache-control = "max-age=315360000,
public";

#                        /* Set how long Varnish will keep it */
#                        set obj.ttl = 1w;

#                        /* marker for vcl_deliver to reset Age: */
#                        set obj.http.magicmarker = "1";
#                }


    } #fetch end




sub vcl_deliver {
                if (resp.http.magicmarker) {
                        /* Remove the magic marker */
                        unset resp.http.magicmarker;

                        /* By definition we have a fresh object */
                        set resp.http.age = "0";
        if (obj.hits > 0) {
                    set resp.http.X-Cache = "HIT";
            } else {
                    set resp.http.X-Cache = "MISS";
               }

                }



} #deliver end


sub vcl_pipe {
    # http://varnish.projects.linpro.no/ticket/451
    # This forces every pipe request to be the first one.
    set bereq.http.connection = "close";
} #pipe end




sub vcl_error {
    if (obj.status == 503) {
        restart;
    }
} #error end




Thanks

TW
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://projects.linpro.no/pipermail/varnish-misc/attachments/20090921/8e5e9265/attachment.htm 


More information about the varnish-misc mailing list