如何从 Apache 日志中确定并发用户数

如何从 Apache 日志中确定并发用户数

我们有 3 个月的 Apache 日志,我们需要确定我们收到的最大并发连接数。

我使用过 AWStats,但我认为它不会生成这些信息。还有其他工具可以从日志中提供此类信息吗?

答案1

如果不考虑某些假设,您无法使用默认的通用或组合日志格式来实现这一点。例如,如果您假设所有响应都需要 500 毫秒,那么您可以取每秒的日志行数并将其除以二。

最简单的方法可能是使用 munin 或 cacti 之类的工具来轮询 mod_status 的值。或者,您可以在接下来的几天内观察 netstat 输出中的几十个样本,然后使用它来估计您网站的并发连接与流量的大致比率。

答案2

您可以查看一段时间内的输出netstat -n -t。端口 80 上的连接数ESTABLISHED是当前并发连接数(大致如此)。有许多工具可以为您收集此类数据;我们使用 Ganglia,如果您使用“tcpconn”模块,它将为您提供各种网络统计信息。

答案3

据我所知,最好的解决方案是轮询 netstat 或查看服务器状态,但这对于历史数据来说不是很方便。

如果您只有标准日志文件,那么那里也没有太多信息(除非您的网站总是非常非常慢),但您至少可以尝试计算并发连接的估计值。您需要按 %t 对文件进行排序,然后遍历每条记录计算重叠部分。这不是一段简单的代码。

更简单的方法是,您可以简单地查看每小时的点击次数乘以平均响应时间,然后除以一小时内的秒数。当然,这假设所有请求都是均匀分布的 - 但您可以计算出一个比例因子(通过测量当前连接数,如上所述)。但当然,如果您只记录 %T(而不是 %D),那么四舍五入将破坏您估算中的任何准确性(同样,除非您的网站速度非常慢)。

相关内容