生产环境ES查询延迟排查

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 最近经常收到业务方配置的ES查询延迟告警,同样的请求手动在Kibana控制台执行只需几十毫秒就返回结果。受影响的整个链路情况如下,php应用程序通过部署在ES集群各节点上的nginx访问ES请求查询数据。

最近经常收到业务方配置的ES查询延迟告警,同样的请求手动在Kibana控制台执行只需几十毫秒就返回结果。受影响的整个链路情况如下,php应用程序通过部署在ES集群各节点上的nginx访问ES请求查询数据。

image

查询延迟原因可能有2个方面的因素:

1、ES集群异常,ES应用故障或者集群节点主机故障。

  • 首先通过查看上一篇配置的dashboard检测各节点系统指标以及ES性能指标在告警时段有无明显异常。排查问题时为了方便直接查看,针对搜索和索引请求相关的指标,构建了一个新图,直接对query,index,fetch,merge操作的时间进行rate计算,对query,index,fetch,merge操作次数进行increase计算,两者相除得到单个请求的平均操作耗时。若有异常,可以再查看之前的图表中具体的操作数和请求时间。并查看ES相关时间点的日志。
  • 集群节点主机级别的问题主要通过观察node_exporter中的核心指标有无异常,包括CPU,内存,网络,TCP连接,上下问切换,磁盘容量及IO。

2、业务请求异常,业务请求量突增高于正常的水平。

业务上的请求异常主要通过分析ES各节点nginx代理的访问日志错误日志,前端web服务以及php的日志。

  • 写入方客户端写ES的请求记录,请求时间,状态码,响应时间。
  • 找到ES集群中告警延迟索引的相关文档确切的写入时间。
  • 找到查询方客户端的查询记录,请求时间,状态码,响应内容。

分析日志的过程异常痛苦,由于延迟出现在10分钟的时间段, 所以想要分析业务量的波动是否正常,需要统计日志同比环比,进行对比。日志文件大,使用正则,组合grep,awk,sed耗时又消耗性能,效率又低。最终梳理日志,并对关键字段进行解析,接入袋鼠云日志分析系统,终于摆脱登录各服务器命令行统计的惨状,配置应用场景,访问趋势清晰明了。

image

TIPS:

查看监控图表发现业务访问并无异常,使用sar -B查看内存ES节点内存情况,发现在问题时间点各节点的pgscand/s一列数值较高,说明内核线程kswapd回收内存,由于系统free内存不足,当应用突然需要额外内存。用户进程或线程分配内存或发生缺页中断时,会在用户线程上下文中直接进行回收内存(pgscand)和分配内存。

建议根据机器的规格调大以下两个值,32C64G机器可以调大至2-4G

  • vm.min_free_kbytes系统所保留空闲内存的最低限
  • vm.extra_free_kbytes系统保留给应用的free内存
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
7月前
|
存储 分布式计算 Hadoop
maxcompute配置问题之加速查询超时配置回退如何解决
MaxCompute配置是指在使用阿里云MaxCompute服务时对项目设置、计算资源、存储空间等进行的各项调整;本合集将提供MaxCompute配置的指南和建议,帮助用户根据数据处理需求优化其MaxCompute环境。
|
7月前
|
监控 测试技术
PTS日志问题之请求压测报告失败如何解决
PTS(Performance Testing Service)是一项面向网站、应用等提供的压力测试服务,用于模拟不同场景下的用户访问,评估系统的性能表现;在进行PTS压测时,可能会出现一些异常或报错,本合集将PTS压测中频繁出现的问题及其解决办法进行汇编,旨在帮助用户更有效地进行性能测试和问题定位。
|
19天前
|
监控 算法 关系型数据库
扩缩容过程中可能遇到的问题及解决方法
虽然 PolarDB Serverless 的自动扩缩容过程可能会遇到一些问题,但通过合理的措施和方法,这些问题是可以得到有效解决的。同时,随着技术的不断进步和经验的积累,扩缩容过程将会变得更加稳定和可靠,为用户提供更好的服务体验
|
7月前
|
监控 供应链 测试技术
PTS压测问题之自动变成500 并发如何解决
PTS(Performance Testing Service)是一项面向网站、应用等提供的压力测试服务,用于模拟不同场景下的用户访问,评估系统的性能表现;在进行PTS压测时,可能会出现一些异常或报错,本合集将PTS压测中频繁出现的问题及其解决办法进行汇编,旨在帮助用户更有效地进行性能测试和问题定位。
405 2
|
7月前
|
测试技术 UED
PTS压测问题之资源准备好慢如何解决
PTS(Performance Testing Service)是一项面向网站、应用等提供的压力测试服务,用于模拟不同场景下的用户访问,评估系统的性能表现;在进行PTS压测时,可能会出现一些异常或报错,本合集将PTS压测中频繁出现的问题及其解决办法进行汇编,旨在帮助用户更有效地进行性能测试和问题定位。
293 1
|
7月前
|
缓存 弹性计算 Serverless
Serverless 应用引擎操作报错问题之正常运行了两个月,今天更新小功能,结果前后端都报这个错误如何解决
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
7月前
|
前端开发 Java 测试技术
ChaosBlade常见问题之只想指定某个userid 受影响其他流量正常访问如何解决
ChaosBlade 是一个开源的混沌工程实验工具,旨在通过模拟各种常见的硬件、软件、网络、应用等故障,帮助开发者在测试环境中验证系统的容错和自动恢复能力。以下是关于ChaosBlade的一些常见问题合集:
105 0
|
7月前
|
存储 设计模式 监控
如何诊断处理生产环境服务器变慢
在当今的高科技环境下,生产环境服务器的性能问题可能是一个复杂且棘手的问题。当服务器变慢时,可能会对企业的运营产生重大影响,包括客户满意度下降,工作效率降低,甚至可能导致整个系统崩溃。为了解决这些问题,我们需要深入了解生产环境服务器变慢的原因,并掌握有效的诊断和处理方法。本文将详细介绍如何诊断和处理生产环境服务器变慢的问题。通过深入探讨服务器的硬件和软件配置,网络环境,以及可能影响服务器性能的各种因素,我们将提供一系列实用的诊断和解决方案。
108 1
|
7月前
|
测试技术
PTS压测问题之压测资源准备慢如何解决
PTS(Performance Testing Service)是一项面向网站、应用等提供的压力测试服务,用于模拟不同场景下的用户访问,评估系统的性能表现;在进行PTS压测时,可能会出现一些异常或报错,本合集将PTS压测中频繁出现的问题及其解决办法进行汇编,旨在帮助用户更有效地进行性能测试和问题定位。
|
测试技术
15-Jmeter基于步骤的负载策略
15-Jmeter基于步骤的负载策略