0

当运行 Varnish 4.0.3 并查看 varnishstat 时,它报告的缓存命中率约为 0.9 - 0.95,我将其解释为 90-95% 的缓存命中率(不正确?)。我的点击次数非常少,所以我看不到有很多不可缓存的流量。困扰我的部分是,尽管如此,后端服务器仍在工作。当我查看 iftop 时,我看到服务器(它没有运行任何其他应用程序)正在以大约 19Mbit 的速度传输(包括对客户端的响应和到后端服务器的请求标头)并从后端服务器接收大约 14Mbit 的数据。

我可以补充一点,我的缓存中也有一个小的宽限期,我看到每秒大约 1-2 个请求被计为命中,但仍然向后端发出请求,但这是一个微不足道的请求数量。

我一定遗漏了一些应该很明显的东西。但是什么?

编辑:

    MAIN.uptime 70613 1.00 子进程正常运行时间
    MAIN.sess_conn 43313 0.61 已接受会话
    MAIN.sess_drop 0 0.00 会话被丢弃
    MAIN.sess_fail 0 0.00 会话接受失败
    MAIN.sess_pipe_overflow 0 0.00 会话管道溢出
    MAIN.client_req_400 0 0.00 收到客户端请求,出现 400 错误
    MAIN.client_req_411 0 0.00 收到客户端请求,出现 411 错误
    MAIN.client_req_413 0 0.00 收到客户端请求,出现 413 错误
    MAIN.client_req_417 0 0.00 收到客户端请求,出现 417 错误
    MAIN.client_req 6438096 91.17 收到良好的客户端请求
    MAIN.cache_hit 5231719 74.09 缓存命中
    MAIN.cache_hitpass 149819 2.12 缓存命中通过
    MAIN.cache_miss 619678 8.78 缓存未命中
    MAIN.backend_conn 19491 0.28 后端连接。成功
    MAIN.backend_unhealthy 0 0.00 后端连接。没有尝试
    MAIN.backend_busy 0 0.00 后端连接。太多
    MAIN.backend_fail 0 0.00 后端连接。失败
    MAIN.backend_reuse 1279156 18.12 后端连接。重复使用
    MAIN.backend_toolate 5046 0.07 后端连接。关门了
    MAIN.backend_recycle 1284221 18.19 后端连接。回收
    MAIN.backend_retry 5 0.00 后端连接。重试
    MAIN.fetch_head 7 0.00 不获取正文(HEAD)
    MAIN.fetch_length 166348 2.36 获取长度
    MAIN.fetch_chunked 861097 12.19 获取分块
    MAIN.fetch_eof 0 0.00 获取 EOF
    MAIN.fetch_bad 0 0.00 获取坏 TE
    MAIN.fetch_close 862 0.01 Fetch 想要关闭
    MAIN.fetch_oldhttp 0 0.00 Fetch pre HTTP/1.1 关闭
    MAIN.fetch_zero 192834 2.73 获取零镜头体
    MAIN.fetch_1xx 0 0.00 不获取正文 (1xx)
    MAIN.fetch_204 0 0.00 不获取正文 (204)
    MAIN.fetch_304 77295 1.09 不获取正文 (304)
    MAIN.fetch_failed 0 0.00 获取失败(所有原因)
    MAIN.fetch_no_thread 0 0.00 获取失败(无线程)
    主池 2 。线程池数量
    主线程 400 。线程总数
    MAIN.threads_limited 0 0.00 线程达到最大值
    MAIN.threads_created 400 0.01 创建的线程
    MAIN.threads_destroyed 0 0.00 线程被破坏
    MAIN.threads_failed 0 0.00 线程创建失败
    MAIN.thread_queue_len 0 。会话队列的长度
    MAIN.busy_sleep 22 0.00 在繁忙的 objhdr 上发送到睡眠的请求数
    MAIN.busy_wakeup 22 0.00 在忙碌 objhdr 上休眠后唤醒的请求数
    MAIN.sess_queued 0 0.00 会话排队等待线程
    MAIN.sess_dropped 0 0.00 会话被线程丢弃
    MAIN.n_object 61732。制作的对象结构
    MAIN.n_vampireobject 0 。未复活的物体
    MAIN.n_objectcore 61791。制作的 objectcore 结构
    MAIN.n_objecthead 59996。对象头结构
    MAIN.n_waitinglist 100 。候补名单结构
    MAIN.n_backend 8 。后端数量
    MAIN.n_expired 412530 。过期对象数
    MAIN.n_lru_nuked 0 。LRU nuked 对象的数量
    MAIN.n_lru_moved 1938371。LRU 移动对象的数量
    MAIN.losthdr 0 0.00 HTTP 标头溢出
    MAIN.s_sess 43313 0.61 总会话数
    MAIN.s_req 6438096 91.17 看到的请求总数
    MAIN.s_pipe 192 0.00 总管道会话
    MAIN.s_pass 586507 8.31 看到的已通过请求总数
    MAIN.s_fetch 1206185 17.08 发起的总后端获取
    MAIN.s_synth 0 0.00 总合成响应
    MAIN.s_req_hdrbytes 4609529442 65278.77 请求头字节
    MAIN.s_req_bodybytes 615275 8.71 请求正文字节
    MAIN.s_resp_hdrbytes 2888897421 40911.69 响应头字节
    MAIN.s_resp_bodybytes 95537815896 1352977.72 响应体字节
    MAIN.s_pipe_hdrbytes 57835 0.82 管道请求头字节
    MAIN.s_pipe_in 45698 0.65 来自客户端的管道字节
    MAIN.s_pipe_out 1305816 18.49 管道字节到客户端
    MAIN.sess_closed 24747 0.35 会话关闭
    MAIN.sess_pipeline 0 0.00 会话管道
    MAIN.sess_readahead 0 0.00 会话预读
    MAIN.sess_herd 813362 11.52 会话牛群
    MAIN.shm_records 512140676 7252.78 SHM 记录
    MAIN.shm_writes 18119050 256.60 SHM 写入
    MAIN.shm_flushes 788498 11.17 SHM 由于溢出而刷新
    MAIN.shm_cont 89983 1.27 SHM MTX 争用
    MAIN.shm_cycles 277 0.00 SHM 循环通过缓冲区
    MAIN.sms_nreq 0 0.00 SMS 分配器请求
    MAIN.sms_nobj 0 。SMS未结分配
    MAIN.sms_nbytes 0 。SMS 未完成字节数
    MAIN.sms_balloc 0 。分配的 SMS 字节
    MAIN.sms_bfree 0 。SMS 字节释放
    MAIN.backend_req 1298448 18.39 后端请求
    MAIN.n_vcl 1 0.00 加载的 VCL 总数
    MAIN.n_vcl_avail 1 0.00 可用的 VCL 数量
    MAIN.n_vcl_discard 0 0.00 丢弃的 VCL 数量
    主要禁令 1。禁令数量
    MAIN.bans_completed 1。标记为“已完成”的禁令数量
    MAIN.bans_obj 0 。使用 obj.* 的禁令数量
    MAIN.bans_req 0 。使用 req.* 的禁令数量
    MAIN.bans_added 1 0.00 新增禁令
    MAIN.bans_deleted 0 0.00 已删除禁令
    MAIN.bans_tested 0 0.00 针对对象测试的禁令(查找)
    MAIN.bans_obj_killed 0 0.00 被禁令杀死的对象(查找)
    MAIN.bans_lurker_tested 0 0.00 禁止测试对象(潜伏者)
    MAIN.bans_tests_tested 0 0.00 禁止测试对象测试(查找)
    MAIN.bans_lurker_tests_tested 0 0.00 禁止测试对象(潜伏者)
    MAIN.bans_lurker_obj_killed 0 0.00 被禁令杀死的物体(潜伏者)
    MAIN.bans_dups 0 0.00 被其他禁令取代的禁令
    MAIN.bans_lurker_contention 0 0.00 Lurker 让位于查找
    MAIN.bans_persisted_bytes 13 。持久禁止列表使用的字节数
    MAIN.bans_persisted_fragmentation 0 。由于碎片,持久禁止列表中的额外字节
    MAIN.n_purges 0 。执行的清除操作数
    MAIN.n_obj_purged 0 。清除对象的数量
    MAIN.exp_mailed 949607 13.45 邮寄到到期线程的对象数
    MAIN.exp_received 949607 13.45 到期线程接收的对象数
    MAIN.hcb_nolock 6001341 84.99 无锁 HCB 查找
    MAIN.hcb_lock 447556 6.34 带锁的 HCB 查找
    MAIN.hcb_insert 447556 6.34 HCB 插件
    MAIN.esi_errors 0 0.00 ESI 解析错误(解锁)
    MAIN.esi_warnings 0 0.00 ESI 解析警告(解锁)
    主.vmods 2。加载的 VMOD
    MAIN.n_gzip 558747 7.91 Gzip 操作
    MAIN.n_gunzip 22866 0.32 Gunzip 操作
    MAIN.vsm_free 970832 。空闲 VSM 空间
    MAIN.vsm_used 83963776 。已用 VSM 空间
    MAIN.vsm_cooling 0 。冷却 VSM 空间
    MAIN.vsm_overflow 0 。溢出 VSM 空间
    MAIN.vsm_overflowed 0 0.00 VSM 空间溢出
    MGT.uptime 70613 1.00 管理进程正常运行时间
    MGT.child_start 1 0.00 子进程已启动
    MGT.child_exit 0 0.00 子进程正常退出
    MGT.child_stop 0 0.00 子进程意外退出
    MGT.child_died 0 0.00 子进程死亡(信号)
    MGT.child_dump 0 0.00 子进程核心转储
    MGT.child_panic 0 0.00 子进程恐慌
    MEMPOOL.vbc.live 24。正在使用
    MEMPOOL.vbc.pool 10。在池中
    MEMPOOL.vbc.sz_wanted 88。要求的尺寸
    MEMPOOL.vbc.sz_needed 120。分配的大小
    MEMPOOL.vbc.allocs 19491 0.28 分配
    MEMPOOL.vbc.frees 19467 0.28 免费
    MEMPOOL.vbc.recycle 19436 0.28 从池中回收
    MEMPOOL.vbc.timeout 11998 0.17 从池中超时
    MEMPOOL.vbc.toosmall 0 0.00 太小而无法回收
    MEMPOOL.vbc.surplus 0 0.00 池太多
    MEMPOOL.vbc.randry 55 0.00 池干涸
    MEMPOOL.busyobj.live 6 。正在使用
    MEMPOOL.busyobj.pool 9 。在池中
    MEMPOOL.busyobj.sz_wanted 65536。要求的尺寸
    MEMPOOL.busyobj.sz_needed 65568 。分配的大小
    MEMPOOL.busyobj.allocs 1298643 18.39 分配
    MEMPOOL.busyobj.frees 1298637 18.39 免费
    MEMPOOL.busyobj.recycle 1298436 18.39 从池中回收
    MEMPOOL.busyobj.timeout 41750 0.59 从池中超时
    MEMPOOL.busyobj.toosmall 0 0.00 太小无法回收
    MEMPOOL.busyobj.surplus 0 0.00 池太多
    MEMPOOL.busyobj.randry 207 0.00 池干涸
    MEMPOOL.req0.live 4。正在使用
    MEMPOOL.req0.pool 9。在池中
    MEMPOOL.req0.sz_wanted 65536。要求的尺寸
    MEMPOOL.req0.sz_needed 65568 。分配的大小
    MEMPOOL.req0.allocs 423162 5.99 分配
    MEMPOOL.req0.frees 423158 5.99 免费
    MEMPOOL.req0.recycle 423143 5.99 从池中回收
    MEMPOOL.req0.timeout 36313 0.51 从池中超时
    MEMPOOL.req0.toosmall 0 0.00 太小无法回收
    MEMPOOL.req0.surplus 0 0.00 池太多
    MEMPOOL.req0.randry 19 0.00 池干涸
    MEMPOOL.sess0.live 4。正在使用
    MEMPOOL.sess0.pool 9。在池中
    MEMPOOL.sess0.sz_wanted 384。要求的尺寸
    MEMPOOL.sess0.sz_needed 416。分配的大小
    MEMPOOL.sess0.allocs 21655 0.31 分配
    MEMPOOL.sess0.frees 21651 0.31 免费
    MEMPOOL.sess0.recycle 21642 0.31 从池中回收
    MEMPOOL.sess0.timeout 10076 0.14 从池中超时
    MEMPOOL.sess0.toosmall 0 0.00 太小无法回收
    MEMPOOL.sess0.surplus 0 0.00 池太多
    MEMPOOL.sess0.randry 13 0.00 池干涸
    MEMPOOL.req1.live 6。正在使用
    MEMPOOL.req1.pool 9 。在池中
    MEMPOOL.req1.sz_wanted 65536 。要求的尺寸
    MEMPOOL.req1.sz_needed 65568 。分配的大小
    MEMPOOL.req1.allocs 418423 5.93 分配
    MEMPOOL.req1.frees 418417 5.93 免费
    MEMPOOL.req1.recycle 418406 5.93 从池中回收
    MEMPOOL.req1.timeout 35924 0.51 从池中超时
    MEMPOOL.req1.toosmall 0 0.00 太小无法回收
    MEMPOOL.req1.surplus 0 0.00 池太多
    MEMPOOL.req1.randry 17 0.00 池干涸
    MEMPOOL.sess1.live 6。正在使用
    MEMPOOL.sess1.pool 10。在池中
    MEMPOOL.sess1.sz_wanted 384。要求的尺寸
    MEMPOOL.sess1.sz_needed 416。分配的大小
    MEMPOOL.sess1.allocs 21659 0.31 分配
    MEMPOOL.sess1.frees 21653 0.31 免费
    MEMPOOL.sess1.recycle 21645 0.31 从池中回收
    MEMPOOL.sess1.timeout 10040 0.14 从池中超时
    MEMPOOL.sess1.toosmall 0 0.00 太小无法回收
    MEMPOOL.sess1.surplus 0 0.00 池太多
    MEMPOOL.sess1.randry 14 0.00 池干涸
    SMA.s0.c_req 1349644 19.11 分配器请求
    SMA.s0.c_fail 0 0.00 分配器故障
    SMA.s0.c_bytes 22210720975 314541.53 分配的字节
    SMA.s0.c_freed 19148751042 271178.83 字节释放
    SMA.s0.g_alloc 105992。未分配的分配
    SMA.s0.g_bytes 3061969933 。未完成的字节数
    SMA.s0.g_space 2306739187 。可用字节
    SMA.Transient.c_req 1343403 19.02 分配器请求
    SMA.Transient.c_fail 0 0.00 分配器失败
    SMA.Transient.c_bytes 24207322266 342816.79 分配的字节
    SMA.Transient.c_freed 24201619786 342736.04 字节释放
    SMA.Transient.g_alloc 7499。未分配的分配
    SMA.Transient.g_bytes 5702480。未完成的字节数
    SMA.Transient.g_space 0 。可用字节
    VBE.backend1([IP]).vcls 1 。VCL 参考资料
    VBE.backend1([IP]).happy 18446744073709551615 。快乐健康探测
    VBE.backend1([IP]).bereq_hdrbytes 173320400 2454.51 请求头字节
    VBE.backend1([IP]).bereq_bodybytes 238971 3.38 请求体字节
    VBE.backend1([IP]).beresp_hdrbytes 124704577 1766.03 响应头字节
    VBE.backend1([IP]).beresp_bodybytes 19209840560 272043.97 响应体字节
    VBE.backend1([IP]).pipe_hdrbytes 14288 0.20 管道请求头字节
    VBE.backend1([IP]).pipe_out 8069 0.11 管道字节到后端
    VBE.backend1([IP]).pipe_in 335893 4.76 来自后端的管道字节
    VBE.backend2([IP]).vcls 1 。VCL 参考资料
    VBE.backend2([IP]).happy 18446744073709551615 。快乐健康探测
    VBE.backend2([IP]).bereq_hdrbytes 173379423 2455.35 请求头字节
    VBE.backend2([IP]).bereq_bodybytes 76962 1.09 请求体字节
    VBE.backend2([IP]).beresp_hdrbytes 124652416 1765.29 响应头字节
    VBE.backend2([IP]).beresp_bodybytes 18690565655 264690.15 响应体字节
    VBE.backend2([IP]).pipe_hdrbytes 14629 0.21 管道请求头字节
    VBE.backend2([IP]).pipe_out 8558 0.12 管道字节到后端
    VBE.backend2([IP]).pipe_in 284168 4.02 来自后端的管道字节
    VBE.backend3([IP]).vcls 1 。VCL 参考资料
    VBE.backend3([IP]).happy 18446744073709551615 。快乐健康探测
    VBE.backend3([IP]).bereq_hdrbytes 173448768 2456.33 请求头字节
    VBE.backend3([IP]).bereq_bodybytes 75294 1.07 请求体字节
    VBE.backend3([IP]).beresp_hdrbytes 124641060 1765.13 响应头字节
    VBE.backend3([IP]).beresp_bodybytes 18738758550 265372.64 响应体字节
    VBE.backend3([IP]).pipe_hdrbytes 17940 0.25 管道请求头字节
    VBE.backend3([IP]).pipe_out 16704 0.24 管道字节到后端
    VBE.backend3([IP]).pipe_in 301836 4.27 来自后端的管道字节
    VBE.backend4([IP]).vcls 1 。VCL 参考资料
    VBE.backend4([IP]).happy 18446744073709551615 。快乐健康探测
    VBE.backend4([IP]).bereq_hdrbytes 173265357 2453.73 请求头字节
    VBE.backend4([IP]).bereq_bodybytes 227023 3.22 请求体字节
    VBE.backend4([IP]).beresp_hdrbytes 124724341 1766.31 响应头字节
    VBE.backend4([IP]).beresp_bodybytes 18642562615 264010.35 响应体字节
    VBE.backend4([IP]).pipe_hdrbytes 22537 0.32 管道请求头字节
    VBE.backend4([IP]).pipe_out 12367 0.18 管道字节到后端
    VBE.backend4([IP]).pipe_in 383919 5.44 来自后端的管道字节
    LCK.sma.creat 2 0.00 创建锁
    LCK.sma.destroy 0 0.00 被销毁的锁
    LCK.sma.locks 5272603 74.67 锁定操作
