应用程序性能分析方法(以ElasticSearch作为例子)

这篇具有很好参考价值的文章主要介绍了应用程序性能分析方法(以ElasticSearch作为例子)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

原则:性能调整在距离工作执行的地方越近越好

应用程序基础

需要了解应用程序的以下方面(以ES举例)

  1. 功能。分布式查询引擎
  2. 操作。查询、写入等等
  3. 配置。_cluster/settings和elasticseach.yml包含很多配置
  4. 指标。bulk time、QPS、线程池…
  5. 日志。系统日志、慢查询写入日志、gc日志
  6. 版本。7.9.1,新版本可能有性能提升的feature
  7. bugs。暂无
  8. 社区。中文和英文社区

常见的优化

需要找到常用的代码路径。应用的代码可能上百万行,随机找地方优化的效率太低。可以通过栈跟踪方法找到。java程序栈跟踪通常使用Async_profiler或Jprofiler

提高性能的常用方法

  1. 增加IO尺寸。每次IO都有固定开销(寻道时间),执行1次128KB的写入比执行128次1KB的写入效率更高。ES提供了异步的translog fsync策略,来增加IO尺寸
  2. 缓存。ES的查询就有多个查询缓存,例如request cache, filter cache
  3. 缓冲区。为提高写入性能,数据在写入下一层级前会先放到缓冲区中,这增加了IO大小。ES的refresh间隔可配置策略就是这个原理。
  4. epoll。轮询是在循环中等待时间状态的变化,存在CPU开销高昂、事件发生和下一次检查的延时较高的问题。epoll没有这样的性能负担。ES使用了netty框架处理网络请求,netty是基于reactor模型的
  5. 并行。利用多处理器加快处理速度。ES的shard查询执行就是并发的,并且在ESQL中并行的线程数增大了,支持segment级并行查询。
  6. 非阻塞IO。Netty使用了NIO
  7. 处理器绑定。线程在单一CPU执行能够提高内存本地性,减少内存IO,但可能会导致资源利用率下降。

垃圾回收的问题

  1. CPU成本
  2. stop-the-world导致的延迟

方法和分析

线程状态

  1. on CPU。使用CPU执行
  2. off CPU
    1. 睡眠
    2. 等待CPU
    3. 匿名换页
    4. IO

CPU剖析方法

等待CPU调度所花时间:sched stat\perf sched
匿名换页时间:delay accounting特性
其他的可以使用:jprofiler

USE方法

对于软件资源也可以使用USE方法查看成为瓶颈的软件资源。可以对软件资源的使用率、饱和度和错误进行考量。ES的线程池基础信息就是很好的例子,包含了线程池的active线程数(对应使用率);排队线程数量(对应饱和度);拒绝的请求数(对应错误)。
node_name name active queue rejected yg-data-rt-es0174 write 16 108 0 yg-data-rt-es0017 write 0 0 0 yg-data-rt-es0048 write 0 0 0 yg-data-rt-es0024 write 0 0 0

参考

《性能之巅》文章来源地址https://www.toymoban.com/news/detail-836568.html

到了这里,关于应用程序性能分析方法(以ElasticSearch作为例子)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ubuntu程序性能分析

    在Ubuntu上,可以使用一些工具来测量两段程序的计算量,如下所示: time命令:time命令可以用于测量程序的执行时间。在终端中运行以下命令来执行程序并测量其执行时间: 这将输出程序的执行时间,包括用户时间、系统时间和实际时间。 在运行的程序之前加 time 最后得出

    2024年01月16日
    浏览(58)
  • Java web应用性能分析之客户端慢

    客户端慢的原因包括: 终端设备老化(手机、PAD、电脑年限久远、运行期间产生了很多垃圾未清除) 终端网络设备老化(路由器、交换机老化) 跟我们使用的手机一样,路由器也需要及时更新换代,否则硬件跟不上了,再高的宽带也带不来流畅的网速。其中传输协议对于路

    2024年04月24日
    浏览(36)
  • arm linux应用程序crash分析一般方法

    linux的应用程序app开发过程中,出现一些应用程序的崩溃是比较常见的事情,根据不同的场景,往往有可以分成两类: 1.开发环境下,解决应用程序的崩溃往往有很多的方法,常规的例如:上下文看代码逻辑,版本回退缩代码bug范围,不同版本横向对比,printf打印跟踪代码运行

    2024年04月08日
    浏览(39)
  • kafka消费、生产性能问题分析及优化方法

    问题分析:将代码逻辑注释掉,直进行拉取数据操作,性能应为每分钟产生消息的2倍以上

    2024年02月07日
    浏览(52)
  • Linux性能分析工具perf和火焰图使用方法

    perf是linux上的性能分析工具,perf可以对event进行统计得到event的发生次数,或者对event进行采样,得到每次event发生时的相关数据(cpu、进程id、运行栈等),利用这些数据来对程序性能进行分析。 perf可以统计或采样的event有很多,如果我们要分析cpu,那么我们可以使用cpu-cycles、

    2024年01月16日
    浏览(61)
  • 【银行测试】金融项目+测试方法范围分析,功能/接口/性能/安全...

    1、金融行业软件特征分析 金融行业软件系统具有集中度高、规模庞大、数量多、系统之间关联性强、业务复杂、需求变化快等特点,如何有效可行的实现软件测试和软件质量控制,是对金融行业软件测试人员提出的基本要求。 1)金融行业软件的业务特点 以金融行业软件的

    2024年02月04日
    浏览(70)
  • ASEMI代理英飞凌TDK5100F射频模块的性能与应用分析

    编辑-Z 本文将对TDK5100F射频模块进行详细的介绍与分析,包括其性能特点、应用领域、使用方法。通过对这三个方面的阐述,希望能够帮助读者更好地了解TDK5100F射频模块的优势和应用场景。 1、TDK5100F射频模块的性能特点 TDK5100F射频模块是一款高性能的无线通信模块,具有以

    2024年02月08日
    浏览(43)
  • JVM逃逸分析原理解析:优化Java程序性能和内存利用效率

    在Java开发中,性能和内存利用效率一直是开发者关注的焦点。为了提高Java程序的执行效率,JVM引入了逃逸分析技术。本文将详细解析JVM逃逸分析的原理,帮助读者深入理解其工作机制。 逃逸分析是一种用于确定对象在方法的生命周期内是否逃逸出方法外部范围的技术。在

    2024年01月20日
    浏览(62)
  • 微服务应用性能分析实战07 数据可视化:多数据源让 Grafana 监控报警更高效

    这一讲我将带领你学习可视化监控套件 Grafana。Grafana 是一个开源的数据可视化的平台,所以它既不会监控应用,也不会产生监控数据,更不会对接原始数据进行分析存储。 它仅专注数据可视化本身 。 本节内容,会先通过与上一节 Kibana 可视化套件对比,来讲述 Grafana 的核心

    2024年02月05日
    浏览(49)
  • Go语言入门记录:从channel的池应用、sync的Pool、benchmark、反射reflect、json处理、http、性能分析和一些编程习惯

    channel的一对一会阻塞,添加buffer不会阻塞。 buffered Channel实现对象池。 sync.Pool 的介绍。 获取时先去私有对象中获取,如果不存在就在相同Processor中的共享池中获取,如果还没有,则去其他Processor中去获取。 存放时,如果私有对象不存在,就放在私有对象中,如果存在就放在

    2024年02月10日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包