我想以高访问率记录对我网站的访问。我每秒可以执行多少写入日志文件?
答案 0 :(得分:8)
如果您无法使用Google Analytics,为什么不使用您的网络服务器现有的日志记录系统?如果您使用的是真正的Web服务器,那么它几乎可以肯定是一种已针对最大吞吐量进行了优化的日志记录机制。
您的问题无法在所有其他方面回答。可能的写入次数由硬件,操作系统和其他正在运行的软件的争用决定。
答案 1 :(得分:4)
不要这样做,请改用Google Analytics。你最终会遇到很多问题,试图打开文件,写入文件,关闭文件,依此类推。当您覆盖尚未提交的数据等时会出现问题。
如果您需要自己的本地解决方案(在专用网络中等),您可以查看AWStats之类的选项,该选项可以抓取您的日志文件。
答案 2 :(得分:4)
或者只是分析Apache访问日志文件。例如AWStats。
答案 3 :(得分:2)
在您将数据实际刷新到磁盘之前,文件写入并不昂贵。通常,您的操作系统会积极地缓存内容,因此如果您不尝试手动fsync()
数据,您可以获得非常好的写入性能(但当然如果发生崩溃,您可能会丢失最新的日志条目)。
然而另一个问题是文件I / O不一定是线程安全的,并且从多个线程或进程写入同一文件(如果我们谈论Web应用程序可能会发生这种情况)可能会产生错误的结果:例如,丢失或复制或混合的日志行。
答案 4 :(得分:1)
如果您的硬盘驱动器可以写入40 MB / s,并且您的日志文件行大约是。 300字节的长度,我假设如果你保持打开状态,你可以每秒向你的日志文件写入140000个HTTP请求。
无论如何,你不应该自己做,因为大多数网络服务器已经写入日志文件,他们知道如何做到这一点,如果达到最大限制如何滚动文件以及如何格式化日志行根据一些众所周知的模式。
答案 5 :(得分:1)
文件访问非常昂贵,尤其是在进行写入时。我建议将它们保存到RAM中(使用最适合您的缓存方法)并定期将结果写入磁盘。
您也可以使用数据库。类似的东西:
UPDATE stats SET hits = hits + 1
试用几种不同的解决方案,对性能进行基准测试,并以最少的资源使用速度实现足够快的工作。
答案 6 :(得分:1)
如果使用Apache,我建议使用作为标准套件一部分提供的rotatelogs实用程序。
我们使用它来允许每天轮换服务器日志,而无需停止和启动服务器。注:使用新的“||”声明日志指令时的语法。
我所参与的网站是互联网上最大的网站之一,点击率在很长一段时间内达到每秒数百万的峰值。
编辑:我忘了说该网站使用标准的Apache日志记录指令,我们根本不需要自定义Apache日志记录代码。
编辑:BTW除非你真的需要它,否则不要记录服务的字节,因为这会导致午夜边界周围出现各种各样的问题。
答案 7 :(得分:0)
让Apache做到;在后端进行分析工作。