把测试环境的Elasticsearch升级到1.5.1版本,启动的时候报错:

[root@node2 elasticsearch-1.5.1]# bin/service/elasticsearch start
Starting Elasticsearch…
Waiting for Elasticsearch……
WARNING: Elasticsearch may have failed to start.

到日志里看,发现这样的异常:

[ERROR][bootstrap ] Exception
java.lang.RuntimeException: Java version: 1.7.0_51 suffers from critical bug
https://bugs.openjdk.java.net/browse/JDK-8024830 which can cause data corruption. Please upgrade the JVM, see http://www.elastic.co/guide/en/elasticsearch/reference/current/_installation.html for current recommendations.
If you absolutely cannot upgrade, please add -XX:-UseSuperWord to the JVM_OPTS environment variable.
Upgrading is preferred, this workaround will result in degraded performance.
at org.elasticsearch.bootstrap.JVMCheck.check(JVMCheck.java:121)
at org.elasticsearch.bootstrap.Bootstrap.main(Bootstrap.java:211)
at org.elasticsearch.bootstrap.ElasticsearchF.main(ElasticsearchF.java:34)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:290)

测试环境的jdk使用的是1.7.0_51版本,这个版本有个bug,可能引起Lucene崩溃,造成seg文件或者index文件损坏。Elasticsearch建议升级jdk的版本,或者在启动命令中设置-XX:-UseSuperWord,关闭UseSuperWord功能,可以避免这个bug。

于是修改Elasticsearch的启动设置,打开bin/service/elasticsearch.conf, 增加下面的设置:

wrapper.java.additional.10=-XX:-UseSuperWord

然后启动:

[root@node2 elasticsearch-1.5.1]# bin/service/elasticsearch start
Starting Elasticsearch…
Waiting for Elasticsearch……
running: PID:3283

好了启动起来了。看一下jvm进程的状态:

[root@node2 elasticsearch-1.5.1]# jinfo 3285
Attaching to process ID 3285, please wait…
Debugger attached successfully. Server compiler detected. JVM version is 24.51-b03
…memes….
-Delasticsearch-service -Des.path.home=/server/elasticsearch-1.5.1 -Xss256k -XX:+UseParNewGC
-XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly
-XX:+HeapDumpOnOutOfMemoryError -Djava.awt.headless=true -XX:-UseSuperWord -Xms1024m -Xmx1024m
-Djava.library.path=/server/elasticsearch-1.5.1/bin/service/lib -Dwrapper.key=7w8xGTzSEUve1FvC
-Dwrapper.port=32000 -Dwrapper.jvm.port.min=31000 -Dwrapper.jvm.port.max=31999
-Dwrapper.disable_console_input=TRUE -Dwrapper.pid=3283 -Dwrapper.version=3.5.14
-Dwrapper.native_library=wrapper -Dwrapper.service=TRUE -Dwrapper.cpu.timeout=10
-Dwrapper.jvmid=1

可以看到-XX:-UseSuperWord指令已经生效了,Elasticsearch已经启动成功了。可是去掉UseSuperWord特性有没有负面的影响呢?查了一下,UseSuperWord的功能是这样的:

http://search-lucene.com/m/l6pAi13MPrt1BjCmN1&subj=Crazy+Solr+startup+params+please+review

摘要如下:

“-XX:-UseSuperWord If you have a Haswell CPU, all other improvements in these command line settings are eaten up by this flag! If you have 7u55 at minimum, you should never disable this. Things like BooleanFilter and other bitset operations are up to 2 times faster with Java 7u55 on Haswell CPUs and later!!! This setting only makes sense if you have one of those buggy JDKs (7u40 to 7u51). In all other cases this slows down enormous! In addition, enabling this option may break JDKs before 7u40 (this option was added in 7u40), so breaks:

It would be good, if we could fix the startup scripts not not have options, which may also break with JDK 8 or later!”

大概是这样的意思:UseSuperWord会在字节运算时启用布隆过滤器之类的特性,能在haswell架构的cpu上提高2倍以上的速度。看来这个功能还是开启的好。最好的方式还是升级jdk的版本到1.7.0_51以上。

