1、调整JVM大小

linux文件路径:data-integration/spoon.sh

windows路径:

-Xms1024m:设置JVM初始内存为1024m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。

-Xmx2048m:设置JVM最大可用内存为2048M。

-Xmn2g:设置年轻代大小为2G。整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。

-Xss128k:设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。

垃圾回收器:如使用G1垃圾回收器

export PENTAHO_DI_JAVA_OPTIONS="-Xms512m -Xmx1024m -XX:+UseG1GC -Dfile.encoding=UTF-8"

2、 调整提交(Commit)记录数大小

Kettle默认Commit数量为:1000,可以根据具体场景数据量大小来设置Commitsize:1000~50000

可以单个步骤进行设置,也可以通过kettle.properties 属性文件进行自定义参数设置。

批量提交的步骤中可以${batch_commit_size} 进行引用。

3、使用数据库连接池

尽量使用数据库连接池,因为频繁建立&断开连接比较耗费时间。

4、合理设置行集大小

行集在Kettle中的作用包括:传递数据、缓存数据、临时存储数据、分批处理数据等。通过合理使用行集,可以实现数据的有效管理和处理,提高数据处理的效率和质量。

双击画布-》杂项-〉记录集合里的记录数进行设置,也可以在kettle.properties属性文件中添加全局参数KETTLE_TRANS_ROWSET_SIZE进行设置。

5、设计kettle流程时尽可能少的使用Kettle步骤,因为kettle步骤之间是有行集缓存的,步骤使用的越多,缓存也就越多,步骤间复制拷贝的次数也就越多。

6、根据业务场景,尽可能采用增量同步,而不是全量同步。全量同步时清空数据时采用truncate方式而不是delete方式。

7、可以使用sql来做的一些操作尽量用sql;Group , merge , stream lookup,split field这些操作都是比较慢的,想办法避免他们,能用sql就用sql。

8、插入大量数据的时候尽量把索引删掉,这个具体要根据业务场景,有的是不能删索引的,会影响业务系统使用。

9、尽量避免使用update , delete操作,尤其是update,如果可以把update变成先delete, 后insert。

11、合理使用数据库索引。

10、合理设置日志级别

行集日志的性能会严重下降,通常情况下可以设置为基本日志,生产环境推荐设置错误日志。

也可以通过如下方式进行设置:

cd /xxx/data-integration && sh kitchen.sh -rep=local -job=xxx_job -dir=/ -level=Error -carte=http://ip:port/cart -exec

或者

curl -X POST -H "Authorization: Basic YWRtaW46UEBzc3cwcmQyMDIz" -H "Content-Type: application/x-www-form-urlencoded" --data "rep=local&job=xxx_job&level=Basic" http://ip:port/kettle/executeJob/ &

11、设置改变开始复制的数量

此配置可以提高性能,类似于java等语言中的多线程,如下图所示:

填写3,点击确定如下图:

注意:前置步骤一定要调整数据发送策略(有Round-Robin和复制发送模式两种,自己根据自己业务场景进行选择),如下图

12、可以通过spoon客户端和carte服务器排查kettle哪些步骤存在性能问题,如下图所示

重点观察每个步骤的input和output以及处理的speed找出性能瓶颈,然后进行调优。

小伙伴们还有哪种调优方式,欢迎留言讨论

