之前有一个asp.net core项目采用的是Elasticsearch记录日志,使用的是NLog框架的ES target。
Nlog.Config.xml:
index="lanhu-req-${date:format=yyyy.MM.dd}" documentType="doc" includeAllProperties="true"
layout="[${date:format=yyyy-MM-dd HH\:mm\:ss}][${level}] ${logger} ${message}" requireAuth="true" username="admin" password="admin">
我主要是从以下几方面来优化的。
一、es进程崩溃,服务自动关闭
1、服务自动关闭
经过排查发现有一个奇怪的现象,服务总是在每天的固定时间关闭。
经验告诉我们es自动关闭,一般都是内存不够了,OMM异常。后来查了一下服务器有定时任务,这个定时任务比较耗资源。
查看了一下es有日志,果然有报内存异常。查看es的jvm参数设置(jvm.options),是官方默认值(1g):
我把内存加到2G,加了内存后,这个问题暂时消失一段时间。
2、使用Kibana查询时间段长的索引,超时,然后进程崩溃。
查日志,又是OOM异常。为了这次把内存改为4G,这时服务器总内存为15G。