访问elasticsearch集群提示ERROR 新增es数据失败,后台日志返回413 Request Entity Too Larg

news2024/11/26 20:45:52

一、背景:

在运维paas云平台时有研发反馈客户端访问elasticsearch服务偶发性的出现报错,提示报错如下:

 ERROR 1 --- [io-8407-exec-35] c.j.b.c.c.e.s.ElasticOperateServiceImpl  : 新增es数据失败

二、问题分析:

报错日志内容核心点如下:

[business-center-msg] [2024-04-09 15:43:26] 2024-04-09 15:43:26.873 ERROR 1 --- [io-8407-exec-35] c.j.b.c.c.e.s.ElasticOperateServiceImpl  : 新增es数据失败
[business-center-msg] [2024-04-09 15:43:26] 
[business-center-msg] [2024-04-09 15:43:26] org.elasticsearch.ElasticsearchStatusException: Unable to parse response body
[business-center-msg] [2024-04-09 15:43:26] 	at 
[2024-04-09 15:43:26] 2024-04-09 15:43:26.882 ERROR 1 --- [io-8407-exec-35] c.j.c.w.c.GlobalExceptionHandler         : 【异常信息】
[business-center-msg] [2024-04-09 15:43:26] 
[business-center-msg] [2024-04-09 15:43:26] com.jxstjh.common.core.exception.ServiceException: es存储失败:Unable to parse response body
[business-center-msg] [2024-04-09 15:43:26] 	at com.jxstjh.business.center.commons.es.service.ElasticOperateServiceImpl.insert(ElasticOperateServiceImpl.java:148) ~[business-center-commons-es-1.0-SNAPSHOT.jar!/:na]
[business-center-msg] [2024-04-09 15:43:26] 	at 
[business-center-msg] [2024-04-09 15:43:26] Caused by: org.elasticsearch.client.ResponseException: method [PUT], host [http://business-es-service.business-center-prod:9200], URI [/original_message/_create/1777603211016941568?version=-4&timeout=1m], status line [HTTP/1.1 413 Request Entity Too Large]
[business-center-msg] [2024-04-09 15:43:26] <html>

[business-center-msg] [2024-04-09 15:43:26] <head><title>413 Request Entity Too Large</title></head>
[business-center-msg] [2024-04-09 15:43:26] <body>
[business-center-msg] [2024-04-09 15:43:26] <center><h1>413 Request Entity Too Large</h1></center>
[business-center-msg] [2024-04-09 15:43:26] <hr><center>nginx/1.19.10</center>
[business-center-msg] [2024-04-09 15:43:26] </body>
[business-center-msg] [2024-04-09 15:43:26] </html>
[business-center-msg] [2024-04-09 15:43:26] 

根据日志报错内容及研发反馈的信息得到如下有用信息:

1、连接elasticsearch服务并请求处理业务是偶发性的提示报错,也就是说明elasticsearch服务是正常的,能正常对外提供服务;
2、日志主要提示报错有Unable to parse response body和nginx服务的413报错;

3、日志里是直接连接elasticsearch服务的,但是日志里却提示请求有过一层nginx服务代理;

需要确认的信息:

1、偶发性请求失败报错有什么规律性,或者是特征?

2、确认请求elasticsearch服务是否走了一层nginx代理服务?

疑问1:

通过与研发进行沟通发现是只要请求大小超过1m时就会提示报错的,通过接口调时报错如下:

请求正常的接口情况:

疑问2:

检查elasticsearch服务的statfulset控制器yaml文件内容时,确实发现了elasticsearch服务有一层nginx服务做代理,并且时代理了9200端口。

 并检查一下elasticsearch服务和nginx服务的配置文件内容:

nginx服务的配置:


user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

elasticsearch服务的配置:

[root@business-es-0 config]# cat elasticsearch.yml 
cluster.name: "docker-cluster"
network.host: 0.0.0.0
path.data: /data/data
path.logs: /data/logs

分析总结:

根据上面的分析可以得出来访问elasticsearch服务出现偶发性的报错,就是因为nginx对http请求有大小的限制,nginx服务默认对http请求有1m大小的限制,elasticsearch服务对http请求有100m的限制。所以需要修复该问题的方式就是将nginx服务的http请求大小配置修改为大于1m的配置就可以了。

三、问题处理:

知道原因之后就好出来了,因为elasticsearch服务是采用statfulset控制器部署的,并且nginx服务的配置文件是因为挂载出来的,现在如果要永久性生效nginx的http请求配置,就需要将nginx配置文件给挂载出来,针对k8s的方式有两种方案:

方案一:

创建一个pvc存储,然后将pvc存储里创建nginx.conf配置文件的内容,但是操作起来麻烦,并且不利于维护;

方案二:

创建configmap组件,并绑定nginx.conf配置文件,操作起来简单,也便以维护;

注:这里选择的是方案二。

1、创建configmap:

这里创建configmap是通过前端操作的,也可以后台操作,这里就说明了

2、修改elasticsearch服务的yaml文件配置:

声明configmap:

      volumes:
        - name: proxy
          configMap:
            name: proxy
            defaultMode: 420

运用configmap:

          volumeMounts:
            - name: proxy
              mountPath: /etc/nginx/nginx.conf
              subPath: nginx.conf

然后点击保存即可,保存之后会自动重启elasticsaerch集群的。

四、验证:

等待elasticsearch集群重启完成之后,通知研发进行验证即可。结果时可以请求http头大于1m的请求。

到此就分析并处理了该访问elasticsearch服务提示报错问题,希望可以帮助到大家!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1582435.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Machine Learning系列】带你快速学习十大机器学习算法

前言 机器学习算法是一类用于从数据中学习模式和规律的算法。这些算法可以通过训练样本的输入和输出来推断出模型的参数&#xff0c;然后用于预测新的未知数据。 文章目录 前言机器学习算法1. 线性回归算法 Linear Regression2. 支持向量机算法(Support Vector Machine,SVM)3. …

实战-edusrc漏洞挖掘-接口未授权访问

0x01系统初探 通过fofa对大学进行搜索 fofa:host"edu.cn" &amp;&amp; status_code"200"在随意的翻阅查看时&#xff0c;发现访问xxx.edu.cn登录页面会优先访问登录后的页面&#xff0c;再跳转至登录页面。盲猜应该是前端校验&#xff0c;可以通过…

Netty 入门应用之Http服务WebSocket

Netty实现Http服务 主要的变化是在初始化器中引入了新的编解码器 一些创建的类作用和Netty HelloWorld的小demo一样我这里就不再次重复了 1、Http服务端代码 public class HttpServer {public static void main(String[] args) {// 创建Reactor// 用来管理channel 监听事件 …

氮气柜温湿度含氧量控制及联网监测功能介绍

氮气柜主要用于存储对氧气敏感的物料&#xff0c;如精密电子元器件、金属材料、化学品、药品、IC芯片等。通过持续充入氮气&#xff0c;降低柜内氧气含量至安全水平&#xff0c;从而抑制氧化反应的发生&#xff0c;保护物料免受氧化损害。 氮气柜可以通过氧浓度传感器来实现对柜…

【TI毫米波雷达】MMWave SDK:UART串口数据发送时的数据丢失、出错及避坑配置,Polling方法和Write方法的使用避坑

【TI毫米波雷达】MMWave SDK&#xff1a;UART串口数据发送时的数据丢失、出错及避坑配置&#xff0c;Polling方法和Write方法的使用避坑 文章目录 BUG复现Polling方法和Write方法的使用避坑串口配置避坑附录&#xff1a;结构框架雷达基本原理叙述雷达天线排列位置芯片框架Demo工…

手术麻醉信息管理系统源码 网格编辑、麻醉质控指标

目录 什么是手术麻醉信息管理系统 满足医院等级评级需求 满足电子病历评级需求 满足科室需求 术前 1、患者术前评估/诊断 2、术前讨论制定手术方案 3、手术准备 4、术前准备 术中 1、送手术室 2、麻醉前 3、手术 术后 1、手术结束 2、术后监护 3、术后随访 什…

龙蜥社区「人人都可以参与开源」——体验开源成为“开源人“

龙蜥社区「人人都可以参与开源」体验开源——让更多的人了解开源&#xff01; 龙蜥社区开源概述&#xff1a;龙蜥社区开源的探索过程:龙蜥社区收获总结:AtomGit评测:服务设计上:功能结构上:安全设计上: AtomGit测评总结: 龙蜥社区开源概述&#xff1a; 在追求技术的路上少不了…

Netty学习——高级篇2 Netty解码技术 备份

接上篇&#xff1a;Netty学习——高级篇1 拆包 、粘包与编解码技术&#xff0c;本章继续介绍Netty的其他解码器 1 DelimiterBasedFrameDecoder分隔符解码器 DelimiterBasedFrameDecoder 分隔符解码器是按照指定分隔符进行解码的解码器&#xff0c;通过分隔符可以将二进制流拆分…

将扁平数据转换为树形数据的方法

当遇到了好多扁平数据我们都无从下手&#xff1f;不知道如何处理&#xff1f; 家人们 无脑调用这个函数就好了 接口请求回来以后 调用这个函数传入实参就可以用啦~ // 树形菜单函数 function GetTreeData(data) {let TreeData [];let map new Map(); //存在id,对应所在的内…

大厂Java笔试题之判断字母大小写

/*** 题目&#xff1a;如果一个由字母组成的字符串&#xff0c;首字母是大写&#xff0c;那么就统计该字符串中大写字母的数量&#xff0c;并输出该字符串中所有的大写字母。否则&#xff0c;就输出* 该字符串不是首字母大写*/ public class Demo2 {public static void main(St…

功能测试_验证某城市电话号码的正确性

案例&#xff1a;验证某城市电话号码的正确性 功能测试_等价类设计用例&#xff1a; 步骤&#xff1a; 1:明确需求&#xff1a;电话号码是否正确 2:划分等价类&#xff1a;有效等价类、有效取值、无效等价类、无效取值 3&#xff1a;提取数据编写用例&#xff1a;用例编号…

4.9QT

完善对话框&#xff0c;点击登录对话框&#xff0c;如果账号和密码匹配&#xff0c;则弹出信息对话框&#xff0c;给出提示”登录成功“&#xff0c;提供一个Ok按钮&#xff0c;用户点击Ok后&#xff0c;关闭登录界面&#xff0c;跳转到其他界面 如果账号和密码不匹配&#xf…

vite+react+ts+scss 创建项目

npm create vitelatest输入项目名称选择react选择typescript swc WC 通过利用 Rust 编写的编译器&#xff0c;使用了更先进的优化技术&#xff0c;使得它在处理 TypeScript 代码时能够更快地进行转换和编译。特别是在大型项目中&#xff0c;SWC 相对于传统的 TypeScript 编译器…

液冷是大模型对算力需求的必然选择?|英伟达 GTC 2024六大亮点

在这个以高性能计算和大模型推动未来通用人工智能时代&#xff0c;算力已成为科技发展的隐形支柱。本文将重点探讨算力的演进&#xff0c;深入分析在不同领域中算力如何成为推动进步的基石&#xff1b;着眼于液冷如何突破算力瓶颈成为引领未来的先锋&#xff0c;对液冷散热的三…

探索RAG:加强问答能力的新技术

文章目录 1. RAG是什么&#xff1f;1.1 技术简介1.2 挑战与解决方案1.3 RAG技术构成1.4 应用与前景 2. RAG架构详解2.1 典型的RAG应用有两个主要组件2.2 从原始数据到答案的完整流程 3. RAG在实际应用中的案例 1. RAG是什么&#xff1f; 1.1 技术简介 Retrieval Augmented Ge…

设计模式学习笔记 - 设计模式与范式 -行为型:9.迭代器模式(上):相比直接遍历集合数据,使用迭代器模式有哪些优势?

概述 上篇文章&#xff0c;我们学习了状态模式。状态模式是状态机的一种实现方式。它通过将事件触发的状态转移和动作执行&#xff0c;拆分到不同的状态类中&#xff0c;以此来避免状态机类中的分支判断逻辑&#xff0c;应对状态机类代码的复杂性。 本章&#xff0c;学习另外…

【千帆平台】百度智能云千帆AppBuilder应用探索益智游戏之猜物小游戏

欢迎来到《小5讲堂》 这是《千帆平台》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 背景AppBuilder控制台创建应用设置应用自动配置随机生成AI生成应…

Elasticsearch 嵌套类型的深度剖析与实例

文章目录 **嵌套类型的原理与特点****嵌套类型的创建与映射定义****嵌套查询与过滤****嵌套聚合****实战应用举例** Elasticsearch 嵌套类型的实例 Elasticsearch 索引中的嵌套类型&#xff08;Nested Types&#xff09;是处理具有层次结构或一对多关系数据的有效工具。它允许在…

电工技术学习笔记——正弦交流电路

一、正弦交流电路 1. 正弦量的向量表示法 向量表示方法&#xff1a;正弦交流电路中&#xff0c;相量表示法是一种常用的方法&#xff0c;用于描述电压、电流及其相位关系。相量表示法将正弦交流信号表示为复数&#xff0c;通过复数的运算来描述电路中各种参数的相互关系 …

墨迹天气联合TopOn搭建创新合作模式,深挖广告流量价值 | TopOn变现案例

日前&#xff0c;墨迹天气与移动广告聚合管理平台TopOn达成合作&#xff0c;开发创新思路&#xff0c;通过搭建高效的合作模式&#xff0c;提升商业化效果广告效率和业务水平&#xff0c;共建新场景。 墨迹天气相关负责人表示&#xff0c;作为国内最早布局天气类应用的厂商之一…