![如何检测每个VHOSTS传入的httpd连接计数?](https://linux22.com/image/53417/%E5%A6%82%E4%BD%95%E6%A3%80%E6%B5%8B%E6%AF%8F%E4%B8%AAVHOSTS%E4%BC%A0%E5%85%A5%E7%9A%84httpd%E8%BF%9E%E6%8E%A5%E8%AE%A1%E6%95%B0%EF%BC%9F.png)
使用 RHEL 和 Apache (httpd),有没有办法:
- 检测哪个 v.host(域)正在获得多少传入连接?
因为在这几天里,我在服务器上收到了很多传入连接,并通过以下方式进行了确认:
ps aux | grep httpd -c
第734章
这意味着我734
当前有 Apache 处理传入连接,但问题是我有(比方说)10 个 Vhost(域)。
- 那么哪个域的负载较高呢?
答案1
我将修改访问日志格式以在日志中包含主机字符串。那么排序和计数就很简单了vhost
。这些是apache
我使用的配置谎言。
# Modified log format with virtual host, execution time, and query params
LogFormat "%v:%p %a %T %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" local
# Define an access log for VirtualHosts that don't define their own logfile
CustomLog /var/log/apache2/access.log local
这可以使用如下命令来计算:
cut -d\t -f1 access.log | sort | uniq -c
或者您可以使用awk
(允许按一天中的时间和/或其他数据进行选择):
awk '{print $1}' access.log | sort | uniq -c
或者为每个虚拟主机使用单独的访问日志。对活动访问日志进行简单的字数统计就可以回答您的问题。
要检查当前活动,请启用 mod-status 插件并使用 URL 获取状态http://127.0.0.1/server-status
。输出将包括每个槽处理的最后一个 URL 及其当前状态。该信息可用于确定当前状态。使用 URL 的输出http://127.0.0.1/server-status?notable
可能更容易解析。
该命令w3m -dump http://127.0.0.1/server-status?notable
提供了一个很好的文本转储。然而,命令wget
或curl
通常用于此类查询。