关于使用supervisor启动Elasticsearch问题

来源:12-15 Nginx uWSGI Daphne Supervisor Django生产环境部署

A_dot_Ham

2020-03-01

老师,我在使用supervisorctl去启动elasticsearch的时候,总是会在后台开很多java进程,然后内存一下就没了,然后我将虚拟机的内存改成5G,但还是一样,只要是使用supervisorctl去启动,就会产生很多java进程,而单独使用elasticsearch的bin目录下的启动就不会有这个问题,我也看了很多关于什么Elasticsearch调优什么,但还是看不懂,而且改了依然是这样的情况。

[root@mr ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           4.7G        4.4G        126M        4.9M        193M         59M
Swap:          2.0G        1.9G         59M
[root@mr ~]# /usr/local/python3/bin/supervisorctl 
celery:celery_worker1                 RUNNING   pid 9775, uptime 0:01:51
daphne:daphne_worker1                 RUNNING   pid 9777, uptime 0:01:51
elasticsearch:elasticsearch_worker1   FATAL     Exited too quickly (process log may have details)
uwsgi:uwsgi_worker1                   RUNNING   pid 9783, uptime 0:01:51
supervisor> exit

[root@mr ~]# ps -ef|grep java
zanhu     10202      1  7 16:22 ?        00:00:10 /usr/bin/java -Xms1g -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -Dfile.encoding=UTF-8 -Djna.nosys=true -Des.path.home=/home/zanhu/elasticsearch-2.4.6 -cp /home/zanhu/elasticsearch-2.4.6/lib/elasticsearch-2.4.6.jar:/home/zanhu/elasticsearch-2.4.6/lib/* org.elasticsearch.bootstrap.Elasticsearch start -d
zanhu     10725      1  6 16:22 ?        00:00:09 /usr/bin/java -Xms1g -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -Dfile.encoding=UTF-8 -Djna.nosys=true -Des.path.home=/home/zanhu/elasticsearch-2.4.6 -cp /home/zanhu/elasticsearch-2.4.6/lib/elasticsearch-2.4.6.jar:/home/zanhu/elasticsearch-2.4.6/lib/* org.elasticsearch.bootstrap.Elasticsearch start -d
zanhu     10788      1  8 16:22 ?        00:00:12 /usr/bin/java -Xms1g -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -Dfile.encoding=UTF-8 -Djna.nosys=true -Des.path.home=/home/zanhu/elasticsearch-2.4.6 -cp /home/zanhu/elasticsearch-2.4.6/lib/elasticsearch-2.4.6.jar:/home/zanhu/elasticsearch-2.4.6/lib/* org.elasticsearch.bootstrap.Elasticsearch start -d
zanhu     10875      1  8 16:22 ?        00:00:10 /usr/bin/java -Xms1g -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -Dfile.encoding=UTF-8 -Djna.nosys=true -Des.path.home=/home/zanhu/elasticsearch-2.4.6 -cp /home/zanhu/elasticsearch-2.4.6/lib/elasticsearch-2.4.6.jar:/home/zanhu/elasticsearch-2.4.6/lib/* org.elasticsearch.bootstrap.Elasticsearch start -d
zanhu     10976      1  9 16:23 ?        00:00:13 /usr/bin/java -Xms1g -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -Dfile.encoding=UTF-8 -Djna.nosys=true -Des.path.home=/home/zanhu/elasticsearch-2.4.6 -cp /home/zanhu/elasticsearch-2.4.6/lib/elasticsearch-2.4.6.jar:/home/zanhu/elasticsearch-2.4.6/lib/* org.elasticsearch.bootstrap.Elasticsearch start -d
zanhu     11067      1 11 16:23 ?        00:00:15 /usr/bin/java -Xms1g -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -Dfile.encoding=UTF-8 -Djna.nosys=true -Des.path.home=/home/zanhu/elasticsearch-2.4.6 -cp /home/zanhu/elasticsearch-2.4.6/lib/elasticsearch-2.4.6.jar:/home/zanhu/elasticsearch-2.4.6/lib/* org.elasticsearch.bootstrap.Elasticsearch start -d
zanhu     11113      1 10 16:23 ?        00:00:14 /usr/bin/java -Xms1g -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -Dfile.encoding=UTF-8 -Djna.nosys=true -Des.path.home=/home/zanhu/elasticsearch-2.4.6 -cp /home/zanhu/elasticsearch-2.4.6/lib/elasticsearch-2.4.6.jar:/home/zanhu/elasticsearch-2.4.6/lib/* org.elasticsearch.bootstrap.Elasticsearch start -d
zanhu     11233      1 12 16:23 ?        00:00:14 /usr/bin/java -Xms1g -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -Dfile.encoding=UTF-8 -Djna.nosys=true -Des.path.home=/home/zanhu/elasticsearch-2.4.6 -cp /home/zanhu/elasticsearch-2.4.6/lib/elasticsearch-2.4.6.jar:/home/zanhu/elasticsearch-2.4.6/lib/* org.elasticsearch.bootstrap.Elasticsearch start -d
zanhu     11278      1 12 16:23 ?        00:00:14 /usr/bin/java -Xms1g -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -Dfile.encoding=UTF-8 -Djna.nosys=true -Des.path.home=/home/zanhu/elasticsearch-2.4.6 -cp /home/zanhu/elasticsearch-2.4.6/lib/elasticsearch-2.4.6.jar:/home/zanhu/elasticsearch-2.4.6/lib/* org.elasticsearch.bootstrap.Elasticsearch start -d

这是服务器刚启动的状态,supervisor设置了开机自启,虽然Elasticsearch显示错误,但是网站访问没问题,就是速度较慢,发布新动态会有一点卡顿的感觉。
问题是,如果我使用supervisorctl关闭了所有进程,Elasticsearch的后台的java进程并不会关闭一直占着内存,我kill掉java后,内存就恢复了,然后当我再使用supervisorctl启动所有的进程,这时候访问网页会有非常明显的延时,发布新动态会有大概1~2秒的等待,持续好几天都被这个问题困扰,崩溃极了。
对了,一开部署也是出现问题,我搜了一下其他同学提的问题,有一个也是和我类似的情况,他的页面显示“Ooops!!! 500”,我一开始也遇到了这样的情况,后来好像是将3G内存改为5G后还是做了什么配置修改,就可以正常访问,但是就是Elasticsearch会特别占内存,感觉给多少它都会全吃掉。

写回答

3回答

囧神1808

2020-03-16

老师的zanhu_superviosr.ini写错了,supervisor只能监控前台进程,不能监控后台进程,不应该写成command = /home/zanhu/elasticsearch-2.4.6/bin/elasticsearch -d,而是直接写成command = /home/zanhu/elasticsearch-2.4.6/bin/elasticsearch,需要去掉-d,这是一个大坑,坑了我一个下午

0
0

Jack

2020-03-02

如果supervisor启还是进程太多的话,可以先这样,启一个进程在后台运行:

nohup ./elasticsearch-2.4.6/bin/elasticsearch > elasticsearch_running.log 2>&1 &

0
0

Jack

2020-03-02

你给虚拟机分配的是多少核?zanhu_elasticsearch.ini文件中有控制进程个数的numproc.

//img.mukewang.com/szimg/5e5cca9009c389bb06840472.jpg

如果不生效的话,你把虚拟机核数改下试试(虽然实际不可能这么操作。。),我也碰到过这个numprocs配置项不生效的情况,现在还没找到原因。

0
0

Django高级实战 开发企业级问答网站

融合Django高级用法/算法/设计模式/TestCase测试/云计算打造项目

900 学习 · 756 问题

查看课程