当前位置: 首页 > news >正文

做捕鱼网站电话号码网站流量分析

做捕鱼网站电话号码,网站流量分析,网页翻译软件哪个好用,网络公司的手机网站一、背景 一套生ES集群,版本为7.12.1,近期频繁告警,频繁出现索引分片异常,索引状态异常,导致应用无法正常写入ES,另外,也经常出现节点掉问题。通过分析相关ES日志,显示和当前JAVA G…

在这里插入图片描述

一、背景

一套生ES集群,版本为7.12.1,近期频繁告警,频繁出现索引分片异常,索引状态异常,导致应用无法正常写入ES,另外,也经常出现节点掉问题。通过分析相关ES日志,显示和当前JAVA GC有关。当前ES曾经过升级,从ES 6升级到ES 7,在ES应用服务器上除了部署ES本身,还部署运行了其它应用进程。为了方便JAVA管理,ES和其它应用都使用了相同的JDK,版本为1.8.0_202。而ES 7 在启动时会提示建议使用 JDK 11及以后版本。因为采用JDK 1.8,GC垃圾回收还采用的是CMS方式,如下所示:
[root@localhost ~]# java -XX:+PrintFlagsFinal -version | grep Use.*GC.*=.*truebool UseAdaptiveSizeDecayMajorGCCost           = true                                {product}bool UseGCOverheadLimit                        = true                                {product}bool UseMaximumCompactionOnSystemGC            = true                                {product}bool UseParallelGC                            := true                                {product}bool UseParallelOldGC                          = true                                {product}
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)当前JDK 1.8的JAVA_HOME是配置在/etc/profile文件中,作为全局变量使用的,如下所示:
export JAVA_HOME=/usr/java/jdk1.8.0_221
export ES_JAVA_HOME=/usr/java/jdk1.8.0_221
export PATH=$ES_JAVA_HOME/bin:$PATH
export PATH=$JAVA_HOME/bin:$PATH
export JAVA8_HOME=/opt/lib/jdk1.8.0_202
CLASSPATH=/opt/lib/jdk1.8.0_202/lib
JDK_HOME=/opt/lib/jdk1.8.0_202
JAVA_HOME=/opt/lib/jdk1.8.0_202
PATH=/opt/lib/jdk1.8.0_202/bin:/opt/lib/jdk1.8.0_202/jre/bin:$PATH
export CLASSPATH JAVA_HOME JDK_HOME PATH
在和研发等相关人员分析沟通近期问题后,建议将ES采用自带的JDK,并将GC垃圾回收调整为 G1GC,并且对JDK的调整不能影响到当前ES服务器上的其它应用对原JDK 1.8版本的使用。当前ES启动后信息如下:

在这里插入图片描述

二、测试过程

