一、es运行状态的监控
es长时间批量入库时,需要对入库的性能进行监控,否则可能导致es重启,入库任务失败。
可以编写shell脚本,每分钟用cat命令监控pending的数量,数量逐渐增大时就需要注意。
还可以监控translog文件的大小,当translog文件不断增大,而不新建新的translog时,也说明输入的文档速度超过了处理速度。
监控es运行状况的脚本moitorES.sh:
result=""
while [ "$result"!="0000" ]
do
#阻塞任务统计
result=`curl -s -XGET 'http://27.10.3.170:9200/_cluster/pending_tasks'`
date >>./esMonitorlog.txt
echo "pending task: "$result >>./esMonitorlog.txt
#获取索引中的记录数
result=`curl -s -XGET 'http://27.10.3.170:9200/_cat/count/base_person_es`'
echo "index file count: "$result >>./esMonitorlog.txt
#获取bulk操作线程池状态
result=`curl -s -XGET 'http://27.10.3.170:9200/_cat/thread_pool?v&h=id,host,active,bulk.active,bulk.size,bulk.queue,bulk.reject,bulk.completed`'
echo $result >>./esMonitorlog.txt
#ping主节点
ping -w 3 -c 2 27.10.3.170 |sed -n '2,3p' >>./esMonitorlog.txt
echo "----------------------------------" >>./esMonitorlog.txt
sleep 3
done
二、es的配置文件yml中,空格后面一定要有空格,否则启动时报错。
如: master = true
三、监控网络状况,网络不好时客户端5s内收不到相应主动断开连接,可以设置为20s。
四、ES默认的内存为Xms1g,Xmx4g,这些在实际服务器中是需要调整的。
bin目录中的进行设置,Xms和Xmx设置大小相等。机器内存小于64g时,es内存为机器内存一半。es机器内存不要超过32g,这也是jvm设置的建议。
例如机器为128g内存,可以开2个32g的es节点。
五、不要用kill -9来杀死es进程,es属于磁盘读写较多的程序,使用kill而非kill -9。
windows下的es使用ctrl+c来结束进程,而不要直接关闭窗口。都会导致文件,数据的丢失。