LCK.hcb.locks 837080 11.85 锁定操作
    LCK.hcl.creat 0 0.00 创建锁
    LCK.hcl.destroy 0 0.00 已销毁的锁
    LCK.hcl.locks 0 0.00 锁定操作
    LCK.vcl.creat 1 0.00 创建的锁
    LCK.vcl.destroy 0 0.00 被销毁的锁
    LCK.vcl.locks 2604799 36.89 锁操作
    LCK.sess.creat 43306 0.61 创建锁
    LCK.sess.destroy 43304 0.61 被破坏的锁
    LCK.sess.locks 4765 0.07 锁定操作
    LCK.wstat.creat 1 0.00 创建的锁
    LCK.wstat.destroy 0 0.00 已销毁的锁
  LCK.wstat.locks 3421304 48.45 锁定操作
    LCK.wq.locks 6449131 91.33 锁定操作
    LCK.objhdr.creat 447638 6.34 创建锁
    LCK.objhdr.destroy 387644 5.49 被破坏的锁
    LCK.objhdr.locks 42615452 603.51 锁定操作
    LCK.exp.creat 1 0.00 创建锁
    LCK.exp.destroy 0 0.00 被破坏的锁
    LCK.exp.locks 4462106 63.19 锁定操作
    LCK.lru.creat 2 0.00 创建锁
    LCK.lru.destroy 0 0.00 已销毁的锁
    LCK.lru.locks 4259219 60.32 锁定操作
    LCK.cli.creat 1 0.00 创建锁
    LCK.cli.destroy 0 0.00 被销毁的锁
    LCK.cli.locks 23549 0.33 锁定操作
    LCK.ban.creat 1 0.00 创建锁
    LCK.ban.destroy 0 0.00 被销毁的锁
    LCK.ban.locks 1594008 22.57 锁操作
    LCK.vbp.creat 1 0.00 创建的锁
    LCK.vbp.destroy 0 0.00 已销毁的锁
    LCK.vbp.locks 112922 1.60 锁定操作
LCK.backend.locks 2626872 37.20 锁操作
    LCK.vcapace.creat 1 0.00 创建的锁

*由于消息限制,不得不从日志中删除一些(平淡无奇的部分)。

在此,我通过 client_req - (cache_hit + cache_hitpass + cache_miss) = 436880 计算了“其他不可缓存的请求”。这与未缓存的 cache_hitpass 和缓存未命中(或只是 client_req-cache-hit)一起使总数达到 586699,或约 18.7%。如果他们是繁重的请求,我想这可能会导致流量。但我有点不相信。

4

1 回答 1

0

您是否尝试查看其中一台服务器的访问日志?也许你有请求不是通过 Varnish 进来的?

另外,我知道至少在 Varnish 3 中,缓存命中率是根据可能来自缓存的命中来计算的。例如,对于标准配置,POST 请求不计算在内。

访问日志可能会给您一些见解...

于 2016-03-14T09:39:00.413 回答