VARNISH-COUNTERS(7)
๐ธ VARNISH-COUNTERS ๐ธ
okay bestie, welcome to VARNISH-COUNTERS(7) from the Miscellaneous Information Manual ๐ this is literally the dictionary of every counter field Varnish knows about, and we're going through all of them, no skipping, no cap ๐ซถ
โจ NAME โจ
varnish-counters โ Varnish counter field definitions ๐
Each counter below gets its name, its type (counter or gauge), and its level (debug, info or diag), plus what it actually means. Let's get into it, we're gonna eat ๐
๐ LCK โ LOCK COUNTERS ๐
These ones track the activity inside the different classes of mutex-locks. Real "who's touching the locks" energy ๐ฅ
ngl the counts may be slightly wrong if there's more than one lock instantiated in each class (ie: .creat > 1). Not a vibe, just a fact ๐
creatโ counter โ debug โ Created locks. Lock babies being born โจdestroyโ counter โ debug โ Destroyed locks. Lock babies going to the great lock farm upstate ๐ญlocksโ counter โ debug โ Lock Operations. Every time a lock gets operated on, this goes up ๐ซdbg_busyโ counter โ debug โ Contended lock operations.- If the lck debug bit is set: lock operations which returned
EBUSYon the first locking attempt. - If the lck debug bit is unset, this counter will never be incremented even if lock operations are contended. Like, it's just sitting there. Silently. ๐
- If the lck debug bit is set: lock operations which returned
dbg_try_failโ counter โ debug โ Contended trylock operations.- If the lck debug bit is set: trylock operations which returned
EBUSY. - If the lck debug bit is unset, this counter will never be incremented even if lock operations are contended. Same deal, same silence ๐ซ
- If the lck debug bit is set: trylock operations which returned
๐ MAIN โ MAIN COUNTERS ๐
The main character section, obviously ๐ every counter the child process wants you to know about.
summsโ counter โ debug โ stat summ operations. Counts how many times per-thread statistics got summed into the global counters ๐งฎuptimeโ counter โ info โ Child process uptime. How long the child process has been running. Living its life โณsess_connโ counter โ info โ Sessions accepted. Count of sessions successfully accepted ๐sess_failโ counter โ info โ Session accept failures. Count of failures to accept TCP connection.- This counter is the sum of the
sess_fail_*counters, which give more detailed information. So if you want the tea, read the ones below ๐ต
- This counter is the sum of the
sess_fail_econnabortedโ counter โ info โ Session accept failures: connection aborted. Detailed reason forsess_fail: connection aborted by the client, usually harmless. The client just ghosted โ๏ธsess_fail_eintrโ counter โ info โ Session accept failures: interrupted system call. Detailed reason forsess_fail: theaccept()call was interrupted, usually harmless ๐ซถsess_fail_emfileโ counter โ info โ Session accept failures: too many open files. Detailed reason forsess_fail: no file descriptor was available. Consider raisingRLIMIT_NOFILE(seeulimit -n). We ran out of file descriptors bestie, it happens ๐ญsess_fail_ebadfโ counter โ info โ Session accept failures: bad file descriptor. Detailed reason forsess_fail: the listen socket file descriptor was invalid. Should never happen. Like, if you see this, something is deeply wrong ๐sess_fail_enomemโ counter โ info โ Session accept failures: not enough memory. Detailed reason forsess_fail: most likely insufficient socket buffer memory. Should never happen ๐sess_fail_otherโ counter โ info โ Session accept failures: other. Detailed reason forsess_fail: neither of the above, seeSessErrorlog (varnishlog -g raw -i SessError). The mystery box option ๐ฆclient_req_400โ counter โ info โ Client requests received, subject to 400 errors.400means we couldn't make sense of the request, it was malformed in some drastic way. Not us, it's them ๐client_req_417โ counter โ info โ Client requests received, subject to 417 errors.417means that something went wrong with anExpect:header. Expectations? Not met ๐ญclient_reqโ counter โ info โ Good client requests received. The count of parseable client requests seen. The well-behaved ones โญesi_reqโ counter โ info โ ESI subrequests. Number of ESI subrequests made ๐งฉcache_hitโ counter โ info โ Cache hits. Count of cache hits. A cache hit indicates that an object has been delivered to a client without fetching it from a backend server. The dream scenario fr fr ๐ฅcache_hit_graceโ counter โ info โ Cache grace hits. Count of cache hits with grace. A cache hit with grace is a cache hit where the object is expired. Note that such hits are also included in thecache_hitcounter. Yes, they double dip, that's just how it is ๐ซcache_hitpassโ counter โ info โ Cache hits for pass. Count of hits for pass. A cache hit for pass indicates that Varnish is going to pass the request to the backend and this decision has been cached in it self. This counts how many times the cached decision is being used. The decision said "go to backend" and it's sticking to it ๐ฏcache_hitmissโ counter โ info โ Cache hits for miss. Count of hits for miss. A cache hit for miss indicates that Varnish is going to proceed as for a cache miss without request coalescing, and this decision has been cached. This counts how many times the cached decision is being used. Same energy, different decision ๐ซcache_missโ counter โ info โ Cache misses. Count of misses. A cache miss indicates the object was fetched from the backend before delivering it to the client. Had to go get it ourselves ๐คberesp_uncacheableโ counter โ info โ Uncacheable backend responses. Count of backend responses considered uncacheable. Sorry babe, not staying in the cache ๐ซberesp_shortlivedโ counter โ info โ Shortlived objects. Count of objects created withttl+grace+keepshorter than the'shortlived'runtime parameter. Blink and they're gone ๐ฆbackend_connโ counter โ info โ Backend conn. success. How many backend connections have successfully been established. We made it ๐คbackend_unhealthyโ counter โ info โ Backend conn. not attempted. Not even tried ๐ทbackend_busyโ counter โ info โ Backend conn. too many. Too many bestie, we're full ๐ฆbackend_failโ counter โ info โ Backend conn. failures. It did not work ๐backend_reuseโ counter โ info โ Backend conn. reuses. Count of backend connection reuses. This counter is increased whenever we reuse a recycled connection. Reduce, reuse, recycle โป๏ธbackend_recycleโ counter โ info โ Backend conn. recycles. Count of backend connection recycles. This counter is increased whenever we have a keep-alive connection that is put back into the pool of connections. It has not yet been used, but it might be, unless the backend closes it. Just chilling in the pool, waiting for its moment ๐backend_retryโ counter โ info โ Backend conn. retry. One more time with feeling ๐backend_waitโ counter โ info โ Backend conn. waited in queue for a connection. Count of backend requests that waited in abackend_waitqueue for a connection to become available. The size of a backend wait queue is defined by the backendwait_limitproperty. The wait queue is only used whenmax_connectionsto the backend are in use. Standing in line, patiently ๐งbackend_wait_failโ counter โ info โ Backend conn. waited in queue and did not get a connection. Count of backend requests that waited in abackend_waitqueue for a connection to become available and did not get one (timed out). The maximum time to wait in the queue is defined by the backendwait_timeoutproperty. Waited the whole time and still got nothing ๐ญfetch_headโ counter โ info โ Fetch no body (HEAD).berespwith no body because the request isHEAD. No body, just vibes ๐ฉfetch_lengthโ counter โ info โ Fetch with Length.beresp.bodywithContent-Length. We know exactly how long it is ๐fetch_chunkedโ counter โ info โ Fetch chunked.beresp.bodywithChunked. Chunk by chunk by chunk ๐งฑfetch_eofโ counter โ info โ Fetch EOF.beresp.bodywithEOF. It just... ends ๐fetch_badโ counter โ info โ Fetch bad T-E.beresp.bodylength/fetch could not be determined. Unknowable, honestly ๐fetch_noneโ counter โ info โ Fetch no body.beresp.bodyempty. Nothing there, bestie ๐ณ๏ธfetch_1xxโ counter โ info โ Fetch no body (1xx).berespwith no body because of1XXresponse. Just an update, no content ๐fetch_204โ counter โ info โ Fetch no body (204).berespwith no body because of204response. Success, but make it empty โจfetch_304โ counter โ info โ Fetch no body (304).berespwith no body because of304response. Not modified, so not re-sent ๐fetch_failedโ counter โ info โ Fetch failed (all causes).berespfetch failed. Every possible way it can go wrong, rolled into one ๐bgfetch_no_threadโ counter โ info โ Background fetch failed (no thread). A bgfetch triggered by a grace hit failed, no thread available. Nobody was free to do it ๐ดpoolsโ gauge โ info โ Number of thread pools. Number of thread pools. See also parameterthread_pools. NB: presently pools cannot be removed once created. Once they're here, they're here forever ๐ซถthreadsโ gauge โ info โ Total number of threads. Number of threads in all pools. See also parametersthread_pools,thread_pool_minandthread_pool_max. The whole squad ๐งตthreads_limitedโ counter โ info โ Threads hit max. Number of times more threads were needed, but limit was reached in a thread pool. See also parameterthread_pool_max. We wanted more, we couldn't have more ๐threads_createdโ counter โ info โ Threads created. Total number of threads created in all pools. New thread, who dis ๐ฑthreads_destroyedโ counter โ info โ Threads destroyed. Total number of threads destroyed in all pools. Gone but not forgotten ๐ชฆthreads_failedโ counter โ info โ Thread creation failed. Number of times creating a thread failed. SeeVSL::Debugfor diagnostics. See also parameterthread_fail_delay. It tried to make a thread and could not ๐thread_queue_lenโ gauge โ info โ Length of session queue. Length of session queue waiting for threads. NB: only updates once per second. See also parameterthread_queue_limit. The line is long and it refreshes slowly โฐbusy_sleepโ counter โ info โ Number of requests sent to sleep on busy objhdr. Number of requests sent to sleep without a worker thread because they found a busy object. Nap time ๐ดbusy_wakeupโ counter โ info โ Number of requests woken after sleep on busy objhdr. Number of requests taken off the busy object sleep list and rescheduled. Rise and shine โ๏ธbusy_killedโ counter โ info โ Number of requests killed after sleep on busy objhdr. Number of requests killed from the busy object sleep list due to lack of resources. Never woke up ๐sess_queuedโ counter โ info โ Sessions queued for thread. Number of times session was queued waiting for a thread. See also parameterthread_queue_limit. Waiting in line ๐ถโ๏ธsess_droppedโ counter โ info โ Sessions dropped for thread. Number of times an HTTP/1 session was dropped because the queue was too long already. See also parameterthread_queue_limit. The line was too long, so out you go ๐req_droppedโ counter โ info โ Requests dropped. Number of times an HTTP/2 stream was refused because the queue was too long already. See also parameterthread_queue_limit. Same energy, but HTTP/2 this time ๐ชreq_resetโ counter โ info โ Requests reset. Number of times a client left before the VCL processing of its requests completed. For HTTP/2 sessions, either the stream was reset by anRST_STREAMframe from the client, or a stream or connection error occurred. They left mid-conversation ๐ญn_objectโ gauge โ info โ object structs made. Approximate number of HTTP objects (headers + body, if present) in the cache. Approximate, so don't come for it ๐ฆn_vampireobjectโ gauge โ diag โ unresurrected objects. Number of unresurrected objects. Vampire objects, undead but not back yet ๐งn_objectcoreโ gauge โ info โ objectcore structs made. Approximate number of object metadata elements in the cache. Each object needs an objectcore, extra objectcores are for hit-for-miss, hit-for-pass and busy objects. Every object needs its little core ๐งn_objectheadโ gauge โ info โ objecthead structs made.
โฆand yeah, that's the approximate number of different hash entries vibing in the cache. anyway. Moving on, bestie, we got MORE counters ๐
n_backendโ gauge ยท info โ Number of backends โ literally just how many backends we know about. that's it, that's the counter ๐ซถn_expiredโ counter ยท info โ Number of expired objects โ how many objects got evicted from the cache because they were simply too old. grandma objects, gone ๐n_supersededโ counter ยท diag โ Number of superseded objects โ how many times an object got replaced by a newer one. out with the old, in with the slay โจn_lru_nukedโ counter ยท info โ Number of LRU nuked objects โ how many objects got forcibly yeeted out of storage to make room for a new one. not a vibe, but necessary ๐ญn_lru_movedโ counter ยท diag โ Number of LRU moved objects โ how many move operations went down on the LRU list.n_lru_limitedโ counter ยท info โ Reached nuke_limit โ how many times we needed more storage space but hit the limit in anuke_limit. see also parameternuke_limit. ๐งlosthdrโ counter ยท info โ HTTP header overflowss_sessโ counter ยท info โ Total sessions seenn_pipeโ gauge ยท info โ Number of ongoing pipe sessionspipe_limitedโ counter ยท info โ Pipes hit pipe_sess_max โ how many times we needed more pipes but the limit was reached. see also parameterpipe_sess_max. ๐ฐs_pipeโ counter ยท info โ Total pipe sessions seens_passโ counter ยท info โ Total pass-ed requests seens_fetchโ counter ยท info โ Total backend fetches initiated โ total backend fetches initiated, including background fetches. yes, the sneaky ones count too ๐s_bgfetchโ counter ยท info โ Total backend background fetches initiateds_synthโ counter ยท info โ Total synthetic responses mades_req_hdrbytesโ counter ยท info โ Request header bytes โ total request header bytes received.s_req_bodybytesโ counter ยท info โ Request body bytes โ total request body bytes received.s_resp_hdrbytesโ counter ยท info โ Response header bytes โ total response header bytes transmitted.s_resp_bodybytesโ counter ยท info โ Response body bytes โ total response body bytes transmitted.s_pipe_hdrbytesโ counter ยท info โ Pipe request header bytes โ total request bytes received for piped sessions.s_pipe_inโ counter ยท info โ Piped bytes from client โ total number of bytes forwarded from clients in pipe sessions.s_pipe_outโ counter ยท info โ Piped bytes to client โ total number of bytes forwarded to clients in pipe sessions.
okay now we're getting into the transit girlies, and they're lowkey iconic ๐
transit_storedโ counter ยท info โ Stored uncacheable body bytes โ total number of transient body bytes written to storage as if they were reusable like a cacheable backend response. transient objects are stored for a single transaction, and this includes uncacheable backend responses, synthetic responses and client requests. one transaction and done, no cap โจtransit_bufferedโ counter ยท info โ Buffered uncacheable response body bytes โ total number of uncacheable responses body bytes forwarded using a fixed buffer allocated from storage. this behavior can be enabled by the'transit_buffer'parameter, or the'beresp.transit_buffer'VCL variable. ๐งsess_closedโ counter ยท info โ Session Closedsess_closed_errโ counter ยท info โ Session Closed with error โ total number of sessions closed with errors. seesc_*diag counters for the detailed breakdown. it's giving receipts ๐sess_readaheadโ counter ยท info โ Session Read Aheadsess_herdโ counter ยท diag โ Session herd โ number of times thetimeout_lingertriggered.
and nowโฆ the sc_* squad ๐ these are your session-close diag counters, one for literally every way a session can dip out:
sc_rem_closeโ counter ยท diag โ Session OK REM_CLOSE โ number of session closes withREM_CLOSE(Client Closed).sc_req_closeโ counter ยท diag โ Session OK REQ_CLOSE โ number of session closes withREQ_CLOSE(Client requested close).sc_req_http10โ counter ยท diag โ Session Err REQ_HTTP10 โ number of session closes with ErrorREQ_HTTP10(Proto < HTTP/1.1).sc_rx_badโ counter ยท diag โ Session Err RX_BAD โ number of session closes with ErrorRX_BAD(Received bad req/resp).sc_rx_bodyโ counter ยท diag โ Session Err RX_BODY โ number of session closes with ErrorRX_BODY(Failure receivingreq.body).sc_rx_junkโ counter ยท diag โ Session Err RX_JUNK โ number of session closes with ErrorRX_JUNK(Received junk data). junk fr ๐๏ธsc_rx_overflowโ counter ยท diag โ Session Err RX_OVERFLOW โ number of session closes with ErrorRX_OVERFLOW(Received buffer overflow).sc_rx_timeoutโ counter ยท diag โ Session Err RX_TIMEOUT โ number of session closes with ErrorRX_TIMEOUT(Receive timeout).sc_rx_close_idleโ counter ยท diag โ Session Err RX_CLOSE_IDLE โ number of session closes with ErrorRX_CLOSE_IDLE:timeout_idlehas been exceeded while waiting for a client request. bestie ghosted us ๐ญsc_tx_pipeโ counter ยท diag โ Session OK TX_PIPE โ number of session closes withTX_PIPE(Piped transaction).sc_tx_errorโ counter ยท diag โ Session Err TX_ERROR โ number of session closes with ErrorTX_ERROR(Error transaction).sc_tx_eofโ counter ยท diag โ Session OK TX_EOF โ number of session closes withTX_EOF(EOF transmission).sc_resp_closeโ counter ยท diag โ Session OK RESP_CLOSE โ number of session closes withRESP_CLOSE(Backend/VCL requested close).sc_overloadโ counter ยท diag โ Session Err OVERLOAD โ number of session closes with ErrorOVERLOAD(Out of some resource).sc_pipe_overflowโ counter ยท diag โ Session Err PIPE_OVERFLOW โ number of session closes with ErrorPIPE_OVERFLOW(Session pipe overflow).sc_range_shortโ counter ยท diag โ Session Err RANGE_SHORT โ number of session closes with ErrorRANGE_SHORT(Insufficient data for range).sc_req_http20โ counter ยท diag โ Session Err REQ_HTTP20 โ number of session closes with ErrorREQ_HTTP20(HTTP2 not accepted).sc_vcl_failureโ counter ยท diag โ Session Err VCL_FAILURE โ number of session closes with ErrorVCL_FAILURE(VCL failure).sc_rapid_resetโ counter ยท diag โ Session Err RAPID_RESET โ number of times we failed an http/2 session because it hit its configured limits for the number of permitted rapid stream resets. slow down, queen ๐sc_bankruptโ counter ยท diag โ Session Err BANKRUPT โ number of times we failed an http/2 session because all the streams were waiting for their windows to be credited whenh2_window_timeouttriggered. no funds, no streams ๐client_resp_500โ counter ยท diag โ Delivery failed due to insufficient workspace. โ number of times we failed a response due to running out of workspace memory during delivery.ws_backend_overflowโ counter ยท diag โworkspace_backendoverflows โ number of times we ran out of space inworkspace_backend.ws_client_overflowโ counter ยท diag โworkspace_clientoverflows โ number of times we ran out of space inworkspace_client.ws_thread_overflowโ counter ยท diag โworkspace_threadoverflows โ number of times we ran out of space inworkspace_thread.ws_session_overflowโ counter ยท diag โworkspace_sessionoverflows โ number of times we ran out of space inworkspace_session.
shm girlies, rise โจ๐ this is your shared memory log clique:
shm_recordsโ counter ยท diag โ SHM records โ number of log records written to the shared memory log.shm_writesโ counter ยท diag โ SHM writes โ number of individual writes to the shared memory log. a single write may batch multiple records for buffered tasks. multitasking icon ๐shm_flushesโ counter ยท diag โ SHM flushes due to overflow โ number of writes performed before the end of a buffered task because adding a record to a batch would exceedvsl_buffer.shm_contโ counter ยท diag โ SHM lock contention โ number of times a write had to wait for the lock. waiting room behavior ๐คshm_cyclesโ counter ยท diag โ SHM cycles through VSL space โ number of times a write of log records would reach past the end of the shared memory log, cycling back to the beginning. round and round bestie ๐shm_bytesโ counter ยท diag โ SHM bytes โ number of bytes written to the shared memory log.backend_reqโ counter ยท info โ Backend requests maden_vclโ gauge ยท info โ Number of loaded VCLs in totaln_vcl_availโ gauge ยท diag โ Number of VCLs availablen_vcl_discardโ gauge ยท diag โ Number of discarded VCLsvcl_failโ counter ยท info โ VCL failures โ count of failures which prevented VCL from completing.
and finally for this stretch: the BANS ๐ซ (not the dramatic kind, the cache kind):
bansโ gauge ยท info โ Count of bans โ number of all bans in system, including bans superseded by newer bans and bans already checked by the ban-lurker.bans_completedโ gauge ยท diag โ Number of bans marked 'completed' โ number of bans which are no longer active, either because they got checked by the ban-lurker or superseded by newer identical bans. retired, but with honor ๐ซกbans_objโ gauge ยท diag โ Number of bans usingobj.*โ number of bans which useobj.*variables. these bans can possibly be washed by the ban-lurker.bans_reqโ gauge ยท diag โ Number of bans usingreq.*โ number of bans which usereq.*variables. these bans cannot be washed by the ban-lurker. stubborn queens ๐bans_addedโ counter ยท diag โ Bans added โ counter of bans added to ban list.bans_deletedโ counter ยท diag โ Bans deleted โ counter of bans deleted from ban list.bans_testedโ counter ยท diag โ Bans tested against objects (lookup) โ count of how many bans and objects have been tested against each other during hash lookup.bans_obj_killedโ counter ยท diag โ Objects killed by bans (lookup) โ number of objects killed by bans during object lookup. rip bozo ๐ญbans_lurker_testedโ counter ยท diag โ Bans tested against objects (lurker) โ count of how many bans and objects have been tested against each other by the ban-lurker.bans_tests_testedโ counter ยท diag โ Ban tests tested against objects (lookup) โ count of how many tests and objects have been tested against each other during lookup.'ban req.url == foo && req.http.host == bar'counts as one in'bans_tested'and as two in'bans_tests_tested'. math is mathing ๐ฅbans_lurker_tests_testedโ counter ยท diag โ Ban tests tested against objects (lurker) โ count of how many tests and objects have been tested against each other by the ban-lurker.'ban req.url == foo && req.http.host == bar'counts as one in'bans_tested'and as two in'bans_tests_tested'.bans_lurker_obj_killedโ counter ยท diag โ Objects killed by bans (lurker) โ number of objects killed by the ban-lurker.bans_lurker_obj_killed_cutoffโ counter ยท diag โ Objects killed by bans for cutoff (lurker)
Number of objects killed by the ban-lurker to keep the number of bans below ban_cutoff. ๐
bans_dupsโ counter / diag โ Bans superseded by other bans
Count of bans replaced by later identical bans. โจ
bans_lurker_contentionโ counter / diag โ Lurker gave way for lookup
Number of times the ban-lurker had to wait for lookups. ๐ซถ
bans_persisted_bytesโ gauge / diag โ Bytes used by the persisted ban lists
Number of bytes used by the persisted ban lists.
bans_persisted_fragmentationโ gauge / diag โ Extra bytes in persisted ban lists due to fragmentation
Number of extra bytes accumulated through dropped and completed bans in the persistent ban lists.
n_purgesโ counter / info โ Number of purge operations executedn_obj_purgedโ counter / info โ Number of purged objectsexp_mailedโ counter / diag โ Number of objects mailed to expiry thread
Number of objects mailed to expiry thread for handling. ๐ฌ
exp_receivedโ counter / diag โ Number of objects received by expiry thread
Number of objects received by expiry thread for handling. ๐
hcb_nolockโ counter / debug โ HCB Lookups without lockhcb_lockโ counter / debug โ HCB Lookups with lockhcb_insertโ counter / debug โ HCB Insertsesi_errorsโ counter / diag โ ESI parse errors (unlock)esi_warningsโ counter / diag โ ESI parse warnings (unlock)vmodsโ gauge / info โ Loaded VMODsn_gzipโ counter / info โ Gzip operationsn_gunzipโ counter / info โ Gunzip operationsn_test_gunzipโ counter / info โ Test gunzip operations
Those operations occur when Varnish receives a compressed object from a backend. They are done to verify the gzip stream while it's inserted in storage. ๐ซง
http1_iovs_flushโ counter / info โ Premature iovec flushes
Number of additional writes performed on HTTP1 connections because the number of IO vectors was too small to submit all possible IO in one go. This number is configured through the http1_iovs parameter for client connections and implicitly defined by the amount of free workspace for backend connections.
http1_absolute_formโ counter / info โ Requests with absolute form request target
Number of requests for which an absolute form request target (e.g. <http://example.com/> or <https://example.com/>) was handled. The <https://> scheme is handled unless the feature https_scheme is disabled (see RUN TIME PARAMETERS in varnishd(1)).
See also ReqTarget in vsl(7). This counter is approximately correct. ๐
๐งบ MEMPOOL โ MEMORY POOL COUNTERS
liveโ gauge / debug โ In usepoolโ gauge / debug โ In Poolsz_wantedโ gauge / debug โ Size requestedsz_actualโ gauge / debug โ Size allocatedallocsโ counter / debug โ Allocationsfreesโ counter / debug โ Freesrecycleโ counter / debug โ Recycled from pooltimeoutโ counter / debug โ Timed out from pooltoosmallโ counter / debug โ Too small to recyclesurplusโ counter / debug โ Too many for poolrandryโ counter / debug โ Pool ran dry
๐ MGT โ MANAGEMENT PROCESS COUNTERS
uptimeโ counter / info โ Management process uptime
Uptime in seconds of the management process โฑ๏ธ
child_startโ counter / diag โ Child process started
Number of times the child process has been started
child_exitโ counter / diag โ Child process normal exit
Number of times the child process has been cleanly stopped
child_stopโ counter / diag โ Child process unexpected exit
Number of times the child process has exited with an unexpected return code
child_diedโ counter / diag โ Child process died (signal)
Number of times the child process has died due to signals
child_dumpโ counter / diag โ Child process core dumped
Number of times the child process has produced core dumps
child_panicโ counter / diag โ Child process panic
Number of times the management process has caught a child panic ๐ฑ
๐งฑ SMA โ MALLOC STEVEDORE COUNTERS
c_reqโ counter / info โ Allocator requests
Number of times the storage has been asked to provide a storage segment.
c_failโ counter / info โ Allocator failures
Number of times the storage has failed to provide a storage segment.
c_bytesโ counter / info โ Bytes allocated
Number of total bytes allocated by this storage.
c_freedโ counter / info โ Bytes freed
Number of total bytes returned to this storage.
g_allocโ gauge / info โ Allocations outstanding
Number of storage allocations outstanding.
g_bytesโ gauge / info โ Bytes outstanding
Number of bytes allocated from the storage.
g_spaceโ gauge / info โ Bytes available
Number of bytes left in the storage.
๐๏ธ SMF โ FILE STEVEDORE COUNTERS
c_reqโ counter / info โ Allocator requests
Number of times the storage has been asked to provide a storage segment.
c_failโ counter / info โ Allocator failures
Number of times the storage has failed to provide a storage segment.
c_bytesโ counter / info โ Bytes allocated
Number of total bytes allocated by this storage.
c_freedโ counter / info โ Bytes freed
Number of total bytes returned to this storage.
g_allocโ gauge / info โ Allocations outstanding
Number of storage allocations outstanding.
g_bytesโ gauge / info โ Bytes outstanding
Number of bytes allocated from the storage.
g_spaceโ gauge / info โ Bytes available
Number of bytes left in the storage.
g_smfโ gauge / info โ N struct smfg_smf_fragโ gauge / info โ N small free smfg_smf_largeโ gauge / info โ N large free smf
๐ง SMU โ UMEM STEVEDORE COUNTERS
c_reqโ counter / info โ Allocator requests
Number of times the storage has been asked to provide a storage segment.
c_failโ counter / info โ Allocator failures
Number of times the storage has failed to provide a storage segment.
c_bytesโ counter / info โ Bytes allocated
Number of total bytes allocated by this storage.
c_freedโ counter / info โ Bytes freed
Number of total bytes returned to this storage.
g_allocโ gauge / info โ Allocations outstanding
Number of storage allocations outstanding.
g_bytesโ gauge / info โ Bytes outstanding
Number of bytes allocated from the storage.
g_spaceโ gauge / info โ Bytes available
Number of bytes left in the storage.
๐ VBE โ BACKEND COUNTERS
happyโ bitmap / info โ Happy health probes
Represents the last probe results as a bitmap. Happy probes are bits set to 1, and the unhappy ones are set to 0. The highest bits represent the oldest probes. ๐ธ
bereq_hdrbytesโ counter / info โ Request header bytes
Total backend request header bytes sent
bereq_bodybytesโ counter / info โ Request body bytes
Total backend request body bytes sent
beresp_hdrbytesโ counter / info โ Response header bytes
Total backend response header bytes received
beresp_bodybytesโ counter / info โ Response body bytes
Total backend response body bytes received
pipe_hdrbytesโ counter / info โ Pipe request header bytes
Total request bytes sent for piped sessions
pipe_outโ counter / info โ Piped bytes to backend
Total number of bytes forwarded to backend in pipe sessions
pipe_inโ counter / info โ Piped bytes from backend
Total number of bytes forwarded from backend in pipe sessions
connโ gauge / info โ Concurrent connections used
The number of currently used connections to the backend. This number is always less or equal to the number of connections to the backend (as, for example shown as ESTABLISHED for TCP connections in netstat) due to connection pooling.
reqโ counter / info โ Backend requests sentunhealthyโ counter / info โ Fetches not attempted due to backend being unhealthybusyโ counter / info โ Fetches not attempted due to backend being busy
Number of times the max_connections limit was reached
failโ counter / info โ Connections failed
Counter of failed opens. Detailed reasons are given in the fail_* counters (DIAG level) and in the log under the FetchError tag.
This counter is the sum of all detailed fail_* counters.
All fail_* counters may be slightly inaccurate for efficiency.
fail_eaccesโ counter / diag โ Connections failed with EACCES or EPERMfail_eaddrnotavailโ counter / diag โ Connections failed with EADDRNOTAVAILfail_econnrefusedโ counter / diag โ Connections failed with ECONNREFUSEDfail_enetunreachโ counter / diag โ Connections failed with ENETUNREACHfail_etimedoutโ counter / diag โ Connections failed ETIMEDOUTfail_otherโ counter / diag โ Connections failed for other reasonhelddownโ counter / diag โ Connection opens not attempted
Connections not attempted during the backend_local_error_holddown or backend_remote_error_holddown interval after a fundamental connection issue. ๐ญ
๐ VCP โ CONNECTION POOL COUNTERS
ref_hitโ counter / debug โ Number of times we have found an existing conn. pool
Number of times we have found an existing connection pool while creating a backend. ๐ฏ
ref_missโ counter / debug โ Number of times we have not found an existing conn. pool
Number of times we have not found an existing connection pool while creating a backend. ๐
๐ช WAITER โ WAITER COUNTERS
connsโ gauge / debug โ Number of idle connections
Number of idle connections being waited over.
remcloseโ counter / debug โ Number of idle connections closed by peer
Number of idle connections that experienced closure by peer while being waited for.
timeoutโ counter / debug โ Number of idle connections timeout
Number of idle connections that experienced a timeout event while being waited for.
actionโ counter / debug โ Number of idle connections read events
Number of idle connections that experienced a read event while being waited for. ๐
๐ AUTHORS
This man page was written by Lasse Karstensen, using content from vsc2rst written by Tollef Fog Heen.
and that's a WRAP bestie ๐ you just read the whole of VARNISH-COUNTERS(7), source and version and date footer included โ go forth and read your counters like the main character you are ๐
โจ
๐ฆ where this page comes from
- fedora 44: varnish 8.0.2-1.fc44 ยท BSD-2-Clause AND (BSD-2-Clause-FreeBSD AND BSD-3-Clause AND LicenseRef-Fedora-Public-Domain AND Zlib)
- fedora 44: varnish 8.0.2-1.fc44 ยท BSD-2-Clause AND (BSD-2-Clause-FreeBSD AND BSD-3-Clause AND LicenseRef-Fedora-Public-Domain AND Zlib)
- ๐ the page's license: BSD-2-Clause
- Copyright (c) 2015 Varnish Software AS
- Copyright (c) 2017-2019 Varnish Software AS
- Copyright (c) 2017-2020 Varnish Software AS
- Copyright (c) 2017 Varnish Software AS
- Copyright (c) 2017-2021 Varnish Software AS
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms