一杯茶的功夫就把日志搜索引擎性能调优了

ElasticSearch实战:日志分析与搜索技巧解析 本文深入探讨了ElasticSearch在日志分析和搜索案例方面的应用,分享了实用的技巧和案例,包括索引日志数据、创建索引模板、使用Kibana进行数据分析等。同时,还介绍了ElasticSearch的进阶技巧,如查询优化、数据建模和使用监控和诊断工具。文章最后讨论了ElasticSearch的未来发展前景,包括更强大的机器学习功能、更好的云原生支持、增强的安全性和合规性以及优化的性能和扩展性。 阅读详情

Beaver 是由日志易自主研发、安全可控的搜索引擎,由 Master、Broker 和 Datanode 三部分组成,已广泛应用于存储和分析大型分布式系统生成的日志。Beaver 拥有大量与性能相关的配置项,由于手动配置费时费力,并且有时需要修改相关配置以适配特定环境,所以自动调整配置参数优化性能是当前迫切需要解决的问题。

背景调研

目前业界有许多自动调参的项目和算法实现,例如 CMU 开源的关系型数据库自动调参工具 OtterTune[1]、PingCAP 仿作的 TiKV 自动调参工具[2]等,都为我们提供了大量的论文以及开源算法代码。

1、 OtterTune

数据库有很多参数,比如 MySQL 有几百个参数,Oracle 有上千个参数。这些参数控制着数据库的方方面面,很大程度上影响了如缓存容量和检查点频次等数据库性能。

对于不同的硬件配置,不同的工作负载,对应的最优参数文件都是不同的,这些复杂性令数据库调优变得更加困难。DBA(Database Administrator,即数据库管理员)不能简单地重复使用之前调好的参数文件,他们需要花大量时间根据经验来调优数据库的参数,而公司则需要花大价钱来雇佣资深 DBA。

为解决上述问题,卡内基梅隆大学数据库小组的教授、学生和研究人员开发了一个数据库自动调参工具 OtterTune,它能利用机器学习对数据库的参数文件进行自动化调优,利用已有的数据训练机器学习模型,进而实现自动化地推荐最优参数。它能很好地帮助 DBA 进行数据库调优,将 DBA 从复杂繁琐的调参工作中解放出来。

OtterTune 的目的是为了帮助 DBA,让数据库部署和调优更加容易,用机器学习代替人工来完成数据库调参这个冗繁但又很重要的工作,让技术人员甚至不需要专业知识也能顺利完成。

OtterTune 分为客户端和服务端,目标数据库是用户需要调优参数的数据库:

  1. 客户端安装在目标数据库所在的机器上,收集目标数据库的统计信息,并上传到服务端。
  2. 服务端一般配置在云上,获取到客户端的数据之后,开始训练机器学习模型并推荐配置文件。

客户端接收到推荐的配置文件后,配置到目标数据库上,并测量其性能。以上步骤可重复进行,直到用户对其推荐的配置文件满意为止。

2、AutoTiKV

AutoTikv 是一个用于对 TiKV 数据库进行自动调优的工具。它是根据 SIGMOD 2017 年发表的一篇论文所设计[3],能够使用机器学习模型对数据库参数进行自动调优。

AutoTiKV 吸取了 OtterTune 的设计理念,并简化了相关结构。

设计的调优过程如下:

图一:整个过程会循环跑 200 个 round(用户可自定义),或者定义为直到结果收敛为止。

3、ML 模型

AutoTikv 使用了和 OtterTune 一样的高斯过程回归(Gaussian Process Regression,以下简称 GP)来推荐新的 knob,它是基于高斯分布的一种非参数模型。

在还没有利用机器学习模型对参数文件的效果进行预测的时候,OtterTune 使用的是随机采样的方式来收集初始数据。

当有足够的数据 (X,Y) 时,OtterTune 训练机器学习模型进行回归,即估计出函数 f:X→Y,表示对于参数文件 X,用 f(X) 来估计数据库延迟 Y 的值。如此,问题则变为寻找合适的 X,是 f(X) 的值尽量小。这样在 f 上面做梯度下降即可找出合适的 X[4]。

如图二所示,横坐标是两个参数:缓存大小和日志文件大小,纵坐标是数据库延迟(越低越好)。

图二:OtterTune 高斯过程回归模型

OtterTune 用高斯过程回归模型估计出了 f,即给定这两个参数值,估计出对应的数据库延迟。接着用梯度下降找到最合适的参数值,使延迟尽可能低。

