1VSL(7)                                                                  VSL(7)
2
3
4

NAME

6       VSL - Varnish Shared Memory Logging
7

OVERVIEW

9       This  document  describes  the  format  and  content of all the Varnish
10       shared memory logging tags. These tags are used by  the  varnishlog(1),
11       varnishtop(1), etc.  logging tools supplied with Varnish.
12
13   VSL tags
14       Backend - Backend selected
15              Logged  when a connection is selected for handling a backend re‐
16              quest.
17
18              The format is:
19
20                 %d %s %s
21                 |  |  |
22                 |  |  +- Backend display name
23                 |  +---- VCL name
24                 +------- Connection file descriptor
25
26              NOTE: This tag is currently not in use in the Varnish  log.   It
27              is mentioned here to document legacy versions of the log, or re‐
28              served for possible use in future versions.
29
30       BackendClose - Backend connection closed
31              Logged when a backend connection is closed.
32
33              The format is:
34
35                 %d %s %s [ %s ]
36                 |  |  |    |
37                 |  |  |    +- Optional reason
38                 |  |  +------ "close" or "recycle"
39                 |  +--------- Backend display name
40                 +------------ Connection file descriptor
41
42       BackendOpen - Backend connection opened
43              Logged when a new backend connection is opened.
44
45              The format is:
46
47                 %d %s %s %s %s %s %s
48                 |  |  |  |  |  |  |
49                 |  |  |  |  |  |  +- "connect" or "reuse"
50                 |  |  |  |  |  +---- Local port
51                 |  |  |  |  +------- Local address
52                 |  |  |  +---------- Remote port
53                 |  |  +------------- Remote address
54                 |  +---------------- Backend display name
55                 +------------------- Connection file descriptor
56
57       BackendReuse - Backend connection put up for reuse
58              Logged when a backend connection is put up for reuse by a  later
59              connection.
60
61              The format is:
62
63                 %d %s
64                 |  |
65                 |  +- Backend display name
66                 +---- Connection file descriptor
67
68              NOTE:  This  tag is currently not in use in the Varnish log.  It
69              is mentioned here to document legacy versions of the log, or re‐
70              served for possible use in future versions.
71
72       BackendStart - Backend request start
73              Start  of  backend  processing.  Logs the backend IP address and
74              port number.
75
76              The format is:
77
78                 %s %s
79                 |  |
80                 |  +- Backend Port number
81                 +---- Backend IP4/6 address
82
83              NOTE: This tag is currently not in use in the Varnish  log.   It
84              is mentioned here to document legacy versions of the log, or re‐
85              served for possible use in future versions.
86
87       Backend_health - Backend health check
88              The result of a backend health probe.
89
90              The format is:
91
92                 %s %s %s %s %u %u %u %f %f %s
93                 |  |  |  |  |  |  |  |  |  |
94                 |  |  |  |  |  |  |  |  |  +- Probe HTTP response / error information
95                 |  |  |  |  |  |  |  |  +---- Average response time
96                 |  |  |  |  |  |  |  +------- Response time
97                 |  |  |  |  |  |  +---------- Probe window size
98                 |  |  |  |  |  +------------- Probe threshold level
99                 |  |  |  |  +---------------- Number of good probes in window
100                 |  |  |  +------------------- Probe window bits
101                 |  |  +---------------------- "healthy" or "sick"
102                 |  +------------------------- "Back", "Still" or "Went"
103                 +---------------------------- Backend name
104
105              Probe window bits are:
106
107                 '-': Could not connect
108                 '4': Good IPv4
109                 '6': Good IPv6
110                 'U': Good UNIX
111                 'x': Error Xmit
112                 'X': Good Xmit
113                 'r': Error Recv
114                 'R': Good Recv
115                 'H': Happy
116
117              When the backend is just created, the  window  bits  for  health
118              check  slots that haven't run yet appear as '-' like failures to
119              connect.
120
121       Begin - Marks the start of a VXID
122              The first record of a VXID transaction.
123
124              The format is:
125
126                 %s %d %s
127                 |  |  |
128                 |  |  +- Reason
129                 |  +---- Parent vxid
130                 +------- Type ("sess", "req" or "bereq")
131
132       BereqAcct - Backend request accounting
133              Contains byte counters from backend request processing.
134
135              The format is:
136
137                 %d %d %d %d %d %d
138                 |  |  |  |  |  |
139                 |  |  |  |  |  +- Total bytes received
140                 |  |  |  |  +---- Body bytes received
141                 |  |  |  +------- Header bytes received
142                 |  |  +---------- Total bytes transmitted
143                 |  +------------- Body bytes transmitted
144                 +---------------- Header bytes transmitted
145
146       BereqHeader - Backend request header
147              HTTP header contents.
148
149              The format is:
150
151                 %s: %s
152                 |   |
153                 |   +- Header value
154                 +----- Header name
155
156              NOTE: HTTP header fields are free form records and not  strictly
157              made  of  2  fields. Accessing a specific header with the prefix
158              notation helps treating the header value as a single string.
159
160       BereqMethod - Backend request method
161              The HTTP request method used.
162
163       BereqProtocol - Backend request protocol
164              The HTTP protocol version information.
165
166       BereqURL - Backend request URL
167              The HTTP request URL.
168
169       BerespHeader - Backend response header
170              HTTP header contents.
171
172              The format is:
173
174                 %s: %s
175                 |   |
176                 |   +- Header value
177                 +----- Header name
178
179              NOTE: HTTP header fields are free form records and not  strictly
180              made  of  2  fields. Accessing a specific header with the prefix
181              notation helps treating the header value as a single string.
182
183       BerespProtocol - Backend response protocol
184              The HTTP protocol version information.
185
186       BerespReason - Backend response reason
187              The HTTP response reason string.
188
189       BerespStatus - Backend response status
190              The HTTP response status code.
191
192       BogoHeader - Bogus HTTP received
193              Contains the first 20 characters of  received  HTTP  headers  we
194              could   not  make  sense  of.   Applies  to  both  req.http  and
195              beresp.http.
196
197       CLI - CLI communication
198              CLI communication between varnishd master and child process.
199
200       Debug - Debug messages
201              Debug messages can normally be ignored, but are sometimes  help‐
202              ful  during  trouble-shooting.   Most debug messages must be ex‐
203              plicitly enabled with parameters.
204
205              Debug messages may be added, changed or  removed  without  prior
206              notice and shouldn't be considered stable.
207
208              NB: This log record is masked by default.
209
210       ESI_xmlerror - ESI parser error or warning message
211              An  error  or warning was generated during parsing of an ESI ob‐
212              ject. The log record describes the problem encountered.
213
214       End - Marks the end of a VXID
215              The last record of a VXID transaction.
216
217       Error - Error messages
218              Error messages are stuff you probably want to know.
219
220       ExpBan - Object evicted due to ban
221              Logs the VXID when an object is banned.
222
223       ExpKill - Object expiry event
224              Logs events related to object expiry. The events are:
225
226              EXP_Rearm
227                     Logged when the expiry time of an object changes.
228
229              EXP_Inbox
230                     Logged when the expiry thread picks an  object  from  the
231                     inbox for processing.
232
233              EXP_Kill
234                     Logged  when  the  expiry thread kills an object from the
235                     inbox.
236
237              EXP_When
238                     Logged when the expiry thread moves an object on the bin‐
239                     heap.
240
241              EXP_Expired
242                     Logged when the expiry thread expires an object.
243
244              LRU_Cand
245                     Logged when an object is evaluated for LRU force expiry.
246
247              LRU    Logged when an object is force expired due to LRU.
248
249              LRU_Fail
250                     Logged when no suitable candidate object is found for LRU
251                     force expiry.
252
253              The format is:
254
255                 EXP_Rearm p=%p E=%f e=%f f=0x%x
256                 EXP_Inbox p=%p e=%f f=0x%x
257                 EXP_Kill p=%p e=%f f=0x%x
258                 EXP_When p=%p e=%f f=0x%x
259                 EXP_Expired x=%u t=%f
260                 LRU_Cand p=%p f=0x%x r=%d
261                 LRU x=%u
262                 LRU_Fail
263
264                 Legend:
265                 p=%p         Objcore pointer
266                 t=%f         Remaining TTL (s)
267                 e=%f         Expiry time (unix epoch)
268                 E=%f         Old expiry time (unix epoch)
269                 f=0x%x       Objcore flags
270                 r=%d         Objcore refcount
271                 x=%u         Object VXID
272
273       FetchError - Error while fetching object
274              Logs the error message of a failed fetch operation.
275
276              Error messages should be self-explanatory, yet the http  connec‐
277              tion (HTC) class of errors is reported with these symbols:
278
279                 • junk (-5): Received unexpected data
280
281                 • close (-4): Connection closed
282
283                 • timeout (-3): Timed out
284
285                 • overflow (-2): Buffer/workspace too small
286
287                 • eof (-1): Unexpected end of input
288
289                 • empty (0): Empty response
290
291more (1): More data required
292
293                 • complete (2): Data complete (no error)
294
295                 • idle (3): Connection was closed while idle
296
297              Notice that some HTC errors are never emitted.
298
299       Fetch_Body - Body fetched from backend
300              Ready to fetch body from backend.
301
302              The format is:
303
304                 %d %s %s
305                 |  |  |
306                 |  |  +---- 'stream' or '-'
307                 |  +------- Text description of body fetch mode
308                 +---------- Body fetch mode
309
310       Filters - Body filters
311              List of filters applied to the body
312
313       Gzip - G(un)zip performed on object
314              A  Gzip  record  is  emitted for each instance of gzip or gunzip
315              work performed. Worst case, an ESI transaction stored in gzip'ed
316              objects but delivered gunziped, will run into many of these.
317
318              The format is:
319
320                 %c %c %c %d %d %d %d %d
321                 |  |  |  |  |  |  |  |
322                 |  |  |  |  |  |  |  +- Bit length of compressed data
323                 |  |  |  |  |  |  +---- Bit location of 'last' bit
324                 |  |  |  |  |  +------- Bit location of first deflate block
325                 |  |  |  |  +---------- Bytes output
326                 |  |  |  +------------- Bytes input
327                 |  |  +---------------- 'E': ESI, '-': Plain object
328                 |  +------------------- 'F': Fetch, 'D': Deliver
329                 +---------------------- 'G': Gzip, 'U': Gunzip, 'u': Gunzip-test
330
331              Examples:
332
333                 U F E 182 159 80 80 1392
334                 G F E 159 173 80 1304 1314
335
336       H2RxBody - Received HTTP2 frame body
337              Binary data
338
339       H2RxHdr - Received HTTP2 frame header
340              Binary data
341
342       H2TxBody - Transmitted HTTP2 frame body
343              Binary data
344
345       H2TxHdr - Transmitted HTTP2 frame header
346              Binary data
347
348       Hash - Value added to hash
349              This value was added to the object lookup hash.
350
351              NB: This log record is masked by default.
352
353       Hit - Hit object in cache
354              Object looked up in cache.
355
356              The format is:
357
358                 %u %f %f %f
359                 |  |  |  |
360                 |  |  |  +- Keep period
361                 |  |  +---- Grace period
362                 |  +------- Remaining TTL
363                 +---------- VXID of the object
364
365       HitMiss - Hit for miss object in cache.
366              Hit-for-miss object looked up in cache.
367
368              The format is:
369
370                 %u %f
371                 |  |
372                 |  +- Remaining TTL
373                 +---- VXID of the object
374
375       HitPass - Hit for pass object in cache.
376              Hit-for-pass object looked up in cache.
377
378              The format is:
379
380                 %u %f
381                 |  |
382                 |  +- Remaining TTL
383                 +---- VXID of the object
384
385       HttpGarbage - Unparseable HTTP request
386              Logs the content of unparseable HTTP requests.
387
388       Length - Size of object body
389              Logs the size of a fetch object body.
390
391       Link - Links to a child VXID
392              Links this VXID to any child VXID it initiates.
393
394              The format is:
395
396                 %s %d %s
397                 |  |  |
398                 |  |  +- Reason
399                 |  +---- Child vxid
400                 +------- Child type ("req" or "bereq")
401
402       LostHeader - Failed attempt to set HTTP header
403              Logs  the  header  name of a failed HTTP header operation due to
404              resource exhaustion or configured limits.
405
406       Notice - Informational messages about request handling
407              Informational log messages on  events  occurred  during  request
408              handling.
409
410              The format is:
411
412                 %s: %s
413                 |   |
414                 |   +- Short description of the notice message
415                 +----- Manual page containing the detailed description
416
417              See  the  NOTICE  MESSAGES  section below or the individual VMOD
418              manual pages for detailed information of notice messages.
419
420       ObjHeader - Object header
421              HTTP header contents.
422
423              The format is:
424
425                 %s: %s
426                 |   |
427                 |   +- Header value
428                 +----- Header name
429
430              NOTE: HTTP header fields are free form records and not  strictly
431              made  of  2  fields. Accessing a specific header with the prefix
432              notation helps treating the header value as a single string.
433
434       ObjProtocol - Object protocol
435              The HTTP protocol version information.
436
437       ObjReason - Object reason
438              The HTTP response reason string.
439
440       ObjStatus - Object status
441              The HTTP response status code.
442
443       PipeAcct - Pipe byte counts
444              Contains byte counters for pipe sessions.
445
446              The format is:
447
448                 %d %d %d %d
449                 |  |  |  |
450                 |  |  |  +------- Piped bytes to client
451                 |  |  +---------- Piped bytes from client
452                 |  +------------- Backend request headers
453                 +---------------- Client request headers
454
455       Proxy - PROXY protocol information
456              PROXY protocol information.
457
458              The format is:
459
460                 %d %s %d %s %d
461                 |  |  |  |  |
462                 |  |  |  |  +- server port
463                 |  |  |  +---- server ip
464                 |  |  +------- client port
465                 |  +---------- client ip
466                 +------------- PROXY protocol version
467
468                 All fields are "local" for PROXY local connections (command 0x0)
469
470       ProxyGarbage - Unparseable PROXY request
471              A PROXY protocol header was unparseable.
472
473       ReqAcct - Request handling byte counts
474              Contains byte counts for the request handling.  The  body  bytes
475              count  includes  transmission  overhead  (ie: chunked encoding).
476              ESI sub-requests show the body bytes this ESI fragment including
477              any subfragments contributed to the top level request.  The for‐
478              mat is:
479
480                 %d %d %d %d %d %d
481                 |  |  |  |  |  |
482                 |  |  |  |  |  +- Total bytes transmitted
483                 |  |  |  |  +---- Body bytes transmitted
484                 |  |  |  +------- Header bytes transmitted
485                 |  |  +---------- Total bytes received
486                 |  +------------- Body bytes received
487                 +---------------- Header bytes received
488
489       ReqHeader - Client request header
490              HTTP header contents.
491
492              The format is:
493
494                 %s: %s
495                 |   |
496                 |   +- Header value
497                 +----- Header name
498
499              NOTE: HTTP header fields are free form records and not  strictly
500              made  of  2  fields. Accessing a specific header with the prefix
501              notation helps treating the header value as a single string.
502
503       ReqMethod - Client request method
504              The HTTP request method used.
505
506       ReqProtocol - Client request protocol
507              The HTTP protocol version information.
508
509       ReqStart - Client request start
510              Start of request processing. Logs the client address, port  num‐
511              ber   and listener endpoint name (from the -a command-line argu‐
512              ment).
513
514              The format is:
515
516                 %s %s %s
517                 |  |  |
518                 |  |  +-- Listener name (from -a)
519                 |  +----- Client Port number (0 for Unix domain sockets)
520                 +-------- Client IP4/6 address (0.0.0.0 for UDS)
521
522       ReqURL - Client request URL
523              The HTTP request URL.
524
525       RespHeader - Client response header
526              HTTP header contents.
527
528              The format is:
529
530                 %s: %s
531                 |   |
532                 |   +- Header value
533                 +----- Header name
534
535              NOTE: HTTP header fields are free form records and not  strictly
536              made  of  2  fields. Accessing a specific header with the prefix
537              notation helps treating the header value as a single string.
538
539       RespProtocol - Client response protocol
540              The HTTP protocol version information.
541
542       RespReason - Client response reason
543              The HTTP response reason string.
544
545       RespStatus - Client response status
546              The HTTP response status code.
547
548       SessClose - Client connection closed
549              SessClose is the last record for any client connection.
550
551              The format is:
552
553                 %s %f
554                 |  |
555                 |  +- How long the session was open
556                 +---- Why the connection closed
557
558       SessError - Client connection accept failed
559              Accepting a client connection has failed.
560
561              The format is:
562
563                 %s %s %s %d %d %s
564                 |  |  |  |  |  |
565                 |  |  |  |  |  +- Detailed error message
566                 |  |  |  |  +---- Error Number (errno) from accept(2)
567                 |  |  |  +------- File descriptor number
568                 |  |  +---------- Local TCP port / 0 for UDS
569                 |  +------------- Local IPv4/6 address / 0.0.0.0 for UDS
570                 +---------------- Socket name (from -a argument)
571
572       SessOpen - Client connection opened
573              The first record for a client connection, with  the  socket-end‐
574              points of the connection.
575
576              The format is:
577
578                 %s %d %s %s %s %f %d
579                 |  |  |  |  |  |  |
580                 |  |  |  |  |  |  +- File descriptor number
581                 |  |  |  |  |  +---- Session start time (unix epoch)
582                 |  |  |  |  +------- Local TCP port / 0 for UDS
583                 |  |  |  +---------- Local IPv4/6 address / 0.0.0.0 for UDS
584                 |  |  +------------- Socket name (from -a argument)
585                 |  +---------------- Remote TCP port / 0 for UDS
586                 +------------------- Remote IPv4/6 address / 0.0.0.0 for UDS
587
588       Storage - Where object is stored
589              Type and name of the storage backend the object is stored in.
590
591              The format is:
592
593                 %s %s
594                 |  |
595                 |  +- Name of storage backend
596                 +---- Type ("malloc", "file", "persistent" etc.)
597
598       TTL - TTL set on object
599              A  TTL  record is emitted whenever the ttl, grace or keep values
600              for an object is set as well as whether the object is  cacheable
601              or not.
602
603              The format is:
604
605                 %s %d %d %d %d [ %d %d %u %u ] %s
606                 |  |  |  |  |    |  |  |  |    |
607                 |  |  |  |  |    |  |  |  |    +- "cacheable" or "uncacheable"
608                 |  |  |  |  |    |  |  |  +------ Max-Age from Cache-Control header
609                 |  |  |  |  |    |  |  +--------- Expires header
610                 |  |  |  |  |    |  +------------ Date header
611                 |  |  |  |  |    +--------------- Age (incl Age: header value)
612                 |  |  |  |  +-------------------- Reference time for TTL
613                 |  |  |  +----------------------- Keep
614                 |  |  +-------------------------- Grace
615                 |  +----------------------------- TTL
616                 +-------------------------------- "RFC", "VCL" or "HFP"
617
618              The four optional fields are only present in "RFC" headers.
619
620              Examples:
621
622                 RFC 60 10 -1 1312966109 1312966109 1312966109 0 60 cacheable
623                 VCL 120 10 0 1312966111 uncacheable
624                 HFP 2 0 0 1312966113 uncacheable
625
626       Timestamp - Timing information
627              Contains timing information for the Varnish worker threads.
628
629              Time  stamps  are  issued by Varnish on certain events, and show
630              the absolute time of the event, the time spent since  the  start
631              of  the  work  unit, and the time spent since the last timestamp
632              was logged. See the TIMESTAMPS  section  below  for  information
633              about the individual time stamps.
634
635              The format is:
636
637                 %s: %f %f %f
638                 |   |  |  |
639                 |   |  |  +- Time since last timestamp
640                 |   |  +---- Time since start of work unit
641                 |   +------- Absolute time of event
642                 +----------- Event label
643
644       VCL_Error - VCL execution error message
645              Logs error messages generated during VCL execution.
646
647       VCL_Log - Log statement from VCL
648              User generated log messages insert from VCL through std.log()
649
650       VCL_acl - VCL ACL check results
651              Logs VCL ACL evaluation results.
652
653              The format is:
654
655                 %s [%s [%s [fixed: %s]]]
656                 |   |   |          |
657                 |   |   |          +- Fixed entry (see vcc_acl_pedantic parameter)
658                 |   |   +------------ Matching entry (only for MATCH)
659                 |   +---------------- Name of the ACL for MATCH or NO_MATCH
660                 +-------------------- MATCH, NO_MATCH or NO_FAM
661
662              MATCH  denotes  an ACL match NO_MATCH denotes that a checked ACL
663              has not matched NO_FAM denotes  a  missing  address  family  and
664              should not occur.
665
666       VCL_call - VCL method called
667              Logs the VCL method name when a VCL method is called.
668
669       VCL_return - VCL method return value
670              Logs the VCL method terminating statement.
671
672       VCL_trace - VCL trace data
673              Logs VCL execution trace data.
674
675              The format is:
676
677                 %s %u %u.%u.%u
678                 |  |  |  |  |
679                 |  |  |  |  +- VCL program line position
680                 |  |  |  +---- VCL program line number
681                 |  |  +------- VCL program source index
682                 |  +---------- VCL trace point index
683                 +------------- VCL configname
684
685              NB: This log record is masked by default.
686
687       VCL_use - VCL in use
688              Records the name of the VCL being used.
689
690              The format is:
691
692                 %s [ %s %s ]
693                 |    |  |
694                 |    |  +- Name of label used to find it
695                 |    +---- "via"
696                 +--------- Name of VCL put in use
697
698       VSL - VSL API warnings and error message
699              Warnings and error messages generated by the VSL API while read‐
700              ing the shared memory log.
701
702       VdpAcct - Deliver filter accounting
703              Contains name of VDP and statistics.
704
705              The format is:
706
707                 %s %d %d
708                 |  |  |
709                 |  |  +- Total bytes produced
710                 |  +---- Number of calls made
711                 +------- Name of filter
712
713              NB: This log record is masked by default.
714
715       VfpAcct - Fetch filter accounting
716              Contains name of VFP and statistics.
717
718              The format is:
719
720                 %s %d %d
721                 |  |  |
722                 |  |  +- Total bytes produced
723                 |  +---- Number of calls made
724                 +------- Name of filter
725
726              NB: This log record is masked by default.
727
728       Witness - Lock order witness records
729              Diagnostic recording of locking order.
730
731       WorkThread - Logs thread start/stop events
732              Logs worker thread creation and termination events.
733
734              The format is:
735
736                 %p %s
737                 |  |
738                 |  +- [start|end]
739                 +---- Worker struct pointer
740
741              NB: This log record is masked by default.
742

