ITPub博客

首页 > IT基础架构 > > 把Elasticsearch部署在屁点大内存的服务器上怎么办

把Elasticsearch部署在屁点大内存的服务器上怎么办

作者:飘絮絮絮丶 时间:2022-01-18 09:49:26 0 删除 编辑
为什么把Elasticsearch部署在屁点大内存的服务器上....说来话长,总结起来就是团队没钱

来说说常见问题:

  • 1.没有装JDK
    这个不用多说大家百度一下
  • 2.不能在root账号下运行
    这个也简单创建完子账号就行,但是子账号环境要重新配置,可以在~/目录下创建 .bash_profile 文件 然后写入配置
JAVA_HOME=/usr/java/jdk1.8.0_171
export JRE_HOME=/usr/java/jdk1.8.0_171/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH


  • 3.内存不足(error='Cannot allocate memory')
    原来是4G内存搬到了1G内存的服务器...坑!后来升级到了2G还是经常显示内存不足导致奔溃,后来写了一段重启脚本下面会慢慢讲到
    这个解决办法是修改 onfig/jvm.options 文件里面有一行
    -Xms1G
    改为
    -Xms512m
    意思就是远看分配1G内存的少给一半,起码先启动吧,以后有钱在升级

现在来说说经常奔溃怎办

之前在4G服务器上3个月没挂过,但是换了之后,开始频繁的挂掉,同步数据会挂,访问量大了会挂,被别人爬快了也挂,没办法了要做点补救措施,开始也是二,写了一段检查脚本服务挂了超过5分钟就给自己发邮件,然后手动重启,但是这个已经不能让我愉快的玩耍了,然后在去了百度的google了一下发现运维们其实是会有一段检查重启的脚本,接下来看看这脚本怎么写的

  • 1.创建一个es_monitor.sh -文件写入
#!/bin/bash
cd `dirname $0`
BIN_DIR=`pwd`
# jdk路径,这里有个坑,下文会讲
export JAVA_HOME=/usr/java/jdk1.8.0_171
# 获取es进程ID,我的es目录是/home/elasticS/elasticsearch-6.2.2
ES_ID=`ps -ef |grep elasticsearch |grep -w 'elasticsearch-6.2.2'|grep -v 'grep'|awk '{print $2}'`
# 日志输出
ESMonitorLog=$BIN_DIR/es-master-monitor.log
Monitor()
{
  if [[ $ES_ID ]];then # 这里判断ES进程是否存在
    echo "[info]当前ES进程ID为:$ES_ID"
  else
    echo "[error]ES进程不存在!ES开始自动重启..."
#启动 ES的账号
    su user
#切换账号的JAVA环境
    source  ~/.bash_profile
#到启动的目录下
    cd xxxxxxx/elasticsearch-6.2.2
#启动ES
    ./bin/elasticsearch -d
  fi
}
Monitor>>$ESMonitorLog

我这段可能和网上的不太一样,因为我直接抄下来之后一直无法执行,不知道是不是我的配置不一样,后来就直接改了一些,写的不对请指出

  • 2.然后在系统的定时任务里加入这段脚本
    vim /etc/crontab
    */1 * * * * user /bin/sh /你的路径/es_monitor.sh
  • 3.启动定时任务
    /etc/init.d/cron restart

结束


作者:月球在此
链接:https://www.jianshu.com/p/63f4ae8748ad
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69946831/viewspace-3147649/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-09-09

  • 博文量
    2646
  • 访问量
    42319