繁忙的网络服务器上的 Apache 日志记录策略:写入争用?

繁忙的网络服务器上的 Apache 日志记录策略:写入争用?

我们有一个繁忙的网络服务器(每天点击量超过 500 万次),它为大约 50 万个唯一文件提供服务。我们在 FreeBSD 7.2 上运行 Apache。根据 iostat -x,瓶颈似乎是驱动器的寻道速度(我们正在运行带有两个旋转磁盘的 RAID 1)。

Apache 将其访问日志写入这些相同的磁盘是否会影响读取速度?您通常会为日志添加单独的主轴吗?如果是这样,您是否添加单个主轴或对其进行 RAID(否则,如果磁盘发生故障,您显然会丢失日志数据)?

或者我们应该通过网络接口将 Apache 日志推送到中央日志服务器?我猜想可能有一个与为所有这些 HTTP 请求提供服务的网络接口不同的网络接口?

答案1

让繁忙的网络服务器记录到 RAID 1 是有问题的。我不记得我们什么时候必须彻底改变我们的日志/存档策略,但当时每天大约有几百万次点击。

我必须将日志迁移到 RAID 0 磁盘,并为了克服可能的数据丢失,实施了 Facebook 新开源的 Scribe 技术,将日志移动到中央日志服务器。现在我们每天的点击量达到几亿次,我们正在通过 Scribe 将数 TB 的日志从前端移动到中央日志服务器,这使得分析这些日志、绘制数据趋势图和监控变得更加容易。对于您的目的,单个 Scribe 服务器可以轻松处理该流量并移动该数据。

答案2

查看:mod_log_spread2港口mod_log_spread

mod_log_spread 是 Apache mod_log_config 的一个补丁,它提供了一个用于传播到多播访问日志的接口。它利用了组通信工具包 Spread,

并将日志发送到日志收集器。

答案3

我想说你已经回答了自己的问题。你的两个想法都应该能提高网络服务器的性能。如果你为日志添加额外的驱动器,它们应该是 RAID 1。

答案4

添加单独的磁盘来执行日志记录是一个相当合乎逻辑的步骤,并且至少在一定程度上有助于您的系统,但是我认为现在是开始考虑未来的时候了。

查看您网站的流量增长情况,您保持了什么样的增长速度,并考虑您 1 年甚至 2 年后的发展情况。如果您的网站继续受到欢迎,那么您将需要开始考虑多个 Web 服务器、冗余、高可用性等。因此,我建议您考虑使用 rsyslog(在端口中为 rsyslog3)或类似程序来处理后端服务器上文件的远程日志记录。然后,每当您需要添加其他 Web 服务器时,只需从主 Web 服务器复制 rsyslog 设置即可。它还会为您提供日志,希望不会太过拥挤,这样您就可以进行更详细的分析。

相关内容