性能计数器 - Go语言中文社区

性能计数器


所有组件都有计数器用来记录运行时各方面的数值,比如Integration Service会追踪记录每个组件的input rows, output rows以及error rows的数量,并将这些数字记在计数器里。其中,一些组件的计数器是跟性能相关的,专门用来记录性能有关的数字信息。如下列的计数器,可通过查看它们来确定性能瓶颈并达到性能优化的目的


1) Errorrows计数器
  记录error记录条数,需查看如下计数器来分析原因
  Transformation_errorrows

  当有数据流有大量Error rows时,会影响到性能
  具体请参照:排除Transformation Errors

2) Readfromcache和Writetocache计数器
  记录缓存读写记录条数
  当session包含Aggregator, Rank, 和Joiner组件时,需查看如下计数器来分析原因
    Transformation_readfromcache
    Transformation_writetocache
    Transformation_readfromdisk
    Transformation_writetodisk

  可以在session运行时,通过在monitor里查看运行session的log来查看细节

  查看磁盘访问时,需要计算"缓存命中率"和"缓存丢失率"
    缓存命中率计算公式:[(# of reads from disk) + (# of writes to disk)]/[(# of reads from memory cache) + (# of writes to memory cache)]
    缓存丢失率计算公式:[1 - 缓存命中率]

  因此最小化磁盘读写,最大化缓存读写可以最大限度的提升性能,其中缓存命中率为1是最理想的情况

3) Readfromdisk和Writetodisk计数器
  记录磁盘读写记录的条数
  当session包含Aggregator, Rank, 和Joiner组件时,需查看如下计数器来分析原因
    Transformation_readfromdisk
    Transformation_writetodisk

  可在session运行时,通过monitor查看session运行log的细节

  如果这两个计数器的值都大于0,说明缓存小,可通过调高缓存大小提升性能

  关于缓存,包括index cache和data cache
  其中index cache是存储的group信息的,data cache存储的是组件转换后的数据
  两个缓存都可以提升性能,但由于组件转换后的数据量往往是非常大的,因此data cache需调高的要比index cache多
  但若处理的数据量超过可用内存时,可调高index cache提升性能

  如果session中的Aggregator是不断累积增长的,Integration Service会不断的从磁盘读写历史Aggregated数据,
  则下面的计数器值会大于零
    Aggregator_readtodisk
    Aggregator_writetodisk
  如果预先就知道大体的数据量时,可将缓存调整为合适的大小,因为缓存过大或过小都会有性能上的损失

4) Rowsinlookupcache计数器
  当session中包含多个lookup组件时,可能会降低性能
  若lookup表很大时,可通过优化lookup expressions来提高效率
  具体请参照:Optimizing Lookup Transformations

版权声明:本文来源博客园,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://www.cnblogs.com/shiliye/p/10536408.html
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2019-11-10 15:21:33
  • 阅读 ( 1938 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

推荐文章

猜你喜欢