记一次线上es慢查询导致的服务不可用
现象
某日线上业务同学反馈订单列表查询页面一直loding,然后提示请求超时,几分钟之后恢复正常
-  接到报障之后,马上根据接口URL,定位到了请求链路,发现是es查询超时,这里我们的业务订单表数据是由几百万的,所以列表查询用的es, 
-  根据请求日志拿到查询es 的参数,在es控制台查询,请求响应时间200ms,初步估计不是这条查询导致, 
  
-  在线上搜索同类报错日志,找到了最初报超时的请求记录,4个字段使用统一查询条件的模糊查询,这条查询在es控制台查询时间为6秒左右,询问当时操作的业务同学,是当时复制错误信息,不是正常的搜索请求 {"commodityName":{"wildcard":"*云汉路线业绩目标: 1W/业绩线索:-----------------------------------需求数:10/拜访目标10/ 拜访路径安排:上午:::润锦,潮工作室,锐城凯,源衣坊,下午:::程逸,精盈,鸿逸,徜仕,三通,富顺,悦富。田亮,汉美森服饰。堡伦,————————————末成交访客户:,重磅服饰,荣鑫服饰*","boost":1.0}}},{"wildcard":{"commodityNumbers":{"wildcard":"*云汉路线业绩目标: 1W/业绩线索:-----------------------------------需求数:10/拜访目标10/ 拜访路径安排:上午:::润锦,潮工作室,锐城凯,源衣坊,下午:::程逸,精盈,鸿逸,徜仕,三通,富顺,悦富。田亮,汉美森服饰。堡伦,————————————末成交访客户:,重磅服饰,荣鑫服饰*","boost":1.0}}},{"wildcard":{"commodityCode":{"wildcard":"*云汉路线业绩目标: 1W/业绩线索:-----------------------------------需求数:10/拜访目标10/ 拜访路径安排:上午:::润锦,潮工作室,锐城凯,源衣坊,下午:::程逸,精盈,鸿逸,徜仕,三通,富顺,悦富。田亮,汉美森服饰。堡伦,————————————末成交访客户:,重磅服饰,荣鑫服饰*","boost":1.0}}},{"wildcard":{"parentCommodityCode":{"wildcard":"*云汉路线业绩目标: 1W/业绩线索:-----------------------------------需求数:10/拜访目标10/ 拜访路径安排:上午:::润锦,潮工作室,锐城凯,源衣坊,下午:::程逸,精盈,鸿逸,徜仕,三通,富顺,悦富。田亮,汉美森服饰。堡伦,————————————末成交访客户:,重磅服饰,荣鑫服饰*","boost":1.0}}},{"term":{"xid":{"value":"云汉路线业绩目标: 1W/业绩线索:-----------------------------------需求数:10/拜访目标10/ 拜访路径安排:上午:::润锦,潮工作室,锐城凯,源衣坊,下午:::程逸,精盈,鸿逸,徜仕,三通,富顺,悦富。田亮,汉美森服饰。堡伦,————————————末成交访客户:,重磅服饰,荣鑫服饰","boost":1.0}}},{"term":{"yid":{"value":"云汉路线业绩目标: 1W/业绩线索:-----------------------------------需求数:10/拜访目标10/ 拜访路径安排:上午:::润锦,潮工作室,锐城凯,源衣坊,下午:::程逸,精盈,鸿逸,徜仕,三通,富顺,悦富。田亮,汉美森服饰。堡伦,————————————末成交访客户:,重磅服饰,荣鑫服饰","boost":1.0}}},{"term":{"sid":{"value":"云汉路线业绩目标: 1W/业绩线索:-----------------------------------需求数:10/拜访目标10/ 拜访路径安排:上午:::润锦,潮工作室,锐城凯,源衣坊,下午:::程逸,精盈,鸿逸,徜仕,三通,富顺,悦富。田亮,汉美森服饰。堡伦,————————————末成交访客户:,重磅服饰,荣鑫服饰","boost":1.0}}},{"term":{"hid":{"value":"云汉路线业绩目标: 1W/业绩线索:-----------------------------------需求数:10/拜访目标10/ 拜访路径安排:上午:::润锦,潮工作室,锐城凯,源衣坊,下午:::程逸,精盈,鸿逸,徜仕,三通,富顺,悦富。田亮,汉美森服饰。堡伦,————————————末成交访客户:,重磅服饰,荣鑫服饰","boost":1.0}
-  通过日志统计,发现该接口当天请求此时在2W次以上,我们是公司业务自用的系统,按道理说不会有这么大的请求量,然后根据请求日志发现了一个很骚的事情,原来的交互设计是每输入一个字,前端就会请求后端去做实时的搜索  
-  运维同学根据,保障的时间段,也发现了当时es服务器,cpu和内存使用的飙升 

解决
- 前端修改交互方式,去掉实时搜索的处理,
- 后端接口增加拦截,过滤不合逻辑的无效请求
总结
- 查询交互设计不合理,报错的es索引,在es库是一个数据量很大的索引,这病频繁请求会导致cpu和频繁的gc
- 后端接口么有校验,导致用户复制输入错误信息,也会去做查询操作,未做查询条件的过滤
相关文章:
 
记一次线上es慢查询导致的服务不可用
现象 某日线上业务同学反馈订单列表查询页面一直loding,然后提示请求超时,几分钟之后恢复正常 接到报障之后,马上根据接口URL,定位到了请求链路,发现是es查询超时,这里我们的业务订单表数据是由几百万的&a…...
 
分布式之ZAB协议
写在前面 假定我们现在使用zk执行了如下的指令: [zk: 192.168.0.10:2181(CONNECTED) 0] create /dongshidaddy 123 Created /dongshidaddy [zk: 192.168.0.10:2181(CONNECTED) 1] create /dongshidaddy/mongo 456 Created /dongshidaddy/mongo假定因为节点故障最终…...
MySQL binlog常用命令及设置清理时间
MySQL binlog常用命令及设置清理时间1 binlog 基本概念2 binlog常用命令3 清理MySQL的binlog日志3.1 自动清理3.2 手动清理文章参考: http://www.360doc.com/content/22/0418/08/65840191_1027038859.shtml https://www.cnblogs.com/kiko2014551511/p/11532426.html…...
 
Windows下载安装Prometheus
目录 资料 下载 解压 点击prometheus.exe运行 资料 Prometheus是一个开源的系统监控和报警系统,同时也支持多种exporter采集数据,还支持pushgateway进行数据上报,Prometheus性能足够支撑上万台规模的集群。 官网:https://pr…...
0-1背包、完全背包及其变形【零神基础精讲】
来源0x3f:https://space.bilibili.com/206214 三叶姐的对背包问题的总结:【宫水三叶】详解完全背包一维空间优化推导(附背包问题攻略)https://leetcode.cn/circle/discuss/GWpXCM/ 文章目录0-1背包、完全背包及其拓展(…...
 
OpenStack
OpenStack优势: 1、模块松耦合。 2、组件配置较为灵活。 3、二次开发容易 OpenStack共享服务组件: 1、数据库服务:MongoDB 2、消息列队:RabbitMQ 3、缓存:Redis 4、存储:Ceph 5、负载均衡ÿ…...
 
Spring Boot整合Kaptcha实现验证码功能
目录一、前言1.Kaptcha 简介2.Kaptcha 详细配置表二、实现1.整合kaptcha,创建kaptcha的工具类1.1 添加依赖1.2 创建KaptchaConfig工具类2 编写接口,在接口中使用 kaptcha 工具类来生成验证码图片(验证码信息)并返回3 登录时从sess…...
【2023】某python语言程序设计跟学第一周内容
本文说明: 案例内容为北理工python语言程序设计课程,如有不妥请联系! 目录温度转换案例:执行结果:代码解析:白话说明:举一反三:根据输入半径求圆周长或面积执行结果:温度…...
 
C#学习记录——接口的实现
一小部分知识精英依旧直面核心困难,努力地进行深度钻研,生产内容;而大多数信息受众始终在享受轻度学习,消费内容。如果我们真的希望在时代潮流中占据一席之地,那就应该尽早抛弃轻松学习的幻想,锤炼深度学习…...
 
“ChatGPT之父”Sam Altman:我是如何成功的?
背靠微软,OpenAI能拳打谷歌,脚踢Meta,它背后的男人,必然不简单。 让我们来看一看,Sam Altman是如何一步步成长为今天这个搅动全世界的男人。 山姆奥特曼(Sam Altman) 成长和创业经历 在YC创始…...
jQuery发送Ajax请求的几种方式
概述JQuery发送ajax请求的方法有很多,其中最基本的方法是$.ajax,在其中封装的方法有 $.get, $post等。我们分别举了不同的示例。数据格式首先,浏览器与服务器之间传输数据所采用的格式,比较常见的有json,jsonp…...
 
Android实现连线题效果
效果图全部正确:有对有错:结果展示,纯黑色:支持图片:实现思路仔细分析可以发现,连线题的布局可以分为两部分,一个是左右两列矩形,另一个是他们之间的连线。每个矩形的宽高都一样&…...
 
以数据 见未来!首届未来数商大会成功举办
2月25日,2023未来数商大会在杭州未来科技城学术交流中心举办。大会发布了数商产业趋势研究报告,首次提出并探讨了完整的数商产业概念,并成立了未来数商联盟,开通了浙江大数据交易服务平台余杭专区。会上,杭州未来科技城…...
 
Java数据结构与算法——手撕LRULFU算法
LRU算法 力扣146:https://leetcode-cn.com/problems/lru-cache/ 讲解视频:https://www.bilibili.com/video/BV1Hy4y1B78T?p65&vd_source6f347f8ae76e7f507cf6d661537966e8 LRU是Least Recently Used的缩写,是一种常用的页面置换算法&…...
20230227英语学习
Can Clay Capture Carbon Dioxide? 低碳新思路:粘土也能吸收二氧化碳! The atmospheric level of carbon dioxide — a gas that is great at trapping heat, contributing to climate change — is almost double what it was prior to the Industria…...
校招前端高频react面试题合集
了解redux吗? redux 是一个应用数据流框架,主要解决了组件之间状态共享问题,原理是集中式管理,主要有三个核心方法:action store reduce 工作流程 view 调用store的dispatch 接受action传入的store,reduce…...
 
k8s node之间是如何通信的?
承接上文同一个node中pod之间如何通信?单一Pod上的容器是怎么共享网络命名空间的?每个node上的pod ip和cni0网桥ip和flannel ip都是在同一个网段10.1.71.x上。cni0网桥会把报文发送flannel这个网络设备上,flannel其实是node上的一个后台进程&…...
 
System V|共享内存基本通信框架搭建|【超详细的代码解释和注释】
前言 那么这里博主先安利一下一些干货满满的专栏啦! 手撕数据结构https://blog.csdn.net/yu_cblog/category_11490888.html?spm1001.2014.3001.5482这里包含了博主很多的数据结构学习上的总结,每一篇都是超级用心编写的,有兴趣的伙伴们都支…...
 
魔兽世界WoW注册网站搭建——-Liunx
问题背景哎 搭建了一个魔兽3.35(纯洁版)每当同学朋友要玩的时候我都直接worldserver上面打一个命令随之出现朋友的朋友也要玩想了想还是要有一个网站原本以为吧单机版里面网页的IP数据库改下可以了结果PHP报错了Unknown column sha_pass_hash in field l…...
OSG三维渲染引擎编程学习之六十八:“第六章:OSG场景工作机制” 之 “6.8 OSG内存管理”
目录 第六章 OSG场景工作机制 6.8 OSG内存管理 6.8.1 Referenced类 6.8.2 ref_ptr<>模板类 6.8.3 智能指针...
 
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
 
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
 
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
 
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
 
C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...
c# 局部函数 定义、功能与示例
C# 局部函数:定义、功能与示例 1. 定义与功能 局部函数(Local Function)是嵌套在另一个方法内部的私有方法,仅在包含它的方法内可见。 • 作用:封装仅用于当前方法的逻辑,避免污染类作用域,提升…...
