使用 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
通常用于此类查询。