博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ES elasticsearch 客户端查询CPU占用率高之性能优化
阅读量:4659 次
发布时间:2019-06-09

本文共 1433 字,大约阅读时间需要 4 分钟。

问题描述:由于业务原因,网站并发一般发生在晚上1点左右,持续半个小时,某晚移动端商品图片加载不出来,公司大佬紧急联系各个负责人,高峰期过后恢复正常,第二天查找原因,从商品查找到了ES这边。接手项目前听说由于CPU100%挂过一次,测试压力测试查询并发在每秒80左右就不行了,于是增加机器负载,连续几天还是接二连三的报警,于是仔细查看了代码。性能测试结果如下:

解决方案:发现主站搜索用的是API方式Post提交搜索,出问题的几个接口是使用客户端搜索,换成了API方式后性能提升可以看的到,大概是客户端查询的5倍,看来官方的Client也不是很靠谱。。。

主要代码如下:

//API查询方法public static GoodsSearchReturnModel GetList(object query)        {            var model = new GoodsSearchReturnModel();            var url = ConfigHelper.GeElasticSearchUrl() + "goods_index/_search";            try            {                var r = HttpClientHelper.PostAsJsonAsync(url, query);                var result = JsonConvert.DeserializeObject
>(r); if (result != null) { if (result.hits.hits != null && result.hits.hits.Any()) { result.hits.hits.ToList().ForEach(a => { model.GoodsList.Add(a._source); }); model.Total = result.hits.total; } } } catch (Exception ex) { LoggerHelper.GetLogger("SearchApiLog").Info(string.Format("{0}服务调用失败{1},错误原因{2}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), url, ex)); } return model; }

在浏览器中的数据管理端可直接模拟操作

转载于:https://www.cnblogs.com/wangbg/p/elasticsearch.html

你可能感兴趣的文章
找工作——JVM内存管理
查看>>
【Flask】在Flask中使用logger
查看>>
好系统重装助手教你如何让win10系统快速开机
查看>>
linux开机启动
查看>>
BZOJ 1101 [POI2007]Zap 【莫比乌斯反演】
查看>>
SQL Server-The target principal name is incorrect. Cannot generate SSPI context
查看>>
AS3全局与局部坐标转换
查看>>
Java内部类详解
查看>>
初识Twisted(一)
查看>>
linux 软件安装篇
查看>>
Sql server数据库大小写敏感设置
查看>>
JAVA多线程-内存模型、三大特性、线程池
查看>>
RxJS速成 (下)
查看>>
无锁栈与无锁队列
查看>>
微信开发第8章 通过accesstoken将长连接转换为短链接
查看>>
[刷题]Codeforces 785D - Anton and School - 2
查看>>
四川红油的制法
查看>>
Java重写《C经典100题》 --21
查看>>
【Android基础】Fragment 详解之Fragment生命周期
查看>>
链表(裸题)
查看>>