1.概述

转载:Kibana优化过程(Optimize)过长或无法结束的解决方案

使用过Kibana的同学应该都知道,当我们在kibana的配置文件中打开或者关闭功能,或者安装、卸载额外的插件后,重启kibana会触发一个优化的过程(optimize),如下图:

这个过程或长或短,视你电脑的性能而定。这里简单介绍一下该过程所要完成的事情。

Kibana是一个单页Web应用
首先,Kibana是一个单页的web应用。何为单页web应用?即所有的页面的读取都是在浏览器上完成,而与后台服务器无关。与后台服务器的通信只关乎数据,而非页面。所以,应用上所有的UI都被打包在一起,一次性的发送到了浏览器端,而不是通过URL到后台进行获取。所以,我们看到kibana的首页是下面这样的: http://localhost:5601/app/kibana#/ 注意这里的#后,代表#后面的内容会被浏览器提取,不往服务器端进行url的情况,而是在浏览器上进行内部重新渲染。因为所有的页面都是存储在浏览器的,所有在初次访问的时候,会加载大量的代码到浏览器端,这些代码都是被压缩过的bundle文件:

而optimize的过程,就是把这些原本可读性的源代码压缩为bundle.js的过程。因此,每当你对Kibana进行裁剪之后重启,因为前端的部分是完全由浏览器负责的,所有bundle文件需要重新生成后再发给浏览器,所以会触发optimize的过程。

Kibana在6.2.0版本之后,常规版本已经默认自带了xpack(当然,你还是可以直接下载不带xpack的开源社区版),导致Kibana的size已经到了200M左右,而且越往后的版本,功能越多,代码量越大,每次optimize的过程都会耗费更多的时间。一般来说,我们会将Kibana部署在单独的机器上,因为这仅仅是一个web后端,通常我们不会分配比较优质的资源,(2C4G都算浪费的了),这种情况下面,每次我们裁剪后重启Kibana都会耗费半个小时~1个小时的时间,更有甚者直接hang住,查看系统日志才知道OOM了。

Nodejs的内存机制
Kibana是用Nodejs编写的程序,在一般的后端语言中,基本的内存使用上基本没有什么限制,但是在nodeJs中却只能使用部分内存。在64位系统下位约为1.4G,在32位系统下约为0.7G,造成这个问题的主要原因是因为nodeJs基于V8构建,V8使用自己的方式来管理和分配内存,这一套管理方式在浏览器端使用绰绰有余,但是在nodeJs中这却限制了开发者,在应用中如果碰到了这个限制,就会造成进程退出。

Nodejs内存机制对Kibana优化的影响
因为Kibana的代码体量越来越大,将所有的代码加载到内存之后,再解析语法树,进行bundle的转换所耗费的内存已经接近1.4G的限制了,当你安装更多插件,比如sentinl的时候,系统往往已经无法为继,导致Kibana无法启动

解决方案
这种情况下,我们需要在Kibana启动的时候,指定NodeJs使用更多的内存。这个可以通过设置Node的环境变量办到。

NODE_OPTIONS="--max-old-space-size=4096"

当然,我的建议是直接指定在kibana的启动脚本当中,修改/usr/share/kibana/bin/kibana文件为:

#!/bin/sh
SCRIPT=$0# SCRIPT may be an arbitrarily deep series of symlinks. Loop until we have the concrete path.
while [ -h "$SCRIPT" ] ; dols=$(ls -ld "$SCRIPT")# Drop everything prior to ->link=$(expr "$ls" : '.*-> \(.*\)$')if expr "$link" : '/.*' > /dev/null; thenSCRIPT="$link"elseSCRIPT=$(dirname "$SCRIPT")/"$link"fi
doneDIR="$(dirname "${SCRIPT}")/.."
NODE="${DIR}/node/bin/node"
test -x "$NODE" || NODE=$(which node)
if [ ! -x "$NODE" ]; thenecho "unable to find usable node.js executable."exit 1
fiNODE_ENV=production exec "${NODE}" $NODE_OPTIONS --max_old_space_size=3072 --no-warnings "${DIR}/src/cli" ${@}
改动在最后一句:NODE_ENV=production exec "${NODE}" $NODE_OPTIONS --max_old_space_size=3072 --no-warnings "${DIR}/src/cli" ${@}

这样,我们可以保证Kibana能顺利的完成optimize的过程

