- 博客(13)
- 收藏
- 关注
原创 生产环境OSS使用不当引发OOM造成CPU100%问题
将导出的dump文件导入MAT(MemoryAnalyzer)中进行分析,打开后软件提示存在内存泄漏,点开后可发现PoolingHttpClientConnectionManager 这个对象是被一个数组对象引用着的,数组内对象数量多达38万,占据了总内存的96%结合查询业务错误日志,可以断定是内存溢出,导致GC线程在不停进行垃圾回收,但又始终回收不了内存,cpu自然而然就上去下不来了。,打开源码可以看到,该类中确实存在一个静态的数组对象,并且提供了方法去往数组中添加。从MAT中可以看到,最终的对象是。
2023-12-05 10:04:29
1354
原创 Hutool、Forest附件上传xlsx类型文件异常
类的 buildBody 方法中进入各自实现类中,最终都会定位到相同的代码去获取MIME类型总结:hutool和Forest工具类,在上传附件时,文件的MIME类型都是通过jdk自带的contentType的映射文件来获取的。
2023-11-15 16:09:34
641
原创 修改POI源码,优化百万级大数据量Excel导出
一、问题背景 最近在做项目大数据量Excel导出时,有前端反馈响应速度很慢,基本表现为前端页面触发请求之后,过了很长时间才会在浏览器页面弹出下载文件的窗口,而且响应时间会随着数据量的递增成正比。注:目前项目中涉及Excel导出相关的基本都是使用阿里的EasyExcel,而可以了解到的是,目前主流开源的excel导出的第三方工具其底层均是基于POI这一开源框架上所做的一些API功能集成,简化操作,可以让开发人员不需要关注底层POI的操作。二、定位问题 List&l...
2020-12-01 21:04:23
2052
1
原创 Mysql-列转行(字段中多个值转换为多行)
1、借助一张id自增的mysql表,自增id为1开始,并使得存储的id值尽可能大于字段里存的值个数2、拼写sqlt_auto_id 表中 id最小值为1:SELECTSUBSTRING_INDEX( SUBSTRING_INDEX( a.scene, ',', b.id ), ',', - 1 ) AS sceneFROM`t_organization` AS aJOIN t_auto_id AS b ON b.id <= ( length( a.scene ) - length
2020-11-16 11:37:21
2392
3
原创 Datax-HdfsWriter如何实现支持Map,List,Set等符合类型数据写入
一、问题背景 之前分析hdfswriter时,看到过api支持map,list,set类型的数据写入,因此,想将其合入到datax里,使得源数据端有类似json,array等这种数据可以直接导入到hive中。二. 环境准备Datax版本:3.0Hadoop版本:2.7.3Hive版本:2.3.2三. 源码 hdfs写入时,最重要的是获取字段对应类型的ObjectInspector,因此直接从ObjectInspectorFactory类入手看:Obje...
2020-09-24 17:55:32
796
原创 Datax-Hdfs如何实现支持binary类型数据读写
一、问题背景 主要的源码思路还是按照这篇HdfsWriter如何实现支持decimal类型数据写入来,这里不再介绍。上篇说binary类型写入和读取会有坑,因此这篇主要解释一下坑的地方以及解决的办法。PS:虽说binary类型的字段写入Hive,本人没有想到对于数据仓库建设使用上有什么用处,但是本着好奇、学习的心态,就去研究了一下并集成到datax内。开头附上github地址。二. 环境准备Datax版本:3.0Hadoop版本:2.7.3Hive版本:2.3.2三...
2020-09-18 15:04:30
1350
原创 Datax-HdfsWriter如何实现支持decimal类型数据写入
一、问题背景在做Datax数据同步时,发现源端binary类型的数据无法写入hive端binary类型的字段。看了一下官网文档,DataX HdfsWriter 插件文档,发现是1年前的,不信邪,自己看源码找原因。二. 集群环境Datax版本:3.0三. Datax日志...
2020-09-18 03:33:23
3667
5
原创 SpringBoot整合Activiti7
一、背景 因工作需要,公司需要建设一个类似工单系统,想借助activiti工作流引擎来进行实现,但目前网上Spring Boot与Activiti7整合的例子都不是特别全,大多都是Activiti6居多,借工作之余学习记录一下。二、环境搭建 一开始我选择的Activiti7最新的版本 7.1.0.M6,从7版本开始,activiti开始精简了原先的旧版本的一些接口,将原先的接口方法整合了security做权限验证出了新的接口api,新的api基本在xx-runtime包中...
2020-08-26 21:04:18
2550
1
原创 DataX-Mysql主键UUID类型切分主键
一、问题背景之前公司在使用datax时,需要从rds同步数据到hive,但是数据库中的主键id是uuid类型的字符串,使用datax默认的字符串分隔方式,其实会有很大的问题,所以官方也不推荐使用。二. 分析源码跟踪底层源码最终可以定位到这个RangeSplitUtil类上public static String[] doAsciiStringSplit(String left, String right, int expectSliceNumber) { int radix
2020-08-05 23:02:36
4473
5
原创 RMI原理浅析以及调用流程
一、定义RMI: 远程方法调用(Remote Method Invocation),它支持存储于不同地址空间的程序级对象之间彼此进行通信,实现远程对象之间的无缝远程调用。Java RMI: 用于不同虚拟机之间的通信,这些虚拟机可以在不同的主机上、也可以在同一个主机上;一个虚拟机中的对象调用另一个虚拟上中的对象的方法,只不过是允许被远程调用的对象要通过一些标志加以标识,底层是通过Socket通...
2020-04-18 22:28:54
1569
原创 Datax-Mysql同步至Hive时时区问题导致日期减少一天
一、问题背景Datax从Mysql数据库到Hive数据同步任务时,发现同步时,date类型字段同步到Hive里中string类型字段时,部分日期会减少一天。二、集群环境Datax版本:3.0三、现象描述mysql数据库时间 Hive数据库中时间 1986-07-17 1986-07-16 1987-06-26 1987-06-25 1987-12-...
2019-10-21 12:08:42
4182
原创 ElasticSearch-delete_by_query大数据量删除时,导致SocketTimeout的问题
一、问题背景最近在做ES清空指定index下的指定type类型数据时,发现在大数据量情况下删除的时候会比较慢,会超过自己设定的socketTimeout时间,需要提升性能。二、集群环境ElasticSearch版本: 阿里云 5.5.3删除的数据量大小:7000w三、原始日志可以看到日志打印时间从13:44:11-14:14:16,删除30分钟后,程序抛出sockect...
2019-10-10 20:49:30
9980
10
原创 记一次DataX-MysqlReader性能优化
一、问题背景最近在做Datax从阿里云rds数据库到Hive数据同步任务时,发现同步耗时很久,500万的数据同步配置了splitPk并配置了50个线程并发需要212s,任务同步的平均速率一直保持在3-4M/s,而本地的Mysql测试数据库同步时不分片的平均速率就能到20M/s。二. 集群环境Rds环境:8000iops; 8core; 16g内存分片字段类型:bigint类...
2019-09-12 11:31:20
11292
13
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人