之前有写一篇elasticsearch7.3版本的安装步骤,但是实际在部署过程中没有那么简单,总会有各种奇奇怪怪的问题。
所以把主要的一些问题总结出来,以便以后升级的时候,不再重复踩坑。
问题:内存不够
我在我工作电脑上安装的时候,没遇到这个问题,因为我工作电脑的内存是24G,比较充足。
但是当我在开发服务器上部署的时候,就因为这个坑,吭哧吭哧的琢磨了一天。
elasticsearch的默认配置内存需要1g,但是往往我们的一些开发服务器因为有很多应用同时在跑,往往只有不到1个g的可用内存。而加内存短时间又不现实。我们也只是想验证下elasticsearch的功能,所以测试时内存可以调小。
网上搜了一番,好多答案是修改安装目录下bin目录下elasticsearch中的xms
然而我修改了,降到了我可用内存的数值。然后启动,依然报内存不够。
我接着找答案,后来发现是要改config目录下的jvm.options文件,将这里面的-Xms180m -Xmx180m这两个改到你服务器可用的内存的数值。我测试了在linux上,最低要180m才能跑起来,因为之前我设置了120m的内存可以启动elasticsearch,但是后面我要用logstash同步数据到elasticsearch中,会因为分配的堆栈内存不够,导致同步不进去。所以我调高了,然后几次测算和实验后,180m的内存可以实现启动和同步数据。当然这个我我们开发测试时候用小内存实验的。线上生产环境部署的时候,还是应该分配多点内存,毕竟elasticsearch是内存大户。elasticsearch在搜索的时候,会将一些索引缓存到内存中,所以如果服务器内存多的话,尽可能多分配点内存,可以提高检索速度。
不能以root账户启动
这个看似比较好解决,elasticsearch出于安全考虑,已经不让用root账户启动了,所以我们在操作的时候,单独创建个用户就可以了。
但是,创建完用户后,切到这个用户上启动elasticsearch时,又有新的问题了。
主要是一些用户的线程数不够。
修改linux线程数,vim打开 /etc/security/limits.d/90-nproc.conf
修改后用户需要重新登录下才生效。