高斯过程回归的好处:

  • 和神经网络之类的方法相比,GP 属于无参数模型,算法计算量相对较低,而且在训练样本很少的情况下,GP 表现比神经网络算法(Neural Network ) 更好。
  • 它能估计样本的分布情况,即 X 的均值 m(X) 和标准差 s(X)。若 X 周围的数据不多,则它被估计出的标准差 s(X) 会偏大(表示这个样本 X 和其他数据点的差异大)。直观的理解是若数据不多,则不确定性会大,体现在标准差偏大;反之,数据足够多时,不确定性减少,标准差会偏小。这个特性后面会用到。

但 GP 本身其实只能估计样本的分布,为了得到最终的预测值,我们需要把它应用到贝叶斯优化(Bayesian Optimization)中[5]。

贝叶斯优化算法大致可分为两步:

  1. 通过 GP 估计出函数的分布情况。
  2. 通过采集函数(Acquisition Function)指导下一步的采样(也就是给出推荐值)。

采集函数(Acquisition Function)的特性是在寻找新的推荐值的时候,能够进行平衡探索(Exploration)和利用(Exploitation)。

  • Exploration:在目前数据量较少的未知区域探索新的点。
  • Exploitation:对于数据量足够多的已知区域,利用这些数据训练模型进行估计,找出最优值。

在推荐的过程中,需要平衡上述两种指标。Exploitation 过多会导致结果陷入局部最优值(即重复推荐目前已知最好的点,但可能还有更好的点没被发现),而 Exploration 过多又会导致搜索效率太低(即一直在探索新区域,而没有对当前比较好的区域进行深入尝试)。而平衡二者的核心思想,是当数据足够多时,利用现有的数据推荐;当缺少数据时,在点最少的区域进行探索,探索最未知的区域能够提供最大的信息量。

贝叶斯优化的第二步就可以帮我们实现这一思想。前面提到, GP 可以帮我们估计 X 的均值 m(X) 和标准差 s(X),其中均值 m(X) 可以作为 Exploitation 的表征值,而标准差 s(X) 可以作为 Exploration 的表征值[6],这样就可以用贝叶斯优化方法来求解了。

使用置信区间上界(Upper Confidence Bound)作为采集函数。假设我们需要找 X 诗 Y 值尽可能大,则 U(X) = m(X) + k*s(X),其中 k > 0 是可调的系数,我们只要找 X 使 U(X) 尽可能大即可。

  • 若 U(X) 大,则可能 m(X) 大,也可能 s(X) 大。
  • 若 s(X) 大,则说明 X 周围数据不多,需要探索未知区域新的点。
  • 若 m(X) 大,说明估计的 Y 值均值大,则需要利用已知数据找到效果好的点。

注意:其中系数 k 影响着探索和利用的比例,即 k 越大,越鼓励探索新的区域。

在具体实现中,一开始随机生成若干个 candidate

Ollama本地部署实战:从下载到接入IDE、Web和API 大模型通常依赖云端API,但本地部署正在成为开发者保护隐私、降低调用成本的新选择。Ollama作为一款轻量级大模型运行时管理器,让开发者可以像使用Docker一样便捷地拉取、运行和调用开源大模型。它通过将模型权重量化后加载至本地GPU/CPU,以HTTP服务暴露推理能力,从而实现数据的完全本地化处理。实际工程中,无论是将Ollama接入IDE实现代码补全与问答,还是通过OpenAI兼容或原生API构建Web应用,亦或在内网环境共享模型能力,其技术逻辑都围绕模型管理、服务端口、上下文长度与并发资源调整展开。本 阅读详情

相关推荐

比 ElasticSearch 快 1000 倍的日志引擎

SigLens凭借高效的日志处理能力和简易的操作流程,正迅速在开源社区中获得认可。从基础部署到复杂查询,SigLens都展现出其强大的实用性。

wjianwei666的专栏 544

构建高效Java日志搜索系统:使用Apache Lucene

Apache Lucene是一个由Apache软件基金会支持的开源项目,它的起源可以追溯到20世纪90年代末。当时,它的作者Donald Knuth 和他的学生 Doug Cutting,为了在海量文本数据中快速检索信息而启动了这个项目。Lucene项目的初衷是提供一个简单易用的搜索引擎库,让开发者可以在各种应用中加入搜索功能。随着时间的推移,Lucene逐渐演变为一个功能全面、性能卓越的全文搜索引擎库。它不仅支持高效的数据索引和快速搜索,还能够处理各种复杂查询,并且支持多种语言。

