美文网首页elasticsearch
把Elasticsearch部署在屁点大内存的服务器上怎么办

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

作者: 月球在此 | 来源:发表于2018-07-04 10:39 被阅读29次
为什么把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

结束

最近刚在运行,还不知道是不是稳定,看看效果吧,祝大家愉快

相关文章

网友评论

    本文标题:把Elasticsearch部署在屁点大内存的服务器上怎么办

    本文链接:https://www.haomeiwen.com/subject/woasuftx.html