最近项目中遇到一个令人头疼的问题,毕竟因为工作需要刚学elasticsearch,也没有去关注elasticsearch的配置问题,安装好默认把它当做数据库一样去使用,这导致接下来的项目直接挂掉......
当做压力测试的时候,也就五十个请求url,项目突然莫名其妙挂掉...这个不知道什么原因。去服务器查看进程,发现elasticsearch的CPU占有率达到接近50%(这里指哪怕我停掉了相关的服务),甚至偶尔飙升更高,对于部署不少项目的服务器。。。这就是灾难级别的
后来查看elasticsearch的日志,发现gc.log中几乎每秒都要触发一次GC full GC。内存不够用,又没有内存可以回收,所以GC也不断,导致CPU这么高,大部分都用在gc上面了。
处理:调整elasticsearch可使用的内存大小。编辑config/jvm.options,调整Xms和Xmx的大小,由原来的默认的256m调整为4g。(官方建议这个值不要超过物理内存的50%,也不要超过32G。详见官网说明)接着重启elasticsearch。然后观察cpu,虽然偶尔飙升,但总体上是正常的,查询也快了。