我已经在 ubuntu 系统上安装了 apachelog 程序。我有几个指向同一个日志文件的虚拟主机,因此当我运行以下命令时,我应该会看到来自多个站点的所有请求:
$ apachetop -T 300 -f /var/log/apache2/other_vhosts_access.log
这应该会显示从现在开始接下来 5 分钟内收到的所有请求。因此,我用多个网站进行了测试,它确实报告了这些请求:
last hit: 20:56:14 atop runtime: 0 days, 00:02:50 20:56:24
All: 10 reqs ( 0.1/sec) 7443.0B ( 103.4B/sec) 744.3B/req
2xx: 3 (30.0%) 3xx: 7 (70.0%) 4xx: 0 ( 0.0%) 5xx: 0 ( 0.0%)
R (170s): 10 reqs ( 0.1/sec) 7443.0B ( 43.8B/sec) 744.3B/req
2xx: 3 (30.0%) 3xx: 7 (70.0%) 4xx: 0 ( 0.0%) 5xx: 0 ( 0.0%)
REQS REQ/S KB KB/S URL
3 0.04 6.0 0.1*/
2 0.03 0.2 0.0 *
1 0.01 0.2 0.0 /wp-includes/js/comment-reply.js
1 0.01 0.2 0.0 /wp-content/themes/gd-theme/scripts/cycle.js
1 0.01 0.2 0.0 /wp-content/themes/gd-theme/scripts/api.js
1 0.01 0.2 0.0 /wp-includes/js/jquery/jquery.js
1 0.06 0.2 0.0 /users/sign_in
一个来自 wordpress 网站,另一个来自 ruby on rails 网站。Apache 说有 7 个请求进来。也许有 7 个 http 请求进来(我非常怀疑,因为 ruby on rails 网站有几个 js 和图像要加载),但实际上只建立了 2 个 tcp 连接,而且应该只生成两个 apache 子进程,因为我正在使用 KeepAlive。它显示的输出肯定有问题。
我在这里可能遗漏了什么?
答案1
apachetop
解析 Apache 的访问日志。
每个请求都会单独写入此日志,无论是在单个 KeepAlive 会话中还是在多个 TCP 会话中请求。
apachetop
无法知道已建立的 TCP 连接数。
该访问日志也不包含有关 Apache 子进程/线程的任何信息,因此也无法报告这些信息。
它只向您显示已请求的资源数量。
答案2
许多浏览器会打开多个连接来加载 JavaScript 等资源。我看到其中四个请求是针对 JavaScript 的。这些连接可能很快就会关闭。