博主有话说:该博文根据实际案例编写,在编写过程中将敏感信息进行替换,可能存在矛盾的地方,望见谅
1 错误详情
[type=circuit_breaking_exception, reason=[parent] Data too large, data for [<http_request>] would be [125643918/119.8mb], which is larger than the limit of [90832896/86.6mb], real usage: [125639936/119.8mb], new bytes reserved: [3982/3.8kb], usages [request=0/0b, fielddata=0/0b, in_flight_requests=3982/3.8kb, accounting=15713/15.3kb]] ElasticsearchStatusException[Elasticsearch exception [type=circuit_breaking_exception, reason=[parent] Data too large, data for [<http_request>] would be [125643918/119.8mb],
在这里找到了3个数值
Data too large, data for [] would be [125643918/119.8mb] 这个就是上限内存(缺省是它是ES最大内存的95%)
real usage: [125639936/119.8mb], ES已经使用的内存
new bytes reserved: [3982/3.8kb] 本次查询需要的内存
2 方案一:增加es的内存
2.1 增加es的内存
编辑elasticsearch配置路径下的jvm.options文件,修改总堆空间的初始大小和总堆空间的最大大小,重启es应用即可
可以根据剩余内存大小情况增加es内存
注:初始值和最大值应当被设置为相同的值
2.2 方案分析
该方案简单粗暴,但是要考虑服务器性能。增加es内存的同时,要考虑到对其它应用的影响,不能增加太高,比如增加到2~3