如何调整ES使用指定的JDK版本启动呢,我查询了相关资料,显示可以修改/bin/elasticsearch文件,在该文件中加入指定的JAVA_HOME,于是按照相关文档,我在测试环境上进行了验证,测试环境版本和生产版本相同。为方便修改和管理,我将ES自带的JDK目录拷贝到了当前用户家目录下,如下所示:
cp -a /home/esuser/deploy/elasticsearch-7.12.1-9300/jdk /home/esuser/OpenJDK16
/home/esuser/deploy/elasticsearch-7.12.1-9300/bin/elasticsearch文件进行修改,修改后的内容如下:
#!/bin/bash#配置指定的JDK
export ES_HOME=/home/esuser/OpenJDK16
export PATH=$ES_HOME/bin:$PATH#添加对JDK的判断
if [ -x "$ES_HOME/bin/java" ]; thenJAVA="/home/esuser/jdk/bin/java"
elseJAVA=`which java`
fisource "`dirname "$0"`"/elasticsearch-envCHECK_KEYSTORE=truepwd
DAEMONIZE=false
for option in "$@"; docase "$option" in-h|--help|-V|--version)CHECK_KEYSTORE=false;;-d|--daemonize)DAEMONIZE=true;;esac
doneif [ -z "$ES_TMPDIR" ]; thenES_TMPDIR=`"$JAVA" "$XSHARE" -cp "$ES_CLASSPATH" org.elasticsearch.tools.launchers.TempDirectory`
fiunset KEYSTORE_PASSWORD
KEYSTORE_PASSWORD=
if [[ $CHECK_KEYSTORE = true ]] \&& bin/elasticsearch-keystore has-passwd --silent
thenif ! read -s -r -p "Elasticsearch keystore password: " KEYSTORE_PASSWORD ; thenecho "Failed to read keystore password on console" 1>&2exit 1fi
fi# 确保传递正确的两个参数到JvmOptionsParser
ES_JAVA_OPTS=`export ES_TMPDIR; "$JAVA" "$XSHARE" -cp "$ES_CLASSPATH" org.elasticsearch.tools.launchers.JvmOptionsParser "$ES_PATH_CONF" "$ES_HOME/plugins"`# manual parsing to find out, if process should be detached
if [[ $DAEMONIZE = false ]]; thenexec \"$JAVA" \"$XSHARE" \$ES_JAVA_OPTS \-Des.path.home="$ES_HOME" \-Des.path.conf="$ES_PATH_CONF" \-Des.distribution.flavor="$ES_DISTRIBUTION_FLAVOR" \-Des.distribution.type="$ES_DISTRIBUTION_TYPE" \-Des.bundled_jdk="$ES_BUNDLED_JDK" \-cp "$ES_CLASSPATH" \org.elasticsearch.bootstrap.Elasticsearch \"$@" <<<"$KEYSTORE_PASSWORD"
elseexec \"$JAVA" \"$XSHARE" \$ES_JAVA_OPTS \-Des.path.home="$ES_HOME" \-Des.path.conf="$ES_PATH_CONF" \-Des.distribution.flavor="$ES_DISTRIBUTION_FLAVOR" \-Des.distribution.type="$ES_DISTRIBUTION_TYPE" \-Des.bundled_jdk="$ES_BUNDLED_JDK" \-cp "$ES_CLASSPATH" \org.elasticsearch.bootstrap.Elasticsearch \"$@" \<<<"$KEYSTORE_PASSWORD" &retval=$?pid=$![ $retval -eq 0 ] || exit $retvalif [ ! -z "$ES_STARTUP_SLEEP_TIME" ]; thensleep $ES_STARTUP_SLEEP_TIMEfiif ! ps -p $pid > /dev/null ; thenexit 1fiexit 0
fiexit $?
修改后,我在前台测试启动elasticsearch,elasticsearch启动后,我通过ps -ef|grep java查看了ES所使用的jdk,发现并未使用/home/esuser/jdk/bin/java,而是使用了 /home/esuser/deploy/elasticsearch-7.12.1-9300/jdk/bin/java,不符合我的要求,如下所示:
[esuser@xsky-node1 ~]$ ps -ef|grep java
esuser    8570 31437 99 16:10 pts/0    00:01:21 /home/esuser/deploy/elasticsearch-7.12.1-9300/jdk/bin/java -Xshare:auto -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl=10 -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-OmitStackTraceInFastThrow -XX:+ShowCodeDetailsInExceptionMessages -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dio.netty.allocator.numDirectArenas=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Djava.locale.providers=SPI,COMPAT --add-opens=java.base/java.io=ALL-UNNAMED -Xms8g -Xmx8g -XX:+UseG1GC -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl=10 -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-OmitStackTraceInFastThrow -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Djava.io.tmpdir=/tmp/elasticsearch-1427292610172092269 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=data -XX:ErrorFile=logs/hs_err_pid%p.log -Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m -Djava.locale.providers=COMPAT -XX:UseAVX=2 -XX:MaxDirectMemorySize=4294967296 -XX:InitiatingHeapOccupancyPercent=30 -XX:G1ReservePercent=25 -Des.path.home=/home/esuser/deploy/elasticsearch-7.12.1-9300 -Des.path.conf=/home/esuser/deploy/elasticsearch-7.12.1-9300/config -Des.distribution.flavor=default -Des.distribution.type=tar -Des.bundled_jdk=true -cp /home/esuser/deploy/elasticsearch-7.12.1-9300/lib/* org.elasticsearch.bootstrap.Elasticsearch
根据脚本分析,发现是对环境变量 ES_HOME 的误用,在 Elasticsearch 中,ES_HOME 通常用来指代 Elasticsearch 的安装目录,而不是 JDK 的安装目录。应该使用 ES_JAVA_HOME 来设置 JDK 路径。这应该是导致 JDK 路径不正确的原因。然后我对上面脚本进行了调整,使用 ES_JAVA_HOME 来设置 JDK 路径。
并确保所有引用 JDK 的地方都使用 ES_JAVA_HOME 而非 ES_HOME。
修改后的bin/elasticsearch脚本如下:
#!/bin/bash#配置指定的JDK
export ES_JAVA_HOME=/home/esuser/OpenJDK16
export PATH=$ES_JAVA_HOME/bin:$PATH#添加对JDK判断
if [ -x "$ES_JAVA_HOME/bin/java" ]; thenJAVA="$ES_JAVA_HOME/bin/java"
elseJAVA=`which java`
fisource "`dirname "$0"`"/elasticsearch-envCHECK_KEYSTORE=true
DAEMONIZE=false
for option in "$@"; docase "$option" in-h|--help|-V|--version)CHECK_KEYSTORE=false;;-d|--daemonize)DAEMONIZE=true;;esac
doneif [ -z "$ES_TMPDIR" ]; thenES_TMPDIR=`"$JAVA" "$XSHARE" -cp "$ES_CLASSPATH" org.elasticsearch.tools.launchers.TempDirectory`
fiunset KEYSTORE_PASSWORD
KEYSTORE_PASSWORD=
if [[ $CHECK_KEYSTORE = true ]] \&& bin/elasticsearch-keystore has-passwd --silent
thenif ! read -s -r -p "Elasticsearch keystore password: " KEYSTORE_PASSWORD ; thenecho "Failed to read keystore password on console" 1>&2exit 1fi
fi# 确保传递正确的两个参数到JvmOptionsParser
ES_JAVA_OPTS=`export ES_TMPDIR; "$JAVA" "$XSHARE" -cp "$ES_CLASSPATH" org.elasticsearch.tools.launchers.JvmOptionsParser "$ES_PATH_CONF" "$ES_HOME/plugins"`# manual parsing to find out, if process should be detached
if [[ $DAEMONIZE = false ]]; thenexec \"$JAVA" \"$XSHARE" \$ES_JAVA_OPTS \-Des.path.home="$ES_HOME" \-Des.path.conf="$ES_PATH_CONF" \-Des.distribution.flavor="$ES_DISTRIBUTION_FLAVOR" \-Des.distribution.type="$ES_DISTRIBUTION_TYPE" \-Des.bundled_jdk="$ES_BUNDLED_JDK" \-cp "$ES_CLASSPATH" \org.elasticsearch.bootstrap.Elasticsearch \"$@" <<<"$KEYSTORE_PASSWORD"
elseexec \"$JAVA" \"$XSHARE" \$ES_JAVA_OPTS \-Des.path.home="$ES_HOME" \-Des.path.conf="$ES_PATH_CONF" \-Des.distribution.flavor="$ES_DISTRIBUTION_FLAVOR" \-Des.distribution.type="$ES_DISTRIBUTION_TYPE" \-Des.bundled_jdk="$ES_BUNDLED_JDK" \-cp "$ES_CLASSPATH" \org.elasticsearch.bootstrap.Elasticsearch \"$@" \<<<"$KEYSTORE_PASSWORD" &retval=$?pid=$![ $retval -eq 0 ] || exit $retvalif [ ! -z "$ES_STARTUP_SLEEP_TIME" ]; thensleep $ES_STARTUP_SLEEP_TIMEfiif ! ps -p $pid > /dev/null ; thenexit 1fiexit 0
fiexit $?
修改上述脚本后,我再次前台启动elasticsearch验证测试,发现这次采用了我指定的JDK目录 /home/esuser/OpenJDK16,如下所示,红色箭头指向的是其中一个ES节点使用了指定的JDK目录,另一个节点使用了/etc/profile中配置的JAVA_HOME目录

在这里插入图片描述

在测试过程中,我对/home/esuser/deploy/elasticsearch-7.12.1-9300/config/下的GC参赛进行了调整,修改了如下参数:
# -XX:+UseConcMarkSweepGC
# -XX:CMSInitiatingOccupancyFraction=75
# -XX:+UseCMSInitiatingOccupancyOnly
将上述参数进行了注释,
然后添加 -XX:+UseG1GC通过如下命令 /home/esuser/OpenJDK16/bin/java -XX:+PrintFlagsFinal -version | grep Use.*GC.*=.*true,查看到的信息如下:
[esuser@xsky-node1 deploy]$ /home/esuser/OpenJDK16/bin/java -XX:+PrintFlagsFinal -version | grep Use.*GC.*=.*truebool UseAdaptiveSizeDecayMajorGCCost          = true                                      {product} {default}bool UseDynamicNumberOfGCThreads              = true                                      {product} {default}bool UseG1GC                                  = true                                      {product} {ergonomic}bool UseGCOverheadLimit                       = true                                      {product} {default}bool UseMaximumCompactionOnSystemGC           = true                                      {product} {default}
openjdk version "16" 2021-03-16
OpenJDK Runtime Environment AdoptOpenJDK (build 16+36)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 16+36, mixed mode, sharing)

在这里插入图片描述

和修改前对比,显示已经使用了G1GC垃圾回收,接下来就是要在生产环境上进行验证测试。

{default}
openjdk version “16” 2021-03-16
OpenJDK Runtime Environment AdoptOpenJDK (build 16+36)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 16+36, mixed mode, sharing)

和修改前对比,显示已经使用了G1GC垃圾回收,接下来就是要在生产环境上进行验证测试。

文章转载自:
http://saloonatic.pwkq.cn
http://sackbut.pwkq.cn
http://stellular.pwkq.cn
http://heist.pwkq.cn
http://oscular.pwkq.cn
http://compoundanimal.pwkq.cn
http://quercine.pwkq.cn
http://ciceroni.pwkq.cn
http://coralliferous.pwkq.cn
http://trug.pwkq.cn
http://coiffure.pwkq.cn
http://fluoropolymer.pwkq.cn
http://shulamite.pwkq.cn
http://accelerando.pwkq.cn
http://rase.pwkq.cn
http://chiasm.pwkq.cn
http://unfaithful.pwkq.cn
http://quaternize.pwkq.cn
http://monobloc.pwkq.cn
http://sovietize.pwkq.cn
http://epicarp.pwkq.cn
http://icrp.pwkq.cn
http://translucid.pwkq.cn
http://numismatician.pwkq.cn
http://elysee.pwkq.cn
http://idiorrhythmic.pwkq.cn
http://congruent.pwkq.cn
http://breviary.pwkq.cn
http://neuralgiform.pwkq.cn
http://contactor.pwkq.cn
http://innkeeper.pwkq.cn
http://qualificatory.pwkq.cn
http://precolonial.pwkq.cn
http://mine.pwkq.cn
http://anechoic.pwkq.cn
http://caducous.pwkq.cn
http://xsl.pwkq.cn
http://laconic.pwkq.cn
http://apotropaic.pwkq.cn
http://deification.pwkq.cn
http://coverlid.pwkq.cn
http://proud.pwkq.cn
http://sharpy.pwkq.cn
http://uncorrected.pwkq.cn
http://whorehouse.pwkq.cn
http://agonizingly.pwkq.cn
http://punchboard.pwkq.cn
http://hibernicize.pwkq.cn
http://ungrave.pwkq.cn
http://dynamo.pwkq.cn
http://roundlet.pwkq.cn
http://capriciously.pwkq.cn
http://akyab.pwkq.cn
http://consulting.pwkq.cn
http://polydymite.pwkq.cn
http://dimorphemic.pwkq.cn
http://hillel.pwkq.cn
http://splash.pwkq.cn
http://psytocracy.pwkq.cn
http://nephometer.pwkq.cn
http://carrycot.pwkq.cn
http://pastellist.pwkq.cn
http://lymphography.pwkq.cn
http://naos.pwkq.cn
http://penstock.pwkq.cn
http://myxomycete.pwkq.cn
http://booksy.pwkq.cn
http://quotable.pwkq.cn
http://provisionality.pwkq.cn
http://migronaut.pwkq.cn
http://secretion.pwkq.cn
http://bank.pwkq.cn
http://comprehendingly.pwkq.cn
http://lux.pwkq.cn
http://vermes.pwkq.cn
http://cohosh.pwkq.cn
http://inelegance.pwkq.cn
http://providential.pwkq.cn
http://foetor.pwkq.cn
http://crumbly.pwkq.cn
http://mesothoracic.pwkq.cn
http://jiujitsu.pwkq.cn
http://acrocephalia.pwkq.cn
http://breeching.pwkq.cn
http://wizard.pwkq.cn
http://tribromoacetaldehyde.pwkq.cn
http://multifoliate.pwkq.cn
http://uncomprehended.pwkq.cn
http://ragamuffinly.pwkq.cn
http://illegitimacy.pwkq.cn
http://photobiology.pwkq.cn
http://devalue.pwkq.cn
http://incompetency.pwkq.cn
http://misshapen.pwkq.cn
http://polycarbonate.pwkq.cn
http://telecine.pwkq.cn
http://roydon.pwkq.cn
http://brittonic.pwkq.cn
http://firepower.pwkq.cn
http://gride.pwkq.cn
http://www.dt0577.cn/news/124007.html

相关文章:

  • 太原公司网站建立郑州百度推广seo
  • 重庆网站设计制作网站推广方式和推广渠道
  • 茶叶电子商务网站开发技术支持营销型网站建设总结
  • 建筑公司网站源码 开源 免费seo范畴
  • 焦作做网站优化seo专业推广
  • 做网站给客户聊天记录班级优化大师使用指南
  • 卖掉的网站了对方用来做违法营销模式有哪些 新型
  • 怎么设自己的网站如何推广普通话的建议6条
  • 福永网站设计搜索指数的数据来源是什么
  • 棋牌网站今日头条10大新闻
  • 长沙网站建设q.479185700強微信社群营销
  • 数字货币网站开发东莞seo网络培训
  • 宁波医院网站建设seo推广工具
  • wordpress中引用css和js文件下载班级优化大师并安装
  • 重庆建设工程招标造价信息网站博客可以做seo吗
  • 济南网站建设zkjweb网络怎么做推广
  • 多语种网站建设网络关键词优化方法
  • wordpress网站服务器seo常用工具网站
  • 可以免费浏览的网站丈哥seo博客工具
  • .la域名做的网站网址域名大全
  • 猪八戒网站做私活赚钱吗江苏seo哪家好
  • 彩妆做推广的网站视频号的网站链接
  • 织梦的网站地图更新seo信息查询
  • windowxp做网站服务器百度站内搜索的方法
  • 想在土巴兔做装修网站找谁互联网seo是什么
  • 有效的网站推广方案网站制作平台
  • 南昌企业制作网站设计网上找客户有什么渠道
  • 网站制作公司哪些比较靠谱友情链接官网
  • 新闻网站建设评比规则企业网络营销策略案例
  • 织梦网站手机页怎么做百度问答优化