Elasticsearch实战-磁盘IO被打满
背景
事情是这样的。一天下午4点42分左右。业务反馈我开发的服务在测试环境出现问题,返回资源数据是0。查日志发现是ES访问超时。相当于数据库挂了。持续了20多分钟自己恢复。
咨询了ES团队,最终得到下面的答复:
当前集群现状: 1)当前集群数据IO最高的索引为XXX,数据量很小(100mb) 2)但是读写都很大(读>1000QPS,写>1000QPS) ,使用的是线下环境的机器 3)索引分了10个片,4个副本问题 分析: 1)线下环境的机器之前了解到测试环境硬盘性能本来就很差,这个需要业务SRE一块来确定 2)查询的时候,会一次性查询10个片,这样可能会查10台机器的数据,很容易出现木桶效应,造成集群的性能下降 3)写入的时候,虽然是做了10个分片,看起来能加大写能力,但是机器数少,导致结果是每台机器分布了5个分片,等效于只做了2个分片,完全没有扩大写的能力 建议: 1)升级硬件,换成SSD 2)分片改成2个,这样读能力比以前肯定有提升,写能力等价 3)数据量很小,建议直接换成Redis
我自己做了调查。测试环境ES有十台VM(非本地ESB磁盘)作为服务器。其中一台IO被打满。其他机器负载、IO都很低。对于这个问题,ES团队给出的答复是:
ES的服务负载均衡、发现机制是自己写的,一般不会出现问题, Client仅仅对官方的客户端做了简单的封装, 当然最好是可以对官方的客户端进行改造, 但是我们现在的人力明显不行,只能继续沿用老的客户端使用; 我们预计在10月份左右会出一个自研的客户端, 会尽量避免出现一台机器导致部分查询出现问题, 但是也避免不了, ES内部的服务发现机制,我们改变不了,除非改ES
调查
1.需要换成本地磁盘,测试环境也是我们的正式环境。是否能直接替换成物理机?多少台合适?怎么可以平滑替换?
没有必要换成物理机。因为ES内存最多能用32G。内存多出来的是浪费用不上,有物理机也是隔成VM来用。
原来10台VM是足够的,只需要同等数量替换。
有机器替换功能。替换时原理是先申请机器部署。然后点击机器替换。会一台台的将分片赶到新机器上。一台下完自动下线老机器。
2.我们测试环境有10台服务器,10个分片,4个副本,写/读QPS大概是7:6。究竟几个分片几个索引更合理?
因为每个分片和副本是同步写。写比例大,副本多会对性能有很大影响。分片替换需要重建索引,很难平滑。所以只将副本数减少为一个分片1个。
3.程序方面有没有可以优化的?
在ES上层增加tair缓存。在进行数据更新操作时是单个数据读取。采用tair有更好的事务性,并减少了对ES的压力。ES只处理复杂查询请求。
Elasticsearch实战-磁盘IO被打满的更多相关文章
- ElasticSearch实战系列十: ElasticSearch冷热分离架构
前言 本文主要介绍ElasticSearch冷热分离架构以及实现. 冷热分离架构介绍 冷热分离是目前ES非常火的一个架构,它充分的利用的集群机器的优劣来实现资源的调度分配.ES集群的索引写入及查询速度 ...
- 【好书摘要】性能优化中CPU、内存、磁盘IO、网络性能的依赖
系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长期和持续的过程,不 是说现在优化了,测试了,以后就可以一劳永逸了,也不是说书本上 ...
- Linux按照CPU、内存、磁盘IO、网络性能监测
系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长期和持续的过程,不 是说现在优化了,测试了,以后就可以一劳永逸了,也不是说书 ...
- inux按照CPU、内存、磁盘IO、网络性能监测
http://my.oschina.net/chape/blog/159640 系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长 ...
- ES CPU和磁盘IO升高
问题 ES监控出现偶尔的波动,CPU和磁盘IO升高 有时候在凌晨,业务请求比较低,也没有慢查询,GC也比较正常,没有出现Full GC ES内部的merge segment会占用CPU和磁盘资源,怀疑 ...
- linux性能优化cpu 磁盘IO MEM
系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长期和持续的过程,不 是说现在优化了,测试了,以后就可以一劳永逸了,也不是说书本上 ...
- 性能优化中CPU、内存、磁盘IO、网络性能的依赖(转)
关于系统性能优化,推荐一篇不错的博客! 系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长期和持续的过程,不 是说现在优化了,测试 ...
- Linux按照CPU、内存、磁盘IO、网络性能监测【转载】
本文转载地址:https://my.oschina.net/chape/blog/159640 系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监 ...
- 磁盘 IO 和网络 IO 该如何评估、监控、性能定位和优化?
生产中经常遇到一些IO延时长导致的系统吞吐量下降.响应时间慢等问题,例如交换机故障.网线老化导致的丢包重传:存储阵列条带宽度不足.缓存不足.QoS限制.RAID级别设置不当等引起的IO延时. 一.评估 ...
随机推荐
- Oracle - Tables
创建表 a: Sql语句创建 -- Create table create table Table_Name ( 字段1 VARCHAR2(50), 字段2 VARCHAR2(50) not null ...
- TensorFlow Distribution(分布式中的数据读取和训练)
本文目的 在介绍estimator分布式的时候,官方文档由于版本更新导致与接口不一致.具体是:在estimator分布式当中,使用dataset作为数据输入,在1.12版本中,数据训练只是datase ...
- c++并查集配合STL MAP的实现(洛谷P2814题解)
不会并查集的话请将此文与我以前写的并查集一同食用. 原题来自洛谷 原题 文字稿在此: 题目背景 现代的人对于本家族血统越来越感兴趣. 题目描述 给出充足的父子关系,请你编写程序找到某个人的最早的祖先. ...
- vmware设置centos静态ip
之前有过设置ubuntu静态ip的经验,这次安装设置centos感觉很顺利很简单.参考https://www.linuxidc.com/Linux/2017-10/147449.htm,照做就可以了. ...
- 牛客暑假多校第二场 F trade
题意: 白兔有n个仓库,每个仓库有啊ai个货物,在每个仓库白兔可以装上任意数量的货物,也可以卸下任意数量的货物,现在有k个圆形信号阻隔器,然后有m个顾客下个一个订单,每个顾客的收货量有一个上限, 在每 ...
- HDU - 3974 Assign the task (DFS建树+区间覆盖+单点查询)
题意:一共有n名员工, n-1条关系, 每次给一个人分配任务的时候,(如果他有)给他的所有下属也分配这个任务, 下属的下属也算自己的下属, 每次查询的时候都输出这个人最新的任务(如果他有), 没有就输 ...
- Cocos2d-x 学习笔记(24) ParticleSystem ParticleSystemQuad
1. ParticleSystem ParticleData是存储粒子数据的类,ParticleSystem会关联一个ParticleData对象. ParticleSystem直接继承了Node.T ...
- Springboot基于enable模块驱动
enable作为模块驱动在Spring Farmework.Spring Boot.Spring Cloud使用,都是通过注解的形式以@enable作为前缀,一些常用注解如 | 框架 | 注解 | 模 ...
- 洛谷 P1059【明明的随机数】 题解
事实上,完全可以先将输入进来带有重复的元素们保存进一个数组并对该数组进行排序,再将该数组的各个元素逐个判断是否与前一元素相同(重复与否的判断),将不重复的元素转移至另一个数组,与此同时进行对不重复元素 ...
- hdu 1007 Quoit Design 题解
原题地址 题目大意 查询平面内最近点对的距离,输出距离的一半. 暴力做法 枚举每一个点对的距离直接判断,时间复杂度是 $ O(n^2) $,对于这题来说会超时. 那么我们考虑去优化这一个过程,我们在求 ...