关于apache日志中的sc-bytes
关于apache日志中的sc-bytes apache官方manual中描述的%b字段应该是服务器端发送到客户端的字节数,今天做了一个测试发现写入到日志中的bytes并不是真正的sc-bytes,而是response中的Content-Length。 手册中的描述如下: %b Size of response in bytes, excluding HTTP headers. In CLF format, i.e. a ‘-‘ rather than a 0 when no bytes are sent. 测试方法如下:服务器端生成一个大文件
1 2 3 |
# dd if=/dev/zero of=foo bs=1M count=300300+0 records in 300+0 records out# ll -h foo -rw-r--r-- 1 root root 300M Mar 22 17:36 foo |
客户段使用wget抓取这个文件,使用参数-d来查看详细情况。在wget开始抓取文件后,停止wget运行,查看文件大小是2.5M,而apache的日志中的sc-bytes记录的值确是314572800。 结论:使用apache的日志计算流量,结果将不准确。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
[root@host ~]# wget -d http://*.*.*.*/fooDEBUG output created by Wget 1.10.2 (Red Hat modified) on linux-gnu. --18:01:20-- http://*.*.*.*/foo => 'foo' Connecting to *.*.*.*:80… connected.Created socket 3. Releasing 0x09c85bc8 (new refcount 0).Deleting unused 0x09c85bc8. —request begin—GET /foo HTTP/1.0 User-Agent: Wget/1.10.2 (Red Hat modified)Accept: */* Host: *.*.*.*Connection: Keep-Alive —request end—HTTP request sent, awaiting response… —response begin—HTTP/1.1 200 OK Date: Mon, 22 Mar 2010 09:48:30 GMTServer: Apache/2.2.13 (Unix) mod_ssl/2.2.13 OpenSSL/0.9.7a Last-Modified: Mon, 22 Mar 2010 09:36:47 GMTETag: "3e88e1-12c00000-482606f8fa9c0" Accept-Ranges: bytesContent-Length: 314572800 Keep-Alive: timeout=5, max=100Connection: Keep-Alive Content-Type: text/plain —response end—200 OK Registered socket 3 for persistent reuse.Length: 314,572,800 (300M) [text/plain] 0% [ ] 2,303,436 832.01K/s [root@host ~]# ll -h foo -rw-r--r-- 1 root root 2.5M Mar 22 18:01 foo [root@host ~]# \rm foo # tail -f access_log | grep foo *.*.*.* - - [22/Mar/2010:17:48:30 +0800] "GET /foo HTTP/1.0" 200 314572800 "-" "Wget/1.10.2 (Red Hat modified)" |