簡體   English   中英

在大文本日志文件中搜索

[英]Search in big text log files

假設您有一個游戲服務器,它可以創建游戲玩家動作的文本日志文件,並且有時您需要在這些日志文件中查找某些內容(例如調查詐騙或丟失項目)。 例如,您有100個文件,每個文件的大小在20MB到50MB之間 - 您如何快速搜索它們?

我已經嘗試做的是創建幾個線程,每個invidual線程將他自己的文件映射到內存(假設內存不應該是問題,如果它不超過500MB的ram)在這里執行搜索,結果是每個文件大約1秒:

文件:a26.log - 讀入:0.891,行:625282,匹配:78848

有更好的方法如何做到這一點? - 因為在我看來有點慢。 謝謝。

(java用於這種情況)

Tim Bray正在調查處理Apache日志文件的方法: http//www.tbray.org/ongoing/When/200x/2007/09/20/Wide-Finder

似乎你的情況可能有很多共同之處。

您可以使用與findgrep的 Unix命令組合。

當然有更好的方法:在搜索之前索引內容。 您的索引方式取決於您希望如何搜索日志,但一般情況下,您可以使用Lucene (或Solr ,如果日志條目可以輕松地重新構建到xml文檔中)。

如上所述的工具中的性能和資源使用優化量應該比特定解決方案提供更好的性能。

這是假設您多次搜索每個文件。 如果不是這種情況,您也可以使用grep文件並完成它。

對於大文本文件的臨時搜索,我會使用UNIX grepfgrepegrep實用程序。 它們已經存在了很長時間,並且已經受益於許多人的工作,使它們變得快速。

另一方面,搜索文本文件(之前沒有編入索引)的最終瓶頸將是應用程序+操作系統將數據從光盤文件移動到內存中的速度。 你似乎每秒管理20M字節或更多,這似乎相當快......我也是。

我應該提一下,在第一篇文章中,游戲服務器是為Win64x編寫的 - 我想知道它是否在像grep for Windows和unix一樣的性能級別上?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM