![如何从 Apache 日志中确定并发用户数](https://linux22.com/image/531094/%E5%A6%82%E4%BD%95%E4%BB%8E%20Apache%20%E6%97%A5%E5%BF%97%E4%B8%AD%E7%A1%AE%E5%AE%9A%E5%B9%B6%E5%8F%91%E7%94%A8%E6%88%B7%E6%95%B0.png)
我们有 3 个月的 Apache 日志,我们需要确定我们收到的最大并发连接数。
我使用过 AWStats,但我认为它不会生成这些信息。还有其他工具可以从日志中提供此类信息吗?
答案1
如果不考虑某些假设,您无法使用默认的通用或组合日志格式来实现这一点。例如,如果您假设所有响应都需要 500 毫秒,那么您可以取每秒的日志行数并将其除以二。
最简单的方法可能是使用 munin 或 cacti 之类的工具来轮询 mod_status 的值。或者,您可以在接下来的几天内观察 netstat 输出中的几十个样本,然后使用它来估计您网站的并发连接与流量的大致比率。
答案2
您可以查看一段时间内的输出netstat -n -t
。端口 80 上的连接数ESTABLISHED
是当前并发连接数(大致如此)。有许多工具可以为您收集此类数据;我们使用 Ganglia,如果您使用“tcpconn”模块,它将为您提供各种网络统计信息。
答案3
据我所知,最好的解决方案是轮询 netstat 或查看服务器状态,但这对于历史数据来说不是很方便。
如果您只有标准日志文件,那么那里也没有太多信息(除非您的网站总是非常非常慢),但您至少可以尝试计算并发连接的估计值。您需要按 %t 对文件进行排序,然后遍历每条记录计算重叠部分。这不是一段简单的代码。
更简单的方法是,您可以简单地查看每小时的点击次数乘以平均响应时间,然后除以一小时内的秒数。当然,这假设所有请求都是均匀分布的 - 但您可以计算出一个比例因子(通过测量当前连接数,如上所述)。但当然,如果您只记录 %T(而不是 %D),那么四舍五入将破坏您估算中的任何准确性(同样,除非您的网站速度非常慢)。