TIMESTAMPS

744       Timestamps are inserted in the log on completing certain events  during
745       the  worker  thread's task handling. The timestamps has a label showing
746       which event was completed. The reported fields show the  absolute  time
747       of  the  event, the time spent since the start of the task and the time
748       spent since the last timestamp was logged.
749
750       The timestamps logged automatically by Varnish are inserted after  com‐
751       pleting  events  that  are  expected to have delays (e.g. network IO or
752       spending time on a waitinglist). Timestamps can also be  inserted  from
753       VCL  using the std.timestamp() function. If one is doing time consuming
754       tasks in the VCL configuration, it's a good idea to log a timestamp af‐
755       ter  completing  that task. This keeps the timing information in subse‐
756       quent timestamps from including the time spent on the VCL event.
757
758   Request handling timestamps
759       Start  The  start  of  request  processing  (first  byte  received   or
760              restart).
761
762       Req    Complete client request received.
763
764       ReqBody
765              Client  request  body  processed (discarded, cached or passed to
766              the backend).
767
768       Waitinglist
769              Came off waitinglist.
770
771       Fetch  Fetch processing  finished  (completely  fetched  or  ready  for
772              streaming).
773
774       Process
775              Processing finished, ready to deliver the client response.
776
777       Resp   Delivery of response to the client finished.
778
779       Restart
780              Client request is being restarted.
781
782   Pipe handling timestamps
783       Pipe   Opened a pipe to the backend and forwarded the request.
784
785       PipeSess
786              The pipe session has finished.
787
788   Backend fetch timestamps
789       Start  Start of the backend fetch processing.
790
791       Fetch  Came off vcl_backend_fetch ready to send the backend request.
792
793       Connected
794              Successfully established or reused a backend connection.
795
796       Bereq  Backend request sent.
797
798       Beresp Backend response headers received.
799
800       Process
801              Processing finished, ready to fetch the response body.
802
803       BerespBody
804              Backend response body received.
805
806       Retry  Backend request is being retried.
807
808       Error  Backend request failed to vcl_backend_error.
809

