我最近在运行单个网站的专用服务器上安装了 Varnish,将其置于 Apache 之前。它似乎运行良好,但 Apache 上的负载仍然很高。不合理的是,Apache 访问日志显示几乎没有流量经过 Varnish。当我跟踪 Apache 日志时,我看到每秒大约有 1-3 次点击通过。
Apache 上的负载情况如下:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
apache 13834 8.1 1.0 107716 34164 ? S 08:24 0:02 /usr/sbin/httpd
apache 13835 8.1 1.0 107716 33856 ? S 08:24 0:02 /usr/sbin/httpd
apache 11483 7.9 0.9 105916 30788 ? S 08:23 0:06 /usr/sbin/httpd
apache 12255 7.5 1.0 107476 33312 ? S 08:24 0:04 /usr/sbin/httpd
apache 9340 7.2 1.1 107732 34916 ? R 08:23 0:09 /usr/sbin/httpd
apache 12029 6.8 0.9 106908 30416 ? S 08:24 0:04 /usr/sbin/httpd
apache 11577 6.7 1.0 107192 34180 ? S 08:24 0:05 /usr/sbin/httpd
apache 11486 6.6 1.0 106176 33112 ? S 08:23 0:05 /usr/sbin/httpd
apache 11796 6.4 1.0 106936 31916 ? S 08:24 0:04 /usr/sbin/httpd
apache 13815 6.3 1.0 107988 34464 ? S 08:24 0:02 /usr/sbin/httpd
apache 18089 6.3 1.3 107444 43212 ? S 08:11 0:52 /usr/sbin/httpd
apache 11797 5.9 1.0 107716 34580 ? S 08:24 0:04 /usr/sbin/httpd
apache 7655 5.9 0.0 0 0 ? Z 08:22 0:09 [httpd] <defunct>
mysql 8033 5.9 6.2 318240 199512 ? Sl May14 352:34 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/va
apache 11488 5.8 0.9 106924 31632 ? S 08:23 0:04 /usr/sbin/httpd
apache 9375 5.7 1.1 106956 35552 ? S 08:23 0:07 /usr/sbin/httpd
apache 3551 5.6 1.1 106956 36140 ? S 08:20 0:14 /usr/sbin/httpd
apache 7657 5.6 1.0 106968 32472 ? S 08:22 0:09 /usr/sbin/httpd
apache 11433 5.6 1.0 107716 34396 ? S 08:23 0:04 /usr/sbin/httpd
apache 5505 5.5 1.1 106944 34924 ? S 08:21 0:12 /usr/sbin/httpd
apache 7172 5.3 1.1 106972 35368 ? S 08:22 0:09 /usr/sbin/httpd
apache 10088 5.2 0.9 106160 31240 ? S 08:23 0:04 /usr/sbin/httpd
apache 7656 5.1 1.0 106436 34388 ? S 08:22 0:08 /usr/sbin/httpd
apache 3468 5.0 1.1 107716 35968 ? S 08:20 0:13 /usr/sbin/httpd
apache 14242 4.8 1.0 107728 33032 ? S 08:25 0:00 /usr/sbin/httpd
apache 3578 4.8 1.1 107988 35964 ? S 08:20 0:12 /usr/sbin/httpd
apache 28192 4.8 1.2 106944 38060 ? S 08:17 0:23 /usr/sbin/httpd
apache 3277 4.6 1.1 106956 35688 ? S 08:20 0:13 /usr/sbin/httpd
apache 15434 3.7 0.7 106908 24684 ? S 08:25 0:00 /usr/sbin/httpd
有一个默认的 apache 日志,然后还有另一个 VirtualHost 日志设置。
我担心 Apache 正在处理一些未被记录的流量。这可能吗?我能做些什么来捕获这些流量吗?
答案1
我建议mod_status来调试该问题。mod_status 非常适合提供有关服务器活动和性能的信息。
答案2
您可以使用 捕获流量tcpdump
。例如:
tcpdump port 80 or port 443
您可以使用tcpdump
它将流量捕获到文件中,然后使用 Wireshark 打开它:
tcpdump -s 65535 -w <some-file> port 80 or port 443