ElasticSearch遇到java.net.SocketException: Broken pipe (Write failed)报错

        最近需要大范围使用ElasticSearch,以前这个一直是我的薄弱项(现在也还是!)

        接手的一个较老的项目中,使用的第三方包(bboss)中的接口查询的ElasticSearch,里面的方法和官方给的略有一点区别。涉及到了我的知识盲区。但是原始的业务的查询逻辑很有一点复杂不方便更改现有逻辑,只能照着前人的路子改下去。

报错截图

我的解决思路

        代码运行起来看不到一点错误,这还是使用了try-catch打印出来的。

        debug下去一步一步看起来,到源码发送请求的地方,直接就返回了异常。隐约感觉到是请求的问题。但是实在想不出能有什么办法解决。

        使用了postman发送请求,才指出了问题可能的发生原因。出现了一个413Request EntityToo Large报错

        项目上使用的都是阿里的私有云上产品,私有的云上ElasticSearch需要使用私有云的ECS安装Nginx代理出来(个人项目上逻辑,不代表所有的逻辑都是如此)再通过SLB负载均衡代理到公网进行使用。

        通过查询相关的报错解决办法,才算是知道上述报错的根因。3万多行的文本造成请求体过大,被Nginx给拦下了。

问题根因

        Nginx默认上传传文件的大小限制是1M,就有点无语的很!查了大半天这个问题。

具体解决

413Request EntityToo Large错误解决办法

        参考了该文档,对Nginx的配置进行了更改,重启Nginx后。该报错消失。

client_max_body_size 20M

可以选择在http{ }中设置:client_max_body_size 20m;

也可以选择在server{ }中设置:client_max_body_size 20m;

还可以选择在location{ }中设置:client_max_body_size 20m;

三者有区别

设置到http{}内,控制全局nginx所有请求报文大小

设置到server{}内,控制该server的所有请求报文大小

设置到location{}内,控制满足该路由规则的请求报文大小

        做个记录,下次再有类似的问题,自己也能知道这个方向也可以先排查一下。

        萌新第一次写博客,涉及到了什么问题,还请大佬指出,我一定努力更正。

  • 25
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值