打开/处理580GB错误日志文件的建议

时间:2011-12-13 00:59:32

标签: php wordpress logging error-handling

一位朋友让我用他放在Wordpress网站上的一个简单的PHP脚本来帮助他。在这样做的过程中,我遇到了一些我认为可以帮助他的明显问题。然后我遇到了野兽。

一个580千兆字节的错误日志文件。

这是一个简单的博客,每月获得数百万次观看和千兆字节的图片,但他不应该对这件事做一些维护吗?我知道在大多数情况下我可以tail -f日志文件,但我认为它可能会让行星碰撞试图打开一个大文本文件。

问题

我应该告诉他只是擦拭它并开始从这里开始监视它或者是否有适当的方法来审查甚至比如最近10天的日志?我没有在他们的服务器上花费足够的时间(只是浏览FTP)来查看他们正在运行的内容。

3 个答案:

答案 0 :(得分:1)

这将为您提供最后100行:

tail -n 100 logfile > last-100-lines.log

就“日期”而言,您还可以:

cat |grep '2012-12' > all-dec.log

不是,grep的确切术语取决于日志文件的外观。这两项操作都需要一段时间才能运行。如果这个应用程序是磁盘密集的,你可能会通过使磁盘饱和来遇到问题,因为这个怪物非常大,而且你不太可能拥有600多GB的RAM并且该日志文件被缓存在内存中。 ; - )

无论如何,对于踢,请尝试bzip2 --best logfile,然后下载它,然后在localhost上进行评估。

使用大型文件并不是很好,但应该可行。

答案 1 :(得分:1)

我怀疑在全球数十亿的应用程序中发生这种情况,正如我们所说的那样。日志文件堆积在硬盘驱动器上的数据,有时多年,有时会被遗忘。

虽然有些applications提供mecanisms来协助数据收集和日志文件的压缩,但您仍然必须“思考”无论您在何处存储数据,它都会在过去几年堆积起来,如果数据分布在多个源上,则经常会忘记位。这是一个在堆栈溢出时发布的奇怪问题,但希望答案有所帮助。

答案 2 :(得分:-1)

您可以编写一个打开文件的程序,寻找比文件大小小1千兆字节的偏移量,并将从该点开始的所有内容复制到另一个文件。这样,您可以提取最新的日志,而不会产生大量的磁盘I / O读取通过所有旧的东西。如果您想根据日期进行过滤,请在较新的较小文件上进行过滤,而不是原始较大的文件。

查看文件的其他部分也是一个好主意,只是为了理解为什么它如此之大。例如,是否有某些消息被重复多次?我会做一些统计抽样:在文件中挑选一堆随机位置,然后从每个位置读取一个千字节左右。再次,直接寻找你要阅读的地方,而不是从头开始阅读所有内容。