【Elasticsearch】Kibana优化过程(Optimize)过长或无法结束的解决方案相关推荐

  1. ELasticSearch安装使用过程中遇到的坑的解决方案,以及使用Kibana操作ELasticSearch

    一.安装elasticsearch和kibana 安装elasticsearch和kibana,我现在使用的是windows版本的,安装其实也不难,具体的安装教程可以参照这两篇博客,写的安装步骤也很详 ...

  2. 美团外卖搜索基于Elasticsearch的优化实践

    美团外卖搜索工程团队在Elasticsearch的优化实践中,基于Location-Based Service(LBS)业务场景对Elasticsearch的查询性能进行优化.该优化基于Run-Len ...

  3. 触类旁通Elasticsearch:优化

    目录 一.合并请求 1. 批量操作(bulk) 2. 多条搜索和多条获取 二.优化Lucene分段的处理 1. refresh和flush 2. 合并以及合并策略 三.缓存 1. 过滤器和过滤器缓存 ...

  4. ELK学习3_使用redis+logstash+elasticsearch+kibana快速搭建日志平台

    日志的分析和监控在系统开发中占非常重要的地位,系统越复杂,日志的分析和监控就越重要,常见的需求有: 根据关键字查询日志详情 监控系统的运行状况 统计分析,比如接口的调用次数.执行时间.成功率等 异常数 ...

  5. 【Elasticsearch】基于 Elasticsearch + kibana 实现 IP 地址分布地图可视化

    1.概述 转载:基于 Elasticsearch + kibana 实现 IP 地址分布地图可视化 1.需求 有一批特定用途(文末揭晓)的 IP 地址. 想通过地图形式可视化展示 IP 地址对应的经纬 ...

  6. Elasticsearch+Kibana集群部署(3节点)

    Elasticsearch+Kibana集群部署(3节点) l i n d o r − − 良民笔记 lindor--良民笔记 lindor−−良民笔记 文章目录 Elasticsearch+Kiba ...

  7. ElasticSearch 性能优化总结 04

    Elasticsearch是如何实现Master选举的? Elasticsearch的选主是ZenDiscovery模块负责的,主要包含Ping(节点之间通过这个RPC来发现彼此)和Unicast(单 ...

  8. Elasticsearch使用优化之拙见

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 Elasticsearch常常作为日志存储和分析的工具,在企业级应用中常常使用.Elastic ...

  9. ElasticSearch性能优化策略【转】

    ElasticSearch性能优化主要分为4个方面的优化. 一.服务器部署 二.服务器配置 三.数据结构优化 四.运行期优化 一.服务器部署 1.增加1-2台服务器,用于负载均衡节点 elasticS ...

最新文章

  1. 分享Silverlight/WPF/Windows Phone一周学习导读(1月17日-1月23日)
  2. [转]linux文件同步工具Unison的使用
  3. Android Hal层简要分析
  4. centos 安装java_在CentOS8上编译安装开源EDA工具——Surelog
  5. Flexbox 布局 – 表单
  6. 嵌入式Linux USB WIFI驱动的移植
  7. Java 多线程(六)——进程间通信与线程间通信
  8. ADS 2013 momentum仿真出错
  9. 年薪五万程序员的生活及他的理财梦
  10. 一分钟带你快速认识S参数
  11. Appium学习:雷电模拟器的使用
  12. 《高质量C/C++编程指南》第1期
  13. tensorflow2.0基础操作-手写数字识别实战
  14. discuz mysql类_Discuz论坛教程之数据库操作DB类和C::t类介绍
  15. 荣耀全明星不显示服务器,新版本,新气象!这些荣耀全明星新版本的细节与豆知识你了解吗?...
  16. Java面试题总结(乱序版,来自大厂面试官的MySQL灵魂十连问
  17. Tuxedo ubbconfig配置详解
  18. 国科大人工智能学院.深度学习.期末复习知识点笔记
  19. ubuntu安装pr_Ubuntu16.04安装wps办公软件解决文字缺失
  20. RTU和DTU分别是什么?

热门文章

  1. 宁德时代是前8个月全球最大电动汽车电池供应商
  2. 一年3000家企业涌入,站上风口的男色经济难逃烧钱亏损
  3. 去哪儿网:报复性滑雪来了 机票预订量超去年
  4. 苹果公司反诉堡垒之夜开发商Epic,寻求惩罚性赔偿
  5. 三菱电机宣布放弃液晶面板业务 2022年6月停止生产相关模组
  6. 董明珠谈和雷军续赌约:他愿意续我当然可以,网友:先把上次的账结了
  7. 网易云推出“音街”APP 入局免费K歌市场
  8. 5G iPhone,再等一年,有三款!
  9. 三大运营商移动电话用户总数公布了 同比增长6.2%
  10. 先发不一定制人:美韩5G网络体验差遭吐槽