weixin_36212459的博客 1074

Cursor插件安装CodeX保姆级教程:从登录到调整面板布局,一步不落

本文提供Cursor编辑器安装CodeX插件的详细教程,涵盖从登录到调整面板布局的全流程。通过优化界面布局和配置参数,帮助开发者提升编码效率,特别适合需要智能代码补全的编程场景。

weixin_42648844的博客 4778

从Zemax到Speos:HUD设计数据无缝迁移避坑指南(含STEP文件精度验证)

本文详细介绍了从Zemax到Speos的HUD设计数据无缝迁移方法,重点解决Zernike曲面参数保真、虚拟厚度设置和坐标系对齐等核心问题。通过STEP文件精度验证和工程化解决方案,帮助工程师避免数据迁移中的常见陷阱,提升HUD系统设计效率。适用于Ansys Zemax和Ansys Speos用户,优化光学性能验证流程。

h6i7j8的博客 1064

Coze智能体网页集成实战:从零搭建免登录AI助手

本文详细介绍了如何利用Coze Chat SDK从零开始为网站集成免登录AI助手。通过获取访问令牌和智能体ID,仅需几行JavaScript代码即可将功能完整的对话窗口嵌入网页,实现开箱即用的智能交互。文章重点讲解了核心部署步骤、会话隔离方案以及UI深度定制方法,帮助开发者快速打造贴合品牌、提升用户体验的网页AI助手。

gold8的专栏 560

ArcGIS供地图斑图形及属性入库操作(附练习数据)

已知数据: 供地图斑位置图。 供地图斑表格 成果要求:将供地图斑导入mdb数据库并将供地图斑表格的属性进行挂接。 接下来我们开始操作: 1、 打开arcmap,在目录内连接的文件夹内找到供地图斑位置图。图片 2、 将annotation和polygon添加到arcmap图片 3、 右击文件所在文件夹新建mdb数据库图片 4、 右击数据库新建要素数据集。(要素数据集非常重要,稍后所有操作都在数据集内进行)选择图斑投影方式及代号。图片 5、 右击要素数据集—导入(将图层内的数据导入数据库)图片 6、 数据导入.

qq_43173805的博客 8132

MIMIC数据库简介

一 、MIMIC简介 MIMIC(Medical Information Mart for Intensive Care),是一个大型的公开数据库。该数据库记录了2001年至2019年期间贝斯以色列女狄肯斯医疗中心重症监护病房患者的相关数据,拥有4万多名患者的医疗健康数据和记录。 MIMIC数据库记录了人口统计学信息,如病人的性别、身高、宗教等情况。记录了实验室检验信息,如血常规,肝功能,肾功能等实验室检测数据。记录了患者的用药信息,如高血压患者服用了治疗高血压类药物等。记录了护理人员以及患者的护理级别等。

越努力 越幸运 1万+

宇瞳杯视讯镜头完成版(除公差/鬼像分析)

宇瞳杯视讯镜头完成版(除公差/鬼像分析)

weixin_72050316的博客 1049

【Jenkins】Jenkins :首次登录直接使用 admin 账户

目录 一、使用admin账户 二、修改admin用户密码 三、管理视图 一、使用admin账户 安装时,自定义安装,选择必要的插件安装,设置Jenkins的URL为: http://本机或服务器IP:8080 然后在创建第一个管理者界面,直接选择:使用admin 二、修改admin用户密码 进入:系统管理——管理用户——选中用户——点击设置图标——修改密码: 三、...

顾三殇 —— 博客空间(软件测试) 1万+

如何使用 SAP ABAP Development Tool 连接 SAP BTP 上的免费 ABAP 编程环境

在云端环境编写 ABAP 代码会遇到一些限制,比如你无法在云端 ABAP 编程环境进行发生在传统 SAPGUI 里的 Dynpro 和 Screen 编程。部分在 SAPGUI 里使用的 List 处理相关的关键字比如 WRITE,还有 CALL TRANSACTION 等代码,也无法在云端使用。 当然如果大家觉得上面提到的这些限制不会影响自己的 ABAP 学习,就可以继续本文的阅读,使用 ABAP Development Tool 登录云端的 ABAP 编程环境。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1521

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

上一篇: Java锁与线程的那些“不可描述”的事儿
下一篇: 直击灵魂一问:协程到底是怎么切换线程的?
JavaShark
博客等级 码龄4年 184粉丝 438原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值