标签:one 重要 html bash reference 最大 提高 操作 bsp
如果你使用elasticsearch来存储你的日志,本文给你提供一些做法和建议。
如果你想从多台主机向elasticsearch汇集日志,你有以下多种选择:
根据你设定的不同,最佳配置也变化不定。不过总有那么几个有用的指南可以推荐一下:
如果你的elasticsearch运行在专用服务器上,经验值是分配一半内存给elasticsearch。另一半用于系统缓存,这东西也很重要的。
你可以通过修改ES_HEAP_SIZE环境变量来改变这个设定。在启动elasticsearch之前把这个变量改到你的预期值。另一个选择上球该elasticsearch的ES_JAVA_OPTS变量,这个变量时在启动脚本(elasticsearch.in.sh或elasticsearch.bat)里传递的。你必须找到-Xms和-Xmx参数,他们是分配给进程的最小和最大内存。建议设置成相同大小。嗯,ES_HEAP_SIZE其实就是干的这个作用。
你必须确认文件描述符限制对你的elasticsearch足够大,建议值是32000到64000之间。关于这个限制的设置,另有教程可以参见。
一个可选的做法是把所有日志存在一个索引里,然后用ttl field来确保就日志被删除掉了。不过当你日志量够大的时候,这可能就是一个问题了,因为用TTL会增加开销,优化这个巨大且唯一的索引需要太长的时间,而且这些操作都是资源密集型的。
建议的办法是基于时间做目录。比如,目录名可以是YYYY-MM-DD的时间格式。时间间隔完全取决于你打算保留多久日志。如果你要保留一周,那一天一个目录就很不错。如果你要保留一年,那一个月一个目录可能更好点。目录不要太多,因为全文搜索的时候开销相应的也会变大。
如果你选择了根据时间存储你的目录,你也可以缩小你的搜索范围到相关的目录上。比如,如果你的大多数搜索都是关于最近的日志的,那么你可以在自己的界面上提供一个”快速搜索”的选项只检索最近的目录。
移除旧日志在有基于时间的目录后变得异常简单:
$ curl -XDELETE ‘http://localhost:9200/old-index-name/‘
这个操作的速度非常快,和删除大小差不多的少量文件速度接近。你可以放进crontab里半夜来做。
Optimizing indices是在非高峰时间可以做的一件很不错的事情。因为它可以提高你的搜索速度。尤其是在你是基于时间做目录的情况下,更建议去做了。因为除了当前的目录外,其他都不会再改,你只需要对这些旧目录优化一次就一劳永逸了。
$ curl -XPOST ‘http://localhost:9200/old-index-name/_optimize‘
标签:one 重要 html bash reference 最大 提高 操作 bsp
原文地址:http://www.cnblogs.com/floodwater/p/7381017.html