2010-01-04 50 views
3

我想以高访问率记录访问我的网站的文件。我可以每秒执行多少次写入日志文件?每秒文件写入次数

+0

您能否澄清Google Analytics未提供的其他所需功能? – SqlRyan 2010-01-04 18:37:00

+0

@伊利亚,你在用什么服务器? Apache的? – 2010-01-04 18:40:44

+0

好吧,我会尽力详细解释我需要什么。我有广告网络,我想将横幅节目登录到文件,然后每5分钟将它们上传到MySQL。横幅显示有一个约50每秒 – Ilya 2010-01-04 18:42:24

回答

4

不这样做,请改用Google Analytics。你最终会遇到许多问题,试图打开文件,写信给他们,关闭他们,等等。当您覆盖尚未提交的数据时会出现问题等。

如果您需要自己的本地解决方案(在专用网络内等),您可以查看AWStats这样的选项,你的日志文件。

+0

谢谢,但我需要我自己的日志记录系统 – Ilya 2010-01-04 18:33:20

+2

Analytics提供的丰富信息非常棒。 – 2010-01-04 18:33:41

+0

我知道,但我需要一些其他功能 – Ilya 2010-01-04 18:35:53

8

如果您无法使用Google Analytics,那您为什么不使用您的网络服务器现有的日志记录系统?如果您使用的是真正的网络服务器,则几乎可以肯定它是一种已针对最大吞吐量进行了优化的日志记录机制。

你的问题是不可能在所有其他方面回答。可能的写入次数由硬件,操作系统和来自其他正在运行的软件的争用来控制。

+0

是的,只是解析服务器日志。 – Rob 2010-01-04 18:40:21

+1

我认为解析很难并且很长进程 – Ilya 2010-01-04 18:46:18

+2

@Ilya:几乎没有尝试优化文件写入那么困难。 Perl主要用于执行日志解析等操作;还有其他更有针对性的选项,例如splunk。不要坚持重新发明这个轮子。 – 2010-01-04 18:50:39

1

如果您的硬盘驱动器可以写入40 MB/s,并且您的日志文件行大约为。 300字节的长度,我假设你可以写每秒140000 HTTP请求到你的日志文件,如果你保持打开状态。

无论如何,你不应该自己做,因为大多数web服务器已经写入日志文件,他们知道如何做到这一点,如何在达到最大限制时滚动文件以及如何格式化日志线根据一些着名的模式。

1

文件访问非常昂贵,特别是在写入时。我建议将它们保存到RAM(使用任何缓存方法最适合您)并定期将结果写入磁盘。

您也可以为此使用数据库。喜欢的东西:

UPDATE stats SET hits = hits + 1 

尝试了几个不同的解决方案,基准性能,并实现两者的作品足够快以最少的资源使用情况。

+0

我认为使用关系数据库来达到这个目的将会是过分的,并且可能会导致一些严重的性能下降。 – 2010-01-04 18:41:34

+0

看到我的意见,我不想每次更新数据库 – Ilya 2010-01-04 18:44:32

1

如果使用Apache,我建议使用rotatelogs公用程序作为标准套件的一部分。

我们使用它来允许每天轮换服务器注销,而无需停止和启动服务器。注:使用新的“||”语法时声明日志指令。

我参与的网站是互联网上最大的网站之一,在长时间内以每秒数百万的速度达到峰值。

编辑:我忘了说网站使用标准的Apache日志指令,我们根本不需要定制Apache日志代码。

编辑:顺便说一句,除非你真的需要它,不要记录服务的字节,因为这会导致围绕午夜边界的各种问题。

+0

我怎么能解析它? – Ilya 2010-01-04 18:47:43

+0

@Ilya,参见@ EarthMind关于awstats初始起点的建议。我们使用在专用套件机器上运行的定制统计分析器,每天对日志文件进行各种分析,例如, Sun5240的。分析器以C和Perl脚本编写的可执行文件混合实现。该分析过程每天至少需要十个小时才能运行! – 2010-01-04 18:52:51

2

直到您实际将数据刷新到磁盘时,文件写入并不昂贵。通常你的操作系统会积极地缓存一些东西,所以如果你不想手动尝试数据(当然,如果发生崩溃,你可能会丢失最新的日志条目),你可以获得非常好的写入性能。

但是,另一个问题是文件I/O不一定是线程安全的,并且从多个线程或进程写入同一文件(如果我们正在讨论Web应用程序,可能会发生这种情况)可能会产生错误结果:例如,丢失或重复或混合的日志行。

+0

好的,你能告诉我什么? – Ilya 2010-01-04 19:02:18

+0

线程安全性正是我想知道的类似问题。 – 2014-07-22 11:32:34

0

让Apache做到这一点;做后端的分析工作。

相关问题