[英]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
似乎你的情況可能有很多共同之處。
您可以使用與find和grep的 Unix命令組合。
對於大文本文件的臨時搜索,我會使用UNIX grep
, fgrep
或egrep
實用程序。 它們已經存在了很長時間,並且已經受益於許多人的工作,使它們變得快速。
另一方面,搜索文本文件(之前沒有編入索引)的最終瓶頸將是應用程序+操作系統將數據從光盤文件移動到內存中的速度。 你似乎每秒管理20M字節或更多,這似乎相當快......我也是。
我應該提一下,在第一篇文章中,游戲服務器是為Win64x編寫的 - 我想知道它是否在像grep for Windows和unix一樣的性能級別上?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.