NOTICE MESSAGES

811       Notice  messages contain informational messages about the handling of a
812       request. These can be exceptional circumstances encountered that causes
813       deviation from the normal handling. The messages are prefixed with vsl:
814       for core Varnish generated messages, and VMOD authors are encouraged to
815       use  vmod_<name>:  for their own notice messages. This matches the name
816       of the manual page where detailed descriptions of notice  messages  are
817       expected.
818
819       The core messages are described below.
820
821   Conditional fetch wait for streaming object
822       The  backend  answered 304 Not Modified on a conditional fetch using an
823       object that has not yet been fully fetched as the  stale  template  ob‐
824       ject.  This can only happen when the TTL of the object is less than the
825       time it takes to fetch it. The fetch is halted until the  stale  object
826       is fully fetched, upon which the new object is created as normal. While
827       waiting, any grace time on the stale object will be in effect.
828
829   High number of variants
830       Objects are primarily looked up from an index using the hash  key  com‐
831       puted  from  the  hash_data() VCL function. When variants are involved,
832       that is to say when a backend response was stored with a Vary header, a
833       secondary  lookup  is performed but it is not indexed. As the number of
834       variants for a given key increases, this can slow cache  lookups  down,
835       and  since  this  happens  under a lock, this can greatly increase lock
836       contention, even more so for  frequently  requested  objects.  Variants
837       should  therefore  be  used sparingly on cacheable responses, but since
838       they can originate from either  VCL  or  origin  servers,  this  notice
839       should help identify problematic resources.
840

HISTORY

842       This document was initially written by Poul-Henning Kamp, and later up‐
843       dated by Martin Blix Grydeland.
844

SEE ALSO

846varnishhist(1)
847
848varnishlog(1)
849
850varnishncsa(1)
851
852varnishtop(1)
853
855       This document is licensed under the same licence as Varnish itself. See
856       LICENCE for details.
857
858       • Copyright (c) 2006 Verdens Gang AS
859
860       • Copyright (c) 2006-2015 Varnish Software AS
861
862
863
864
865                                                                        VSL(7)
Impressum