我想以高访问率记录访问我的网站的文件。我可以每秒执行多少次写入日志文件?每秒文件写入次数
每秒文件写入次数
回答
不这样做,请改用Google Analytics。你最终会遇到许多问题,试图打开文件,写信给他们,关闭他们,等等。当您覆盖尚未提交的数据时会出现问题等。
如果您需要自己的本地解决方案(在专用网络内等),您可以查看AWStats这样的选项,你的日志文件。
或者只是分析Apache访问日志文件。例如使用AWStats。
如果您无法使用Google Analytics,那您为什么不使用您的网络服务器现有的日志记录系统?如果您使用的是真正的网络服务器,则几乎可以肯定它是一种已针对最大吞吐量进行了优化的日志记录机制。
你的问题是不可能在所有其他方面回答。可能的写入次数由硬件,操作系统和来自其他正在运行的软件的争用来控制。
如果您的硬盘驱动器可以写入40 MB/s,并且您的日志文件行大约为。 300字节的长度,我假设你可以写每秒140000 HTTP请求到你的日志文件,如果你保持打开状态。
无论如何,你不应该自己做,因为大多数web服务器已经写入日志文件,他们知道如何做到这一点,如何在达到最大限制时滚动文件以及如何格式化日志线根据一些着名的模式。
文件访问非常昂贵,特别是在写入时。我建议将它们保存到RAM(使用任何缓存方法最适合您)并定期将结果写入磁盘。
您也可以为此使用数据库。喜欢的东西:
UPDATE stats SET hits = hits + 1
尝试了几个不同的解决方案,基准性能,并实现两者的作品足够快以最少的资源使用情况。
我认为使用关系数据库来达到这个目的将会是过分的,并且可能会导致一些严重的性能下降。 – 2010-01-04 18:41:34
看到我的意见,我不想每次更新数据库 – Ilya 2010-01-04 18:44:32
如果使用Apache,我建议使用rotatelogs公用程序作为标准套件的一部分。
我们使用它来允许每天轮换服务器注销,而无需停止和启动服务器。注:使用新的“||”语法时声明日志指令。
我参与的网站是互联网上最大的网站之一,在长时间内以每秒数百万的速度达到峰值。
编辑:我忘了说网站使用标准的Apache日志指令,我们根本不需要定制Apache日志代码。
编辑:顺便说一句,除非你真的需要它,不要记录服务的字节,因为这会导致围绕午夜边界的各种问题。
我怎么能解析它? – Ilya 2010-01-04 18:47:43
@Ilya,参见@ EarthMind关于awstats初始起点的建议。我们使用在专用套件机器上运行的定制统计分析器,每天对日志文件进行各种分析,例如, Sun5240的。分析器以C和Perl脚本编写的可执行文件混合实现。该分析过程每天至少需要十个小时才能运行! – 2010-01-04 18:52:51
直到您实际将数据刷新到磁盘时,文件写入并不昂贵。通常你的操作系统会积极地缓存一些东西,所以如果你不想手动尝试数据(当然,如果发生崩溃,你可能会丢失最新的日志条目),你可以获得非常好的写入性能。
但是,另一个问题是文件I/O不一定是线程安全的,并且从多个线程或进程写入同一文件(如果我们正在讨论Web应用程序,可能会发生这种情况)可能会产生错误结果:例如,丢失或重复或混合的日志行。
好的,你能告诉我什么? – Ilya 2010-01-04 19:02:18
线程安全性正是我想知道的类似问题。 – 2014-07-22 11:32:34
让Apache做到这一点;做后端的分析工作。
- 1. 连续写入文件的最佳方式(每秒50次)
- 2. 数据库每秒写入
- 3. 每秒运行多个函数,将结果写入文件
- 4. 如何每秒显示数据并每分钟写一次?
- 5. coreservicesd/lssave每30秒写一次
- 6. Python:多次写入文件,无需每次写入都打开/关闭
- 7. 使用std :: chrono :: high_resolution_clock每秒写入一帧30次
- 8. 一次写入文件,一次写入全文
- 9. 写入大文件:打开一次,或重新打开每个写入事件?
- 10. 将发生次数写入文件
- 11. Ada:多次写入文件
- 12. 每2秒启动一次,每5秒启动一次
- 13. 数据库系统用于每秒多次读写
- 14. 写入小文件或一次写入文件会更好吗?
- 15. 如何在每次按“写入”按钮时将字符串行写入文件
- 16. 每隔X行读写一次文件
- 17. SaltStack - 每次运行都会写入受管理的文件,如果只有更新文件才写入文件?
- 18. 每隔10秒重新载入一次文本文件的内容
- 19. ASP.NET C#Webservice检索数据并写入数据库每n秒
- 20. 每5秒响应一次事件
- 21. django 1.3 logging timedrotatingfilehandler在每次写入时截断文件
- 22. 每次将新字符串写入一个文件中
- 23. Python文件 - 每次打开时写入新行
- 24. PHP文件写入 - 错误信息每次
- 25. 在每次“写入”方法使用后清除文件
- 26. 每15秒阅读一次文本文件的内容
- 27. 文件每次
- 28. 每30秒调用一次函数
- 29. 如何打印每秒迭代次数?
- 30. 每20秒执行一次php函数
您能否澄清Google Analytics未提供的其他所需功能? – SqlRyan 2010-01-04 18:37:00
@伊利亚,你在用什么服务器? Apache的? – 2010-01-04 18:40:44
好吧,我会尽力详细解释我需要什么。我有广告网络,我想将横幅节目登录到文件,然后每5分钟将它们上传到MySQL。横幅显示有一个约50每秒 – Ilya 2010-01-04 18:42:24