高效统计服务器日志数据的几种方法与思路,提升日志分析效率
1。开发服务器时,您经常遇到大量日志并计算大量数据。以下是几种说明日志数据的方法和想法。

在此之前,我遇到了几天之内我必须计算URL的数量。每天有24 Gz压缩文件,每个文件约为6G,URL的非重复率也很高。
如何使用:
1。使用壳进行解压缩然后计数。编写shell脚本很麻烦。许多人对统计部分并不熟悉(对此并不熟悉)。这种类型非常慢,因此使用以下方法转换MD5甚至更慢。
读行时
做
#使用MD5SUM转换字符串,然后拦截有用的部分
m5 = $(echo $ line | md5sum | awk'{print $ 1}')
echo $ m5 >> ./1/qulename"_txt”
完成<./$ filename"_txt”
2。使用lua(这是我最熟悉的脚本,所以我首先考虑这一点)。分析小数据时,它非常快。数据量较大后,可能会发生内存分配故障。最大值为32位,为2G,在64位,理论上可以达到64位的功率,但只要有额外的内存分配,就会抛出内存异常。 Windows和Linux都需要独立安装,并且某些公司的服务器不提供安装。允许,所以不能使用
3。第三种是使用Python处理碎片。 Python的问题与上面的LUA相同。它允许32位的2G和2次的功率为64位的功率; Linux系统基本上随附了。但是,即使是64,当钻头下的数据加载很大时,也会存在各种问题。
问题:1。用完免费和可用的内存后,将卡住python,否则将抛弃内存。这可以通过try -catch或分段来处理
2。当Python读取文件时,如果遇到未识别的结尾字符eof(它将出现在GZIP的某些版本中),它将报告错误。您可以使用Try-Catch处理或更新GZIP的库。
4。第四个想法是使用Python,即将数据存储到数据库中进行处理。它可以存储在Python随附的SQLite数据库中(尝试解析和插入它后将较慢);它也可以存储在REDIS等存储数据库中,该数据库将更快。
下面提供了第三个切片代码:
有两种切片的方法:
第一个是水平切片:根据常规逻辑,可以合并和计数每个文件的URL,然后按图层合并文件合并;问题是,如果URL的重复率非常低,则将合并随后的合并文件。它将变得越来越大,最终将发生内存,优势是它是一个URL