Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 通过20-30GB的多个日志文件搜索模式的最快方法是什么_C_Multithreading_In Memory_Text Segmentation_Log Analysis - Fatal编程技术网

C 通过20-30GB的多个日志文件搜索模式的最快方法是什么

C 通过20-30GB的多个日志文件搜索模式的最快方法是什么,c,multithreading,in-memory,text-segmentation,log-analysis,C,Multithreading,In Memory,Text Segmentation,Log Analysis,我正在执行日志分析,我希望将其自动化,以便它每天运行并报告结果。该分析在标准工作站上运行,8核,高达32 GB的可用RAM。原型设计基于GNU Grep(-mmap)、Sqlite(在RAM磁盘上)和Bash(用于参数) 其中一个问题是,我需要多次浏览这些文件。如果我找到一个模式匹配,我会向上搜索相关的东西。这可能是递归的,每次它都会重新读取千兆字节的数据 C中有没有快速的方法/lib来读取/写入内存支持的分段多线程文件 当我查看“内存中”搜索时(在加载的段内上下移动,或在必要时加载更多),我感

我正在执行日志分析,我希望将其自动化,以便它每天运行并报告结果。该分析在标准工作站上运行,8核,高达32 GB的可用RAM。原型设计基于GNU Grep(-mmap)、Sqlite(在RAM磁盘上)和Bash(用于参数)

其中一个问题是,我需要多次浏览这些文件。如果我找到一个模式匹配,我会向上搜索相关的东西。这可能是递归的,每次它都会重新读取千兆字节的数据

C中有没有快速的方法/lib来读取/写入内存支持的分段多线程文件

当我查看“内存中”搜索时(在加载的段内上下移动,或在必要时加载更多),我感觉这是一个非常普遍的要求。

查找。它在Sean O'Rourke的Perl中具有惊人的简单性和多功能性。它会将日志映射到内存中,然后派生子进程进行搜索。事实上,您在每个子进程中都可以访问整个日志文件,因此您可以灵活地在初始分区之间前进和后退,这使得它非常通用。您可以用同样的方式在C中进行测试,但是我建议您首先使用Perl来测试这个概念,如果您不满意的话,可以重写为C。就我个人而言,我会从Perl POC转到Erlang+C NIF,只是因为我的个人喜好。(WF项目中的Erlang解决方案不使用NIFs。)


或者,如果你有很多钱可以负担,那就走吧。

“其中一个问题是我需要多次检查文件”将其输入数据库,并搜索数据库的内容。@alk:现在他有两个问题。对不起,你不知道你在说什么。你对这类任务有实际经验吗?我们(根据上下文)对10++TB文档数据进行了全文搜索,是的。但你是对的,SM访问不起作用@像FastDB这样的Hynek Pichi Vychodila数据库或索引数据库可能会做到这一点。。。是。:)@alk:我打赌Sean O'Rourke的Perl WF解决方案将以巨大的优势击败DB方法。我知道我可以在Splunk/Elasticsearch/Lucene甚至Hadoop中抛出文件。在这种情况下,我觉得这并不是一个足够简单的解决方案。@wishi:所以我提到Wide Finder项目中令人惊讶的简单解决方案。