<div dir="ltr">Hi,<div style>  I use the order:</div><div style>      ps H -e -o pid,tid,pcpu,cmd --sort=pcpu |grep varnish<br></div><div style><br></div><div style>I get the message:</div><div style><div>12255 12280  0.1 /opt/ace/cache/varnish-cache-3.0.3-plus/sbin/varnishd -f /opt/ace/cache/varnish-stream.vcl -s persistent,/opt/ace/file/varnish_cache_persistent.data,12G -T <a href="http://127.0.0.1:2000">127.0.0.1:2000</a> -a <a href="http://0.0.0.0:8080">0.0.0.0:8080</a> -h classic,500009 -p thread_pool_min 200 -p thread_pool_max 2000 -p thread_pool_add_delay 2 -p session_linger 100 -p thread_pools 2 -p http_req_hdr_len 32768 -p http_resp_hdr_len 32768 -p http_max_hdr 256 -p lru_interval 3600</div>
<div>12255 30175 22.6 …… £¨omit startup command£©</div><div>12255 26385 87.2 …… £¨omit startup command£©</div><div>12255 30478 89.1 …… £¨omit startup command£©</div><div>12255 21623 96.3 …… £¨omit startup command£©</div><div>12255 12504 96.7 …… £¨omit startup command£©</div>
<div><br></div><div style>There are several threads consume about 100% CPU.</div><div style><br></div><div style>Then I debugged varnish, attach the threads above. I found they lingered in in VGZ_WrwGunzip .</div><div style>
I think there may be  some <b>endless loop</b> or <b>deadlock</b> issues.</div><div style><br></div><div style>There are some debug log about above threads:</div><div style><div style>attach 21623</div><div style>...</div>
<div><div>inflate (strm=0x7fd5652680f8, flush=0) at inflate.c:1222</div><div>1222<span class="" style="white-space:pre">      </span>    RESTORE();</div><div>(gdb) info thread</div><div>* 1 process 21623  inflate (strm=0x7fd5652680f8, flush=0) at inflate.c:1222</div>
<div>(gdb) thread 1</div><div>[Switching to thread 1 (process 21623)]#0  inflate (strm=0x7fd5652680f8, flush=0) at inflate.c:1222</div><div>1222<span class="" style="white-space:pre">    </span>    RESTORE();</div><div>(gdb) bt</div>
<div>#0  inflate (strm=0x7fd5652680f8, flush=0) at inflate.c:1222</div><div>#1  0x0000000000428068 in VGZ_Gunzip (vg=0x7fd5652680c0, pptr=0x7fd55eddf458, plen=0x7fd55eddf460) at cache_gzip.c:290</div><div>#2  0x00000000004287e4 in VGZ_WrwGunzip (sp=0x7fd575a13008, vg=0x7fd5652680c0, ibuf=<value optimized out>, ibufl=<value optimized out>, </div>
<div>    obuf=0x7fd55eddf4f0 "<link rel=\"icon\" type=\"image/gif\" href=\"favicon.gif\" />\n\n<script type=\"text/javascript\">\n\n  var _gaq = _gaq || [];\n  _gaq.push(['_setAccount', 'UA-36075559-1']);\n  _gaq.push(['_trackPageview']);\n\n  (f"..., obufl=32768, obufp=0x7fd55ede7540) at cache_gzip.c:374</div>
<div>#3  0x0000000000434b66 in RES_StreamWrite (sp=0x7fd575a13008) at cache_response.c:463</div><div>#4  0x0000000000435034 in RES_StreamBody (sp=0x7fd575a13008) at cache_response.c:571</div><div>#5  0x00000000004182a8 in cnt_streamdeliver (sp=0x7fd575a13008) at cache_center.c:935</div>
<div>#6  0x000000000041add5 in CNT_Session (sp=0x7fd575a13008) at steps.h:44</div><div>#7  0x0000000000433aca in wrk_thread_real (qp=0x7fd62590e240, shm_workspace=<value optimized out>, sess_workspace=65536, nhttp=256, </div>
<div>    http_space=<value optimized out>, siov=512) at cache_pool.c:186</div><div>#8  0x00007fd625de16a6 in start_thread () from /lib64/libpthread.so.0</div><div>#9  0x00007fd625b50f7d in clone () from /lib64/libc.so.6</div>
<div>#10 0x0000000000000000 in ?? ()</div></div><div><br></div><div style>attach 12504</div><div style>...</div><div><div>VGZ_WrwGunzip (sp=0x7fd598a1d008, vg=0x7fd612a19900, ibuf=<value optimized out>, ibufl=<value optimized out>, </div>
<div>    obuf=0x7fd5d7bcc4f0 "\342\340\355\350\377\" src=\"<a href="http://www.yandex.ru/cycounter?www.alternativa7.ru/\">http://www.yandex.ru/cycounter?www.alternativa7.ru/\</a>"  /> </a>\t \n<!--Rating@Mail.ru COUNTEr-->\n <a href=\"<a href="http://top.mail.ru/jump?from=1028785\">http://top.mail.ru/jump?from=1028785\</a>" target=\"_top\" ><img width=\"88\" height=\"31\" bor"..., obufl=32768, obufp=0x7fd5d7bd4540) at cache_gzip.c:377</div>
<div>377<span class="" style="white-space:pre">                 </span>if (i < VGZ_OK) {</div><div>(gdb) info thread</div><div>* 1 process 12504  VGZ_WrwGunzip (sp=0x7fd598a1d008, vg=0x7fd612a19900, ibuf=<value optimized out>, ibufl=<value optimized out>, </div>
<div>    obuf=0x7fd5d7bcc4f0 "\342\340\355\350\377\" src=\"<a href="http://www.yandex.ru/cycounter?www.alternativa7.ru/\">http://www.yandex.ru/cycounter?www.alternativa7.ru/\</a>"  /> </a>\t \n<!--Rating@Mail.ru COUNTEr-->\n <a href=\"<a href="http://top.mail.ru/jump?from=1028785\">http://top.mail.ru/jump?from=1028785\</a>" target=\"_top\" ><img width=\"88\" height=\"31\" bor"..., obufl=32768, obufp=0x7fd5d7bd4540) at cache_gzip.c:377</div>
<div>(gdb) thread 1</div><div>[Switching to thread 1 (process 12504)]#0  VGZ_WrwGunzip (sp=0x7fd598a1d008, vg=0x7fd612a19900, ibuf=<value optimized out>, ibufl=<value optimized out>, </div><div>    obuf=0x7fd5d7bcc4f0 "\342\340\355\350\377\" src=\"<a href="http://www.yandex.ru/cycounter?www.alternativa7.ru/\">http://www.yandex.ru/cycounter?www.alternativa7.ru/\</a>"  /> </a>\t \n<!--Rating@Mail.ru COUNTEr-->\n <a href=\"<a href="http://top.mail.ru/jump?from=1028785\">http://top.mail.ru/jump?from=1028785\</a>" target=\"_top\" ><img width=\"88\" height=\"31\" bor"..., obufl=32768, obufp=0x7fd5d7bd4540) at cache_gzip.c:377</div>
<div>377<span class="" style="white-space:pre">                 </span>if (i < VGZ_OK) {</div><div>(gdb) bt</div><div>#0  VGZ_WrwGunzip (sp=0x7fd598a1d008, vg=0x7fd612a19900, ibuf=<value optimized out>, ibufl=<value optimized out>, </div>
<div>    obuf=0x7fd5d7bcc4f0 "\342\340\355\350\377\" src=\"<a href="http://www.yandex.ru/cycounter?www.alternativa7.ru/\">http://www.yandex.ru/cycounter?www.alternativa7.ru/\</a>"  /> </a>\t \n<!--Rating@Mail.ru COUNTEr-->\n <a href=\"<a href="http://top.mail.ru/jump?from=1028785\">http://top.mail.ru/jump?from=1028785\</a>" target=\"_top\" ><img width=\"88\" height=\"31\" bor"..., obufl=32768, obufp=0x7fd5d7bd4540) at cache_gzip.c:377</div>
<div>#1  0x0000000000434b66 in RES_StreamWrite (sp=0x7fd598a1d008) at cache_response.c:463</div><div>#2  0x0000000000435034 in RES_StreamBody (sp=0x7fd598a1d008) at cache_response.c:571</div><div>#3  0x00000000004182a8 in cnt_streamdeliver (sp=0x7fd598a1d008) at cache_center.c:935</div>
<div>#4  0x000000000041add5 in CNT_Session (sp=0x7fd598a1d008) at steps.h:44</div><div>#5  0x0000000000433aca in wrk_thread_real (qp=0x7fd62590e240, shm_workspace=<value optimized out>, sess_workspace=65536, nhttp=256, </div>
<div>    http_space=<value optimized out>, siov=512) at cache_pool.c:186</div><div>#6  0x00007fd625de16a6 in start_thread () from /lib64/libpthread.so.0</div><div>#7  0x00007fd625b50f7d in clone () from /lib64/libc.so.6</div>
<div>#8  0x0000000000000000 in ?? ()</div><div>(gdb) </div></div></div><div style><br></div></div><div style>Could you tell me how it happened? And how to fix it?</div><div style><br></div><div style>Thank you again.</div>
<div style><br></div><div style>Regards,</div><div style>Shawn.</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/5/15 Xianzhe Wang <span dir="ltr"><<a href="mailto:wxz19861013@gmail.com" target="_blank">wxz19861013@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi,<div>    I used varnish-cache-3.0.3-plus(get from <a href="https://github.com/mbgrydeland/varnish-cache/tree/3.0.3-plus" target="_blank">https://github.com/mbgrydeland/varnish-cache/tree/3.0.3-plus</a>).</div>
<div>
I use persistent storage and "<span style="text-align:justify">set beresp.do_stream = true".<font color="#000000" face="sans-serif" size="3"><span style="line-height:20px"> </span></font></span></div><div>
The %CPU  is increased from 4% to 800% (8 cpu), and varnish crashed sometimes by errno = 12 (Cannot allocate memory).</div><div><br></div><div>my startup command is:</div><div>/opt/ace/cache/varnish-cache-3.0.3-plus/sbin/varnishd -f /opt/ace/cache/varnish-stream.vcl -s persistent,/opt/ace/file/varnish_cache_persistent.data,12G -T <a href="http://127.0.0.1:2000" target="_blank">127.0.0.1:2000</a> -a <a href="http://0.0.0.0:8080" target="_blank">0.0.0.0:8080</a>  -p thread_pool_min 200 -p thread_pool_max 2000 -p thread_pool_add_delay 2 -p session_linger 100 -p thread_pools 2 -p http_req_hdr_len 32768 -p http_resp_hdr_len 32768 -p http_max_hdr 256 <br>

</div><div><br></div><div>Then I change the command  to:</div><div>/opt/ace/cache/varnish-cache-3.0.3-plus/sbin/varnishd -f /opt/ace/cache/varnish-stream.vcl -s persistent,/opt/ace/file/varnish_cache_persistent.data,12G -T <a href="http://127.0.0.1:2000" target="_blank">127.0.0.1:2000</a> -a <a href="http://0.0.0.0:8080" target="_blank">0.0.0.0:8080</a> <b>-h classic,500009</b> -p thread_pool_min 200 -p thread_pool_max 2000 -p thread_pool_add_delay 2 -p session_linger 100 -p thread_pools 2 -p http_req_hdr_len 32768 -p http_resp_hdr_len 32768 -p http_max_hdr 256 <b>-p lru_interval 3600</b><br>

</div><div><br></div><div>The %CPU is increasing too, but varnish hasn't crashed for 16 hours.</div><div><br></div><div>Is there somebody has  experience about this problem?  </div><div>Any advice will be greatly appreciated.</div>

<div><br></div><div>Here is the information about system  and varnish.</div><div><br></div><div>top:</div><div><div>top - 09:37:36 up 50 days, 13:06,  3 users,  load average: 5.00, 4.97, 4.73</div>
<div>Tasks: 141 total,   1 running, 140 sleeping,   0 stopped,   0 zombie</div><div>Cpu(s): 62.6%us,  0.0%sy,  0.0%ni, 37.4%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st</div><div>Mem:     20132M total,    19781M used,      351M free,      137M buffers</div>

<div>Swap:     4102M total,        3M used,     4098M free,    18517M cached</div><div><br></div><div>  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+   COMMAND                                                                                                </div>

<div>12255 nobody    20   0 14.7g  11g  11g S  502 59.8   2280:28 varnishd                                                                                                </div><div>30934 acce      20   0  8772 1212  872 R    0  0.0   0:00.02 top  </div>

<div><br></div><div><br></div><div>free -m:</div></div><div><div>             total       used       free     shared    buffers     cached</div><div>Mem:         20132      19782        350          0        137      18517</div>

<div>-/+ buffers/cache:       1127      19004</div><div>Swap:         4102          3       4098</div><div><br></div><div><br></div><div><div>ulimit -a:</div><div>core file size          (blocks, -c) 0</div><div>data seg size           (kbytes, -d) unlimited</div>

<div>scheduling priority             (-e) 0</div><div>file size               (blocks, -f) unlimited</div><div>pending signals                 (-i) 156007</div><div>max locked memory       (kbytes, -l) 64</div><div>max memory size         (kbytes, -m) 17523512</div>

<div>open files                      (-n) 65535</div><div>pipe size            (512 bytes, -p) 8</div><div>POSIX message queues     (bytes, -q) 819200</div><div>real-time priority              (-r) 0</div><div>stack size              (kbytes, -s) 4096</div>

<div>cpu time               (seconds, -t) unlimited</div><div>max user processes              (-u) 156007</div><div>virtual memory          (kbytes, -v) 19853520</div><div>file locks                      (-x) unlimited</div>

</div><div><br></div><div><br></div><div>varnish panic.show:</div><div><div>Last panic at: Tue, 14 May 2013 02:56:50 GMT</div><div>Assert error in CNT_Session(), cache_center.c line 1813:</div><div>  Condition((w->do_stream) == 0) not true.</div>

<div>errno = 12 (Cannot allocate memory)</div><div>thread = (cache-worker)</div><div>ident = Linux,2.6.32.59-0.7-xen,x86_64,-spersistent,-smalloc,-hcritbit,epoll</div><div>sp = 0x7f4dcd947008 {</div><div>  fd = 1435, id = 1435, xid = 1304392785,</div>

<div>  client = xx.xx.xx.xx 2396,</div><div>  step = STP_DONE,</div><div>  handling = hit_for_pass,</div><div>  err_code = 502, err_reason = (null),</div><div>  restarts = 0, esi_level = 0</div><div>  flags =  do_stream is_gunzip</div>

<div>  bodystatus = 4</div><div>  ws = 0x7f4dcd947080 { </div><div>    id = "sess",</div><div>    {s,f,r,e} = {0x7f4dcd949610,+344,(nil),+65536},</div><div>  },</div><div>  http[req] = {</div><div>    ws = 0x7f4dcd947080[sess]</div>

<div>      "GET",</div><div>      "<a href="http://www.2xk.cn/index.asp" target="_blank">http://www.2xk.cn/index.asp</a>",</div><div>      "HTTP/1.1",</div><div>      "Accept: */*",</div>
<div>      "Referer: <a href="http://www.2xk.cn/" target="_blank">http://www.2xk.cn/</a>",</div>
<div>      "Accept-Language: zh-cn",</div><div>      "User-Agent:",</div><div>      "Host: <a href="http://www.2xk.cn" target="_blank">www.2xk.cn</a>",</div><div>      "Proxy-Connection: Keep-Alive",</div>

<div>      "Pragma: no-cache",</div><div>      "X-Forwarded-For: xx.xx.xx.xx",</div><div>      "Accept-Encoding: gzip",</div><div>  },</div><div>  worker = 0x7f4d83a1ca90 {</div><div>    ws = 0x7f4d83a1ccd8 { </div>

<div>      id = "wrk",</div><div>      {s,f,r,e} = {0x7f4d83a0aa20,+616,(nil),+65536},</div><div>    },</div><div>    },</div><div>    vcl = {</div><div>      srcname = {</div><div>        "input",</div>

<div>        "Default",</div><div>      },</div><div>    },</div><div>},</div><div><br></div><div><br></div><div><div>/opt/ace/cache/varnish-cache-3.0.3-plus/bin/varnishstat -1</div><div><div>acce@sz-acce-varnish01:~> /opt/huawei/ace/cache/varnish-cache-3.0.3-plus/bin/varnishstat -1</div>

<div>client_conn            2341640        40.03 Client connections accepted</div><div>client_drop                  8         0.00 Connection dropped, no sess/wrk</div><div>client_req             3031369        51.82 Client requests received</div>

<div>cache_hit               164025         2.80 Cache hits</div><div>cache_hitpass           409263         7.00 Cache hits for pass</div><div>cache_miss             1857720        31.75 Cache misses</div><div>backend_conn            500716         8.56 Backend conn. success</div>

<div>backend_unhealthy            0         0.00 Backend conn. not attempted</div><div>backend_busy                 0         0.00 Backend conn. too many</div><div>backend_fail              8097         0.14 Backend conn. failures</div>

<div>backend_reuse          2375031        40.60 Backend conn. reuses</div><div>backend_toolate          34982         0.60 Backend conn. was closed</div><div>backend_recycle        2410099        41.20 Backend conn. recycles</div>

<div>backend_retry            15375         0.26 Backend conn. retry</div><div>fetch_head                1051         0.02 Fetch head</div><div>fetch_length           2185540        37.36 Fetch with Length</div><div>fetch_chunked           600378        10.26 Fetch chunked</div>

<div>fetch_eof                    0         0.00 Fetch EOF</div><div>fetch_streamed         2792280        47.73 Fetch streamed</div><div>fetch_bad                    0         0.00 Fetch had bad headers</div><div>fetch_close              10117         0.17 Fetch wanted close</div>

<div>fetch_oldhttp                0         0.00 Fetch pre HTTP/1.1 closed</div><div>fetch_zero                   0         0.00 Fetch zero len</div><div>fetch_failed             37332         0.64 Fetch failed</div><div>

fetch_1xx                    0         0.00 Fetch no body (1xx)</div><div>fetch_204                 2720         0.05 Fetch no body (204)</div><div>fetch_304                12112         0.21 Fetch no body (304)</div><div>

n_sess_mem                7231          .   N struct sess_mem</div><div>n_sess                      93          .   N struct sess</div><div>n_object                 86410          .   N struct object</div><div>n_vampireobject              0          .   N unresurrected objects</div>

<div>n_objectcore             86666          .   N struct objectcore</div><div>n_objecthead             51679          .   N struct objecthead</div><div>n_waitinglist            22932          .   N struct waitinglist</div>

<div>n_vbc                       24          .   N struct vbc</div><div>n_wrk                      400          .   N worker threads</div><div>n_wrk_create             14003         0.24 N worker threads created</div><div>

n_wrk_failed              2553         0.04 N worker threads not created</div><div>n_wrk_max                    0         0.00 N worker threads limited</div><div>n_wrk_lqueue                 0         0.00 work request queue length</div>

<div>n_wrk_queued            114487         1.96 N queued work requests</div><div>n_wrk_drop                   8         0.00 N dropped work requests</div><div>n_backend                    4          .   N backends</div>
<div>
n_expired              1427930          .   N expired objects</div><div>n_lru_nuked              42056          .   N LRU nuked objects</div><div>n_lru_moved                  0          .   N LRU moved objects</div><div>
losthdr                    112         0.00 HTTP header overflows</div>
<div>n_objsendfile                0         0.00 Objects sent with sendfile</div><div>n_objwrite              194021         3.32 Objects sent with write</div><div>n_objoverflow                0         0.00 Objects overflowing workspace</div>

<div>s_sess                 2341612        40.03 Total Sessions</div><div>s_req                  3031369        51.82 Total Requests</div><div>s_pipe                    7436         0.13 Total pipe</div><div>s_pass                 1003423        17.15 Total pass</div>

<div>s_fetch                  17926         0.31 Total fetch</div><div>s_stream               2787698        47.65 Total streamed requests</div><div>s_hdrbytes          1048771245     17927.10 Total header bytes</div><div>

s_bodybytes        20286532441    346766.48 Total body bytes</div><div>sess_closed            1781645        30.45 Session Closed</div><div>sess_pipeline            11352         0.19 Session Pipeline</div><div>sess_readahead            7111         0.12 Session Read Ahead</div>

<div>sess_linger            1375398        23.51 Session Linger</div><div>sess_herd               874711        14.95 Session herd</div><div>shm_records          244018270      4171.11 SHM records</div><div>shm_writes            19725032       337.17 SHM writes</div>

<div>shm_flushes               3325         0.06 SHM flushes due to overflow</div><div>shm_cont                 33597         0.57 SHM MTX contention</div><div>shm_cycles                 104         0.00 SHM cycles through buffer</div>

<div>sms_nreq                 49339         0.84 SMS allocator requests</div><div>sms_nobj                     0          .   SMS outstanding allocations</div><div>sms_nbytes                   0          .   SMS outstanding bytes</div>

<div>sms_balloc            23339027          .   SMS bytes allocated</div><div>sms_bfree             23339027          .   SMS bytes freed</div><div>backend_req            2867335        49.01 Backend requests made</div>
<div>
n_vcl                        1         0.00 N vcl total</div><div>n_vcl_avail                  1         0.00 N vcl available</div><div>n_vcl_discard                0         0.00 N vcl discarded</div><div>n_ban                        1          .   N total active bans</div>

<div>n_ban_gone                   1          .   N total gone bans</div><div>n_ban_add                    6         0.00 N new bans added</div><div>n_ban_retire                 5         0.00 N old bans deleted</div><div>

n_ban_obj_test           23688         0.40 N objects tested</div><div>n_ban_re_test                0         0.00 N regexps tested against</div><div>n_ban_dups                   5         0.00 N duplicate bans removed</div>

<div>hcb_nolock                   0         0.00 HCB Lookups without lock</div><div>hcb_lock                     0         0.00 HCB Lookups with lock</div><div>hcb_insert                   0         0.00 HCB Inserts</div>

<div>esi_errors                   0         0.00 ESI parse errors (unlock)</div><div>esi_warnings                 0         0.00 ESI parse warnings (unlock)</div><div>accept_fail                  0         0.00 Accept failures</div>

<div>client_drop_late             0         0.00 Connection dropped late</div><div>uptime                   58502         1.00 Client uptime</div><div>dir_dns_lookups              0         0.00 DNS director lookups</div>

<div>dir_dns_failed               0         0.00 DNS director failed lookups</div><div>dir_dns_hit                  0         0.00 DNS director cached lookups hit</div><div>dir_dns_cache_full           0         0.00 DNS director full dnscache</div>

<div>vmods                        0          .   Loaded VMODs</div><div>n_gzip                       0         0.00 Gzip operations</div><div>n_gunzip               1266712        21.65 Gunzip operations</div><div>LCK.sms.creat                1         0.00 Created locks</div>

<div>LCK.sms.destroy              0         0.00 Destroyed locks</div><div>LCK.sms.locks           148017         2.53 Lock Operations</div><div>LCK.sms.colls                0         0.00 Collisions</div><div>LCK.smp.creat                1         0.00 Created locks</div>

<div>LCK.smp.destroy              0         0.00 Destroyed locks</div><div>LCK.smp.locks         10868618       185.78 Lock Operations</div><div>LCK.smp.colls                0         0.00 Collisions</div><div>LCK.sma.creat                1         0.00 Created locks</div>

<div>LCK.sma.destroy              0         0.00 Destroyed locks</div><div>LCK.sma.locks          4945521        84.54 Lock Operations</div><div>LCK.sma.colls                0         0.00 Collisions</div><div>LCK.smf.creat                0         0.00 Created locks</div>

<div>LCK.smf.destroy              0         0.00 Destroyed locks</div><div>LCK.smf.locks                0         0.00 Lock Operations</div><div>LCK.smf.colls                0         0.00 Collisions</div><div>LCK.hsl.creat                0         0.00 Created locks</div>

<div>LCK.hsl.destroy              0         0.00 Destroyed locks</div><div>LCK.hsl.locks                0         0.00 Lock Operations</div><div>LCK.hsl.colls                0         0.00 Collisions</div><div>LCK.hcb.creat                0         0.00 Created locks</div>

<div>LCK.hcb.destroy              0         0.00 Destroyed locks</div><div>LCK.hcb.locks                0         0.00 Lock Operations</div><div>LCK.hcb.colls                0         0.00 Collisions</div><div>LCK.hcl.creat           500009         8.55 Created locks</div>

<div>LCK.hcl.destroy              0         0.00 Destroyed locks</div><div>LCK.hcl.locks          4918023        84.07 Lock Operations</div><div>LCK.hcl.colls                0         0.00 Collisions</div><div>LCK.vcl.creat                1         0.00 Created locks</div>

<div>LCK.vcl.destroy              0         0.00 Destroyed locks</div><div>LCK.vcl.locks          2573092        43.98 Lock Operations</div><div>LCK.vcl.colls                0         0.00 Collisions</div><div>LCK.stat.creat               1         0.00 Created locks</div>

<div>LCK.stat.destroy             0         0.00 Destroyed locks</div><div>LCK.stat.locks         7933355       135.61 Lock Operations</div><div>LCK.stat.colls               0         0.00 Collisions</div><div>LCK.sessmem.creat            1         0.00 Created locks</div>

<div>LCK.sessmem.destroy            0         0.00 Destroyed locks</div><div>LCK.sessmem.locks        7932823       135.60 Lock Operations</div><div>LCK.sessmem.colls              0         0.00 Collisions</div><div>LCK.wstat.creat                1         0.00 Created locks</div>

<div>LCK.wstat.destroy              0         0.00 Destroyed locks</div><div>LCK.wstat.locks           142801         2.44 Lock Operations</div><div>LCK.wstat.colls                0         0.00 Collisions</div><div>LCK.herder.creat               1         0.00 Created locks</div>

<div>LCK.herder.destroy             0         0.00 Destroyed locks</div><div>LCK.herder.locks            4032         0.07 Lock Operations</div><div>LCK.herder.colls               0         0.00 Collisions</div><div>LCK.wq.creat                   2         0.00 Created locks</div>

<div>LCK.wq.destroy                 0         0.00 Destroyed locks</div><div>LCK.wq.locks            11199698       191.44 Lock Operations</div><div>LCK.wq.colls                   0         0.00 Collisions</div><div>LCK.objhdr.creat          800591        13.68 Created locks</div>

<div>LCK.objhdr.destroy        748913        12.80 Destroyed locks</div><div>LCK.objhdr.locks        15295089       261.45 Lock Operations</div><div>LCK.objhdr.colls               0         0.00 Collisions</div><div>LCK.exp.creat                  1         0.00 Created locks</div>

<div>LCK.exp.destroy                0         0.00 Destroyed locks</div><div>LCK.exp.locks            3544111        60.58 Lock Operations</div><div>LCK.exp.colls                  0         0.00 Collisions</div><div>LCK.lru.creat               9854         0.17 Created locks</div>

<div>LCK.lru.destroy             8840         0.15 Destroyed locks</div><div>LCK.lru.locks            2066424        35.32 Lock Operations</div><div>LCK.lru.colls                  0         0.00 Collisions</div><div>LCK.cli.creat                  1         0.00 Created locks</div>

<div>LCK.cli.destroy                0         0.00 Destroyed locks</div><div>LCK.cli.locks              19486         0.33 Lock Operations</div><div>LCK.cli.colls                  0         0.00 Collisions</div><div>LCK.ban.creat                  1         0.00 Created locks</div>

<div>LCK.ban.destroy                0         0.00 Destroyed locks</div><div>LCK.ban.locks            3842809        65.69 Lock Operations</div><div>LCK.ban.colls                  0         0.00 Collisions</div><div>LCK.vbp.creat                  1         0.00 Created locks</div>

<div>LCK.vbp.destroy                0         0.00 Destroyed locks</div><div>LCK.vbp.locks               7808         0.13 Lock Operations</div><div>LCK.vbp.colls                  0         0.00 Collisions</div><div>LCK.vbe.creat                  1         0.00 Created locks</div>

<div>LCK.vbe.destroy                0         0.00 Destroyed locks</div><div>LCK.vbe.locks            1017738        17.40 Lock Operations</div><div>LCK.vbe.colls                  0         0.00 Collisions</div><div>LCK.backend.creat              4         0.00 Created locks</div>

<div>LCK.backend.destroy            0         0.00 Destroyed locks</div><div>LCK.backend.locks        6346813       108.49 Lock Operations</div><div>LCK.backend.colls              0         0.00 Collisions</div><div>LCK.busyobj.creat          13983         0.24 Created locks</div>

<div>LCK.busyobj.destroy        13582         0.23 Destroyed locks</div><div>LCK.busyobj.locks       47081281       804.78 Lock Operations</div><div>LCK.busyobj.colls              0         0.00 Collisions</div><div>SMP.s0.c_req             3025767          .   Allocater requests</div>

<div>SMP.s0.c_fail                352          .   Allocater failures</div><div>SMP.s0.c_bytes      115414281600          .   Bytes allocated</div><div>SMP.s0.c_freed      110868836208          .   Bytes freed</div><div>
SMP.s0.g_alloc            158780          .   Allocations outstanding</div>
<div>SMP.s0.g_bytes        4545445392          .   Bytes outstanding</div><div>SMP.s0.g_free          138490880          .   Free space</div><div>SMP.s0.g_free_pending            0          .   Free space pending</div><div>

SMP.s0.g_segments             1012          .   In use segments</div><div>SMP.s0.c_segments_nuked         8506          .   Number of nuked segments</div><div>SMP.s0.g_vampireobjects            0          .   Vampire objects</div>

<div>SMP.s0.c_resurrection_fail           46          .   Failed resurrections</div><div>SMA.Transient.c_req             2271927        38.84 Allocator requests</div><div>SMA.Transient.c_fail                  0         0.00 Allocator failures</div>

<div>SMA.Transient.c_bytes       59014304554   1008757.04 Bytes allocated</div><div>SMA.Transient.c_freed       58939691205   1007481.65 Bytes freed</div><div>SMA.Transient.g_alloc             18069          .   Allocations outstanding</div>

<div>SMA.Transient.g_bytes          74613349          .   Bytes outstanding</div><div>SMA.Transient.g_space                 0          .   Bytes available</div><div>VBE.proxy1(10.21.34.21,,8080).vcls            1          .   VCL references</div>

<div>VBE.proxy1(10.21.34.21,,8080).happy18446744073709551615          .   Happy health probes</div><div>VBE.proxy2(10.21.34.22,,8080).vcls            1          .   VCL references</div><div>VBE.proxy2(10.21.34.22,,8080).happy18446744056529682431          .   Happy health probes</div>

<div>VBE.proxy3(10.21.34.23,,8082).vcls            1          .   VCL references</div><div>VBE.proxy3(10.21.34.23,,8082).happy18446744073709551615          .   Happy health probes</div><div>VBE.proxy4(10.21.34.24,,8081).vcls            1          .   VCL references</div>

<div>VBE.proxy4(10.21.34.24,,8081).happy18446744073709551615          .   Happy health probes</div></div></div><div><br></div><div><br></div></div><div>varnish-stream.vcl:<br></div><div><div>acce@sz-acce-varnish01:~> cat /opt/huawei/ace/cache/varnish-stream.vcl</div>

<div># This is a basic VCL configuration file for varnish.  See the vcl(7)</div><div># man page for details on VCL syntax and semantics.</div><div>#</div><div># Default backend definition.  Set this to point to your content</div>

<div># server.</div><div>#</div><div><br></div><div>probe healthcheck {</div><div>   .url = "/";</div><div>   .interval = 30s;</div><div>   .timeout = 0.5s;</div><div>   .window = 8;</div><div>   .threshold = 3;</div>

<div>   .initial = 3;</div><div>}</div><div><br></div><div>backend proxy1 {</div><div>     .host = "10.21.34.21";</div><div>     .port = "8080";</div><div>     .probe = healthcheck;</div><div>}</div><div>

<br></div><div>backend proxy2 {</div><div>     .host = "10.21.34.22";</div><div>     .port = "8080";</div><div>     .probe = healthcheck;</div><div>}</div><div><br></div><div>backend proxy3 {</div><div>

     .host = "10.21.34.23";</div><div>     .port = "8082";</div><div>     .probe = healthcheck;</div><div>}</div><div><br></div><div>backend proxy4 {</div><div>     .host = "10.21.34.24";</div>

<div>     .port = "8081";</div><div>     .probe = healthcheck;</div><div>}</div><div><br></div><div>director proxy client {</div><div>   {</div><div>      .backend = proxy1;</div><div>      .weight = 1;</div><div>

   }</div><div>   {</div><div>      .backend = proxy2;</div><div>      .weight = 1;</div><div>   }</div><div>#   {</div><div>#      .backend = proxy3;</div><div>#      .weight = 1;</div><div>#   }</div><div>#   {</div><div>

#      .backend = proxy4;</div><div>#<span style="white-space:pre-wrap">     </span>  .weight = 1;</div><div>#   }</div><div>}</div><div><br></div><div><br></div><div>acl refresh {</div><div>        "10.21.34.31";</div>

<div>}</div><div><br></div><div><br></div><div># Below is a commented-out copy of the default VCL logic.  If you</div><div># redefine any of these subroutines, the built-in logic will be</div><div># appended to your code.</div>

<div> sub vcl_recv {</div><div>   </div><div>    if(req.http.X-Real-IP){</div><div>          set client.identity = req.http.X-Real-IP;</div><div>    }else if (req.http.referer) {</div><div>          set client.identity = req.http.referer;</div>

<div>    }else{</div><div>          set client.identity = req.url;</div><div>    }</div><div><span style="white-space:pre-wrap"> </span></div><div>#<span style="white-space:pre-wrap">        </span> set req.backend = proxy;</div>

<div><span style="white-space:pre-wrap">  </span></div><div>     if (client.ip == "10.21.34.11" || client.ip == "10.21.34.12"){</div><div>        </div><div>        if (req.http.X-SZ-TEST && req.http.X-SZ-TEST == "1"){</div>

<div>            set req.backend = proxy3;</div><div>        } else {</div><div>            set req.backend = proxy;</div><div>        }</div><div><br></div><div>     } else {</div><div>       set req.backend = proxy4;</div>

<div>       if (client.ip ~ refresh) {            </div><div>             set req.hash_always_miss = true;          </div><div>       } </div><div>    }   </div><div>    </div><div>    #set grace</div><div>    if (req.backend.healthy) {</div>

<div>      set req.grace = 30s;</div><div>    } else {</div><div>      set req.grace = 30m;</div><div>    }</div><div><br></div><div>    if (req.restarts == 0) {</div><div>        if (req.http.x-forwarded-for) {</div><div>

            set req.http.X-Forwarded-For =</div><div>                req.http.X-Forwarded-For + ", " + client.ip;</div><div>        } else {</div><div>            set req.http.X-Forwarded-For = client.ip;</div>
<div>
        }</div><div>}</div><div>     if (req.request != "GET" &&</div><div>       req.request != "HEAD" &&</div><div>       req.request != "PUT" &&</div><div>       req.request != "POST" &&</div>

<div>       req.request != "TRACE" &&</div><div>       req.request != "OPTIONS" &&</div><div>       req.request != "DELETE") {</div><div>#         /* Non-RFC2616 or CONNECT which is weird. */</div>

<div>         return (pipe);</div><div>     }</div><div><br></div><div>     if (req.http.x-pipe && req.restarts > 0) {</div><div>         remove req.http.x-pipe;</div><div>         return (pipe);</div><div>    }</div>

<div><br></div><div>     if(req.request != "GET" && req.request != "HEAD") {</div><div>#         /* We only deal with GET and HEAD by default */</div><div>         return (pass);</div><div>     }</div>

<div>     </div><div>    if (req.http.Cache-Control ~ "no-cache") {</div><div>     return (pass);</div><div>     }</div><div><br></div><div>     if (req.http.Accept-Encoding) {</div><div>        if (req.url ~ "\.(webp|jpeg|png|mid|mp3|gif|sql|jpg|nth|thm|utz|mtf|sdt|hme|tsk|zip|rar|sx|pxl|cab|mbm|app|exe|apk)$") {            </div>

<div>            # No point in compressing these</div><div>            remove req.http.Accept-Encoding;</div><div>        } elsif (req.http.Accept-Encoding ~ "gzip") {</div><div>            set req.http.Accept-Encoding = "gzip";</div>

<div>        } elsif (req.http.Accept-Encoding ~ "deflate") {</div><div>            set req.http.Accept-Encoding = "deflate";</div><div>        } else {</div><div>            # unknown algorithm</div>
<div>
            remove req.http.Accept-Encoding;</div><div>        }</div><div>    }</div><div><br></div><div><br></div><div>#    if (req.request == "GET" &&</div><div>#       req.url ~ "\.(webp|jpeg|png|mid|mp3|gif|sql|jpg|nth|thm|utz|mtf|sdt|hme|tsk|zip|rar|sx|pxl|cab|mbm|app|exe|apk)$"){</div>

<div>#         unset req.http.Cookie;</div><div>#          return (lookup);</div><div>#     }</div><div>     </div><div>#     if (req.http.Authorization || req.http.Cookie) {</div><div>#     return (pass);</div><div>#     }</div>

<div><br></div><div>     if (req.http.Authorization) {</div><div>         return (pass);</div><div>     }</div><div><br></div><div>     return (lookup);</div><div> }</div><div><br></div><div> sub vcl_pipe {</div><div>#     # Note that only the first request to the backend will have</div>

<div>#     # X-Forwarded-For set.  If you use X-Forwarded-For and want to</div><div>#     # have it set for all requests, make sure to have:</div><div>        set bereq.http.connection = "close";</div><div>#     # here.  It is not set by default as it might break some broken web</div>

<div>#     # applications, like IIS with NTLM authentication.</div><div>     return (pipe);</div><div> }</div><div><br></div><div> sub vcl_pass {</div><div> </div><div>     return (pass);</div><div> }</div><div><br></div>

<div> sub vcl_hash {</div><div><br></div><div>   if (req.url ~ ".(jpeg|jpg|png|gif|ico|js|css)\?.*") {</div><div>       hash_data(regsub(req.url, "\?[^\?]*$", ""));</div><div>     } else{</div>

<div>      hash_data(req.url);</div><div>    }</div><div><br></div><div>#     hash_data(req.url);</div><div><br></div><div>     if (req.http.host) {</div><div>         hash_data(req.http.host);</div><div>     } else {</div>

<div>         hash_data(server.ip);</div><div>     }</div><div>     return (hash);</div><div> }</div><div><br></div><div> sub vcl_hit {</div><div><br></div><div>     return (deliver);</div><div> }</div><div><br></div><div>

 sub vcl_miss {</div><div> </div><div>     return (fetch);</div><div> }</div><div><br></div><div><br></div><div> sub vcl_fetch {</div><div>    set beresp.grace = 30m;</div><div><br></div><div>    set beresp.do_stream = true;  </div>

<div>    </div><div>    if (beresp.http.Content-Length && beresp.http.Content-Length ~ "[0-9]{8,}") {</div><div>        set req.http.x-pipe = "1";</div><div>        return (restart);</div><div>

    }</div><div><br></div><div>    if (beresp.http.Pragma ~ "no-cache" || beresp.http.Cache-Control ~ "no-cache" || beresp.http.Cache-Control ~ "private"){</div><div>         return (hit_for_pass);</div>

<div>       }</div><div><br></div><div>     if (beresp.ttl <= 0s ||</div><div>         beresp.http.Set-Cookie ||</div><div>         beresp.http.Vary == "*") {</div><div><br></div><div>            set beresp.ttl = 120 s;</div>

<div>            return (hit_for_pass);</div><div>     }</div><div>    </div><div>    if(beresp.status >=300 && beresp.status <= 307){</div><div>       set beresp.ttl = 120 s;</div><div>       return (hit_for_pass);</div>

<div>     }</div><div><br></div><div>     return (deliver);</div><div> }</div><div><br></div><div>sub vcl_deliver {</div><div>    if (obj.hits > 0) {</div><div>       set resp.http.X-Cache = "HIT from varnis";</div>

<div>       set resp.http.X-Hits = obj.hits;</div><div>    } else {</div><div>      set resp.http.X-Cache = "MISS from varnish";</div><div>    }</div><div><span style="white-space:pre-wrap">   </span></div><div>
    remove resp.http.Via;</div><div>    remove resp.http.X-Varnish;</div><div>    </div><div>    return (deliver);</div><div>}</div><div><br></div><div> sub vcl_error {</div><div>     set obj.http.Content-Type = "text/html; charset=utf-8";</div>

<div>     set obj.http.Retry-After = "5";</div><div>     synthetic {"</div><div> <?xml version="1.0" encoding="utf-8"?></div><div> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"</div>

<div>  "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</a>"></div><div> <html></div><div>   <head></div><div>     <title>"} + obj.status + " " + obj.response + {"</title></div>

<div>   </head></div><div>   <body></div><div>     <h1>Error "} + obj.status + " " + obj.response + {"</h1></div><div>     <p>"} + obj.response + {"</p></div>

<div>     <h3>Guru Meditation:</h3></div><div>     <p>XID: "} + req.xid + {"</p></div><div>     <hr></div><div>     <p>Varnish cache server</p></div><div>     <p>varnish</p></div>

<div>   </body></div><div> </html></div><div> "};</div><div>     return (deliver);</div><div> }</div><div><br></div><div> sub vcl_init {</div><div>        return (ok);</div><div> }</div><div><br></div><div>

 sub vcl_fini {</div><div>        return (ok);</div><div>}</div><div><br></div><div><br></div><div>varnish param.show</div><div><div>param.show</div><div>200        </div><div>acceptor_sleep_decay        0.900000 []</div>

<div>acceptor_sleep_incr         0.001000 [s]</div><div>acceptor_sleep_max          0.050000 [s]</div><div>auto_restart                on [bool]</div><div>ban_dups                    on [bool]</div><div>ban_lurker_sleep            0.010000 [s]</div>

<div>between_bytes_timeout       60.000000 [s]</div><div>cc_command                  "exec gcc -std=gnu99  -pthread -fpic -shared -Wl,-x -o %o %s"</div><div>cli_buffer                  8192 [bytes]</div><div>cli_timeout                 10 [seconds]</div>

<div>clock_skew                  10 [s]</div><div>connect_timeout             0.700000 [s]</div><div>critbit_cooloff             180.000000 [s]</div><div>default_grace               10.000000 [seconds]</div><div>default_keep                0.000000 [seconds]</div>

<div>default_ttl                 120.000000 [seconds]</div><div>diag_bitmap                 0x0 [bitmap]</div><div>esi_syntax                  0 [bitmap]</div><div>expiry_sleep                1.000000 [seconds]</div><div>

fetch_chunksize             128 [kilobytes]</div><div>fetch_maxchunksize          262144 [kilobytes]</div><div>first_byte_timeout          60.000000 [s]</div><div>group                       nobody (65533)</div><div>gzip_level                  6 []</div>

<div>gzip_memlevel               8 []</div><div>gzip_stack_buffer           32768 [Bytes]</div><div>gzip_tmp_space              0 []</div><div>gzip_window                 15 []</div><div>http_gzip_support           on [bool]</div>

<div>http_max_hdr                256 [header lines]</div><div>http_range_support          on [bool]</div><div>http_req_hdr_len            32768 [bytes]</div><div>http_req_size               32768 [bytes]</div><div>http_resp_hdr_len           32768 [bytes]</div>

<div>http_resp_size              32768 [bytes]</div><div>idle_send_timeout           60 [seconds]</div><div>listen_address              <a href="http://0.0.0.0:8080" target="_blank">0.0.0.0:8080</a></div><div>listen_depth                1024 [connections]</div>

<div>log_hashstring              on [bool]</div><div>log_local_address           off [bool]</div><div>lru_interval                3600 [seconds]</div><div>max_esi_depth               5 [levels]</div><div>max_restarts                4 [restarts]</div>

<div>nuke_limit                  50 [allocations]</div><div>pcre_match_limit            10000 []</div><div>pcre_match_limit_recursion  10000 []</div><div>ping_interval               3 [seconds]</div><div>pipe_timeout                60 [seconds]</div>

<div>prefer_ipv6                 off [bool]</div><div>queue_max                   100 [%]</div><div>rush_exponent               3 [requests per request]</div><div>saintmode_threshold         10 [objects]</div><div>send_timeout                600 [seconds]</div>

<div>sess_timeout                5 [seconds]</div><div>sess_workspace              65536 [bytes]</div><div>session_linger              100 [ms]</div><div>session_max                 100000 [sessions]</div><div>shm_reclen                  255 [bytes]</div>

<div>shm_workspace               8192 [bytes]</div><div>shortlived                  10.000000 [s]</div><div>stream_maxchunksize         256 [kilobytes]</div><div>stream_tokens               10 []</div><div>syslog_cli_traffic          on [bool]</div>

<div>thread_pool_add_delay       2 [milliseconds]</div><div>thread_pool_add_threshold   0 [requests]</div><div>thread_pool_fail_delay      200 [milliseconds]</div><div>thread_pool_max             2000 [threads]</div><div>

thread_pool_min             200 [threads]</div><div>thread_pool_purge_delay     1000 [milliseconds]</div><div>thread_pool_stack           unlimited [bytes]</div><div>thread_pool_timeout         300 [seconds]</div><div>thread_pool_workspace       65536 [bytes]</div>

<div>thread_pools                2 [pools]</div><div>thread_stats_rate           10 [requests]</div><div>user                        nobody (65534)</div><div>vcc_err_unref               on [bool]</div><div>vcl_dir                     /opt//ace/cache/varnish-cache-3.0.3-plus/etc/varnish</div>

<div>vcl_trace                   off [bool]</div><div>vmod_dir                    /opt/ace/cache/varnish-cache-3.0.3-plus/lib/varnish/vmods</div><div>waiter                      default (epoll, poll)</div><div><br></div>
<div>
<br></div><div>Thank you again.</div><div><br></div><div>Regards,</div><div>Shawn</div></div></div></div></div>
</blockquote></div><br></div>