File 每秒文件写入数

File 每秒文件写入数,file,File,我想记录访问我的网站与高访问率的文件。每秒可以对日志文件执行多少次写入?不要这样做,请改用。您在尝试打开文件、写入文件、关闭文件等操作时会遇到许多问题。覆盖尚未提交的数据时会出现问题,等等 如果您需要自己的本地解决方案(在专用网络中,等等),您可以研究这样的选项,该选项不需要在日志文件中爬行。或者只分析Apache access日志文件。例如。如果您不能使用分析,为什么不使用Web服务器现有的日志系统?如果您使用的是真正的Web服务器,那么几乎可以肯定它是一种日志机制,已经针对最大吞吐量进行了优

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

不要这样做,请改用。您在尝试打开文件、写入文件、关闭文件等操作时会遇到许多问题。覆盖尚未提交的数据时会出现问题,等等


如果您需要自己的本地解决方案(在专用网络中,等等),您可以研究这样的选项,该选项不需要在日志文件中爬行。

或者只分析Apache access日志文件。例如。

如果您不能使用分析,为什么不使用Web服务器现有的日志系统?如果您使用的是真正的Web服务器,那么几乎可以肯定它是一种日志机制,已经针对最大吞吐量进行了优化


你的问题在其他方面都无法回答。可能的写入次数取决于硬件、操作系统和其他运行软件的争用。

如果您的硬盘可以写入40 MB/s的数据,并且日志文件行的长度约为300字节,那么如果您保持日志文件打开,我假设您可以每秒向日志文件写入140000个HTTP请求


无论如何,您不应该自己这样做,因为大多数web服务器已经写入日志文件,并且他们非常了解如何这样做,如果达到最大限制,如何滚动文件,以及如何根据一些众所周知的模式格式化日志行。

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

您也可以为此使用数据库。比如:

UPDATE stats SET hits = hits + 1

尝试两种不同的解决方案,对性能进行基准测试,并以最低的资源使用率实现足够快的解决方案。

如果使用Apache,我建议使用作为标准工具包一部分提供的实用程序

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

我参与的网站是互联网上最大的网站之一,在很长一段时间内,点击率达到每秒数百万的峰值

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


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

在您真正将数据刷新到磁盘之前,文件写入并不昂贵。通常,您的操作系统会主动缓存数据,因此如果您不尝试手动
fsync()
数据,您可以获得非常好的写性能(当然,如果发生崩溃,您可能会丢失最新的日志条目)


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

让Apache来做;在后端进行分析工作。

分析提供的丰富信息非常棒。我知道,但我需要一些其他功能。你只是认为你需要自己的日志系统。如果你真的有一个高容量的站点,你会知道你不想登录到文件系统,你想在另一台机器上登录到syslog,我也推荐google Analytics,这比你自己能做的任何事情都要好,你可能还需要哪些在分析中还没有的功能?你以前使用过分析吗?这是巨大的:)伊利亚,然后查看一个日志解析器,它可以通过cron或其他方式运行,并将数据插入mysql数据库。你能澄清一下你需要哪些Google Analytics没有提供的附加功能吗?@伊利亚,你在用什么服务器?Apache?好的,我会详细解释我需要什么。我有广告网络,我想记录横幅显示文件,然后上传到mysql每5分钟一次。banners shows的速率约为每秒50次是的,apache,8核服务器,4 gb内存。如果每秒有50次,并且每5分钟刷新一次my MySQL,则一次不应超过15000次。为什么不将它们保存在内存中并从那里写入MySQL?您将不会遇到与写入磁盘几乎相同的吞吐量瓶颈。我认为,使用关系数据库来实现这一目的将是过分的,并且可能会导致严重的性能下降。我认为解析既困难又漫长process@Ilya:没有尝试优化文件写入时那么难。Perl的存在主要是为了做一些事情,比如日志解析;还有其他更具针对性的选项,如splunk。不要疯狂地重新发明这个轮子。你可以编写自定义日志(f.i.只针对你感兴趣的URL,或者以不包含你不需要的东西(如用户代理)的特定格式),这可以节省大量解析时间。请参阅Apache docs.ok中的CustomLog和friends,但在某些情况下我需要显示标题,在其他情况下-否,但在日志中所有情况都将显示。日志记录可以是有条件的,因此您应该能够对其进行配置,以便仅在显示标题时写入日志条目(请参阅)。如何做到这一点将取决于显示横幅的条件,但如果您需要帮助,最好创建一个新问题,因为这个问题应该是关于文件写入性能的。@Ilya,请参阅@EarthMind关于awstats的建议作为初始起点。我们每天使用在专用机器套件(如Sun5240)上运行的自定义统计分析仪对日志文件进行各种分析。分析仪在mixtu中实现