Kettle调优教程(推荐收藏)的更多相关文章

  1. 推荐收藏系列:一文理解JVM虚拟机(内存、垃圾回收、性能优化)解决面试中遇到问题(图解版)

    欢迎一起学习 <提升能力,涨薪可待篇> <面试知识,工作可待篇 > <实战演练,拒绝996篇 > 欢迎关注我博客 也欢迎关注公 众 号[Ccww笔记],原创技术文章 ...

  2. 推荐收藏:100道Linux笔试题,能拿90分以上的都去了BAT

    本套笔试题共100题,每题1分,共100分.(参考答案在文章末尾) 1. cron 后台常驻程序 (daemon) 用于: A. 负责文件在网络中的共享 B. 管理打印子系统 C. 跟踪管理系统信息和 ...

  3. 跨平台APP推荐收藏

    时间:2019-04-11 整理:pangYuaner 标题:十大跨平台优秀软件 地址:https://www.cnblogs.com/the-king-of-cnblogs/p/3154758.ht ...

  4. JS鼠标事件大全 推荐收藏

    一般事件 事件 浏览器支持 描述 onClick HTML: 2 | 3 | 3.2 | 4 Browser: IE3 | N2 | O3 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击 onDb ...

  5. GitHub 上一份很受欢迎的前端代码优化指南-强烈推荐收藏

    看到一份很受欢迎的前端代码指南,根据自己的理解进行了翻译,但能力有限,对一些JS代码理解不了,如有错误,望斧正. HTML 语义化标签 HTML5 提供了很多语义化元素,更好地帮助描述内容.希望你能从 ...

  6. SpringBoot 全配置(推荐收藏)

    # =================================================================== # COMMON SPRING BOOT PROPERTIE ...

  7. 感受lambda之美,推荐收藏,需要时查阅

    一.引言二.java重要的函数式接口1.什么是函数式接口1.1 java8自带的常用函数式接口.1.2 惰性求值与及早求值2.常用的流2.1 collect(Collectors.toList())2 ...

  8. bat 截取字符串(for命令) 推荐收藏

    摘自:http://www.jb51.net/article/50354.htm 今天需要用批处理命令处理文件夹中的文件,需要用到bat中的for命令以及字符串截取的一些命令.在上面的链接中找到许多有 ...

  9. github上星星1万多的python教程推荐收藏

    简单的说,Python是一个“优雅”.“明确”.“简单”的编程语言. 学习曲线低,非专业人士也能上手 开源系统,拥有强大的生态圈 解释型语言,完美的平台可移植性 支持面向对象和函数式编程 能够通过调用 ...

  10. 推荐收藏 —— MySQL视图详细介绍

    前言:  在MySQL中,视图可能是我们最常用的数据库对象之一了.那么你知道视图和表的区别吗?你知道创建及使用视图要注意哪些点吗?可能很多人对视图只是一知半解,想详细了解视图的同学看过来哟,本篇文章会 ...

随机推荐

  1. 开篇:Mirth Connect系统集成与数据交换引擎

    Mirth最初的目的是作为HL7接口引擎('引擎'释意:IT方面的术语,指经包装过的函数库,方便别人调用:如搜索引擎.图形引擎.物理引擎等),HL7 v2.x和HL7 v3标准通常在医疗系统间用于系统 ...

  2. 力扣13(java)-罗马数字转整数(简单)

    题目: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1 ...

  3. 网易云音乐音视频算法的 Serverless 探索之路

    ​简介: 基于音视频算法服务化的经验,网易云音乐曲库团队与音视频算法团队一起协作,一起共建了网易云音乐音视频算法处理平台,为整个云音乐提供统一的音视频算法处理平台.本文将分享我们如何通过 Server ...

  4. [FE] Chrome Extension 五步曲

    1. Create the manifest.jsonOnly three fields is needed. { "name": "Getting Started Ex ...

  5. SQL server 查看脚本

    原文出处:http://blog.csdn.net/xiaochunyong/article/details/7455051 --Siuon --查看存储过程源码 create procedure m ...

  6. go高并发之路——缓存穿透、缓存雪崩

    缓存击穿.缓存穿透.缓存雪崩是使用Redis的三个经典问题,上篇文章讲了缓存击穿,今天就讲下剩下的两个问题. 一.缓存穿透 定义:缓存穿透是指查询一个根本不存在的数据,缓存层和DB层都不会命中.这样缓 ...

  7. GPU简介

    摘自:https://zhidao.baidu.com/question/1765722944085349980.html 其发起者和主导者是baiNVIDIA(英伟达)公司. 1999年,duNVI ...

  8. 使用docker 5分钟搭建一个博客(mysql+WordPress)

    目录 一.系统环境 二.前言 三.搭建博客 3.1 创建wordpress和mysql容器 3.2 在wordpress界面设置个人博客信息 3.3 WordPress容器创建命令的简化版本 一.系统 ...

  9. 基于 ESP8266_RTOS_SDK 驱动 HC-SR04

    平台 芯片 ESP8266EX 模组 ESP-12F 开发板 NodeMCU SDK ESP8266_RTOS_SDK branch master commit 83517ba1f5e26b9413f ...

  10. npm 淘宝镜像的安装

    方法一: 使用阿里定制的cnpm命令行工具代替默认的npm,输入以下代码 npm install -g cnpm --registry=https://registry.npm.taobao.org ...