Elasticsearch升级1.5版本暴露jdk的bug相关推荐

  1. Linux 卸载旧版本的 JDK 并且升级新的JDK 【转】

    centos5.2自带的了jdk,但还是1.4的版本,太老掉牙了,tomcat6都没发跑起来.显然没法满足我们的要求.我们先查看一下,如下所示: [root@localhost soft]# java ...

  2. java 对应sql驱动版本_关于Oracle JDBC驱动版本、JDK版本、数据库版本对应关系(相关的报错:ORA-28040)...

    关于Oracle JDBC驱动版本.JDK版本.数据库版本对应关系 说明: 1.Oracle JDBC驱动版本查看方式(Oracle JDBC驱动程序随Oracle数据库服务器一起提供)(用户:Ora ...

  3. Eclipse 版本升级:如何不卸载旧版本 Eclipse 实现在线升级到最新版本?

    文章目录 前言 一.网上没"升级 Eclipse"相关资料吗? 1.1.相关资料很少,我也生气 1.2.升级新版本与在线升级插件傻傻搞不清 二.版本升级准备 2.1.Eclipse ...

  4. centos升级默认node版本

    最新版的elasticsearch 在装head插件的时候会报一个错误,这里需要升级下node版本就好了 npm install -g n n stable node -v v9.0.0 转载于:ht ...

  5. centos代码切换图形_CentOS已死;微软将强行升级部分旧版本 Windows 10 用户;黑客远程打开莫斯科近3000个快递柜...

    编辑 | 万佳 本周架构视点:CentOS 8 落幕,CentOS 已死:微软将强行升级部分旧版本 Windows 10 用户:Travis CI 不再为开源项目提供免费服务:JavaScript 诞 ...

  6. MySQL升级到8x版本遇到的问题汇总

    MySQL升级到8x版本遇到的问题(5个异常及其解决办法) 异常1 java.sql.SQLException: java.lang.ClassCastException:java.math.BigI ...

  7. 我应该使用哪个版本的 JDK?

    本文在写作过程中参考了whichJDK ​ 要构建和运行 Java 应用程序,就需要安装 JDK 环境. OpenJDK 是 Java SE 规范的开源软件,但它只是源代码.二进制发行版由不同的供应商 ...

  8. mac 多个java 版本下载_MacOS 下安装多个版本的 JDK 并统一管理

    现在的 MacOS 都不自带 JDK 了,如果你在未安装 JDK 的 MacOS 中执行 Java 命令会出现如下提示: AigeStudio@aige$ java -versionNoJava ru ...

  9. Linux下JDK1.7升级1.8版本

    Linux下JDK1.7升级1.8版本 下载需要升级的jdk 这里我需要升级的是jdk1.8 然后上传到 /usr/local/src 去.当然其他目录也可以.这里是默认位置. 如果你的liunx连接 ...

最新文章

  1. 漫话:如何给女朋友解释为什么 Java 中1000==1000为 false,而100==100为 true?
  2. Eclipse更改系统主题
  3. 视图 - 创建及修改视图
  4. *【HDU - 2819】Swap(二分图匹配,输出路径)(待证明:是否是最少交换次数?)
  5. GY39传感器C语言代码,详解Arduino GY-30数字光强传感器应用
  6. Vue 脚手架结合 SpringBoot 构建前后端分离入门项目(实现增删改查)
  7. js语音识别_js 语音识别_js 语音识别库 - 云+社区 - 腾讯云
  8. 广数980系统锁解除密码
  9. 通过开发对接淘宝联盟发单淘宝客优惠线报自动转链接社转发返利机器人球鞋搬砖
  10. js原生 在线客服功能
  11. 【线性代数笔记】关于两个矩阵相乘等于零矩阵(AB=O)
  12. 微信小程序仿打卡小程序
  13. freebsd scim输入法解决办法
  14. 样本方差为何除以n-1而不是n?
  15. 信奥中的数学基础:分解质因数
  16. fcpx插件Stupid Raisins Shop Pop for Mac(27种购物主题标题模板)
  17. QT编译:error LNK2019: 无法解析的外部符号 __imp_xxx,函数 “public: static void __cdecl Control::KeySet(class QSt
  18. 桌游“德国心脏病”的C语言代码实现
  19. Express Invoice Plus for Mac是什么软件?Mac发票管理软件推荐!
  20. 必须要知道的GridView用法(1)

热门文章

  1. dbeaver针对某张表写sql(复制软件sql模板)
  2. 网易云音乐插件v2.8.2 安卓版
  3. dell服务器硬盘简测,小巧实用性能强 戴尔MD1120磁盘柜评测
  4. 技嘉显卡测试用什么软件,独家揭秘评测微星和技嘉显卡区别是?哪个好?口碑反馈揭秘...
  5. Hibernate第七篇【对象状态、一级缓存】
  6. FPGA零基础学习:基于FPGA的音乐蜂鸣器设计(附代码)
  7. Ring Buffers (环形消息缓冲区)
  8. 网站带不带www真的不一样,很多新手不知道区别会被坑死的
  9. ueditor编辑器抓取页面背景图片background-image或background
  10. 爱死磕8月28日市场分析,涨停!两天已18个点!