八、Varnish是如何记录数据的?
Varnish一个比较显著的特点就是它如何记录数据的,varnish将所有的数据全部记录到内存当中,当内存全部使用以后,又从头开始记录,覆盖最旧的记录。因此,这样就可以很快的记录数据,而且也不占用磁盘空间。不过,一旦服务器宕机的话,则内存中所有的数据都会被释放。
九、varnishlog指令
Varnish提供了众多的工具来查看内存中的数据,在这里我只说varnishlog的应用
在命令行上执行varnishlog命令,显示结果如下:
17 RxHeader c Accept-Encoding: gzip, deflate
17 RxHeader c Host: 192.168.108.202:8080
17 RxHeader c Connection: Keep-Alive
17 VCL_call c recv
17 VCL_return c lookup
17 VCL_call c hash
17 VCL_return c hash
其中第一列是任意的数,它用来定义请求,相同的号码代表相同的HTTP传输。
第二列是信息标记,所有的日志都带有一个标记(tag),标记对应相对的操作。Rx表示varnish收到数据,Tx表示varnish发送数据。
第三列代表数据是从哪里传出或者传入的,是从c(client)还是b(backend)。
第四列是被记录的数据。
Varnishlog还有许多子选项:
-b:只显示varnish和backend server之间的日志,当您想要优化命中率的时候可以使用这个参数。
-c:和-b差不多,不过它代表的是varnish和client端的通信。
-i tag:只显示某个tag相关的信息,比如“varnishlog –iSessionOpen”将只显示新会话,注意,这个地方的tag名字是不区分大小写的。
-I:通过正则表达式过滤数据,比如“varnishlog -c -i RxHeader -I Cookie”将显示所有接到来自客户端的包含Cookie单词的头信息。
十、varnishstat指令
varnishstat的二进制程序是/usr/local/varnish/bin/varnishstat。缓存命中率的高低直接说明了varnish的运行状态和效果,较高的缓存命中率说明了varnish运行状态良好,web服务器的性能也会提高很多,反之,过低的缓存命中率说明varnish的配置可能存在问题,那么就需要进行调整,因此,从整体上了解varnish的命中率和缓存状态,对于优化和调整varnish至关重要。
使用/usr/local/varnish/bin/varnishstat命令可以查看Varnish的缓存状态信息。如:
# /usr/local/varnish/bin/varnishstat
Hitrate ratio: 1 1 1
Hitrate avg: 0.5294 0.5294 0.5294
18 0.00 0.01 Client connections accepted
17 0.00 0.01 Client requests received
9 0.00 0.00 Cache hits
8 0.00 0.00 Cache misses
8 0.00 0.00 Backend conn. success
8 0.00 0.00 Fetch with Length
11 . . N struct sess_mem
1 . . N struct objectcore
1 . . N struct objecthead
1 . . N struct smf
1 . . N large free smf
10 . . N worker threads
10 0.00 0.00 N worker threads created
1 . . N backends
8 . . N expired objects
8 . . N LRU moved objects
10 0.00 0.00 Objects sent with write
18 0.00 0.01 Total Sessions
17 0.00 0.01 Total Requests
其中比较重要的参数有:
Client connections accepted:表示接受的连接数
Client requests received:表示接受的请求总数,如果使用了长连接,那么该值一般大于Client connections accepted值
Cache hits:表示命中的次数
Cache misses:表示非命中的次数
N struct objectcore:表示被缓存对象的数量
N expired objects:表示过期的缓存对象数量
N LRU moved objects:表示被淘汰的缓存对象数量