- 博客(97)
- 收藏
- 关注
原创 数据库链接长时间无数据交互,发生线程阻塞情况
背景: 在执行双机房部署的时候,因为应用长时间未访问数据库,导致后面访问的数据库的线程都被挂起。 现象分析:Java代码 "Thread-74" daemon prio=10 tid=0x00007f1840044000 nid=0x387b runnable [0x00007f18bdb27000] java.lang.Thread.Sta...
2017-12-13 13:54:43
2700
原创 数据迁移方案及优化
1.迁移的流程 数据通过Ogg抽取Oracle增量数据到苏州flume集群在flume集群对数据脱敏同步数据到kafka集群在滨江数据拉取数据到hbase集群 优化(1)可扩展性保证没有单点性能问题,每个流程都是可扩展的。苏州flume集群,滨江kafka集群,滨江flume集群都是可以横行扩展的 (2)性能保证数据能够更快的迁移到苏州集群,原...
2016-05-17 18:59:46
887
原创 ElasticSearch 性能优化
GeTrace系统的所有搜索都是用ElasticSearch来做的,在使用ElasticSearch的过程中碰到了一些问题,这里记录一下。 一 . 在查找调用链的时候。整体数据量大(每天60G * 7 = 420G),但是结果集比较少(只有几百行)的时候,查询时间经常会超过1分钟,慢的甚至需要5,6分钟.优化1:经过深入测试发现,是因为batchSize设置过大(一开始设置为Int...
2016-01-29 13:22:28
278
原创 Neo4j批量插入性能优化
一. 原生的远程操作接口Neo4j原生的直接可用的插入方式有以下几种:1. Rest api执行Cypher语句 public boolean flush() { if (sqlCache.size() != 0) { long start = System.currentTimeMillis(); ...
2016-01-29 12:36:42
3921
1
原创 Least Activity LoadBalance配置
背景: 前段时间,发生了某个服务节点发生问题,被阻塞时,影响了整套系统的运行。期望在运行的时候,当某个节点发生问题的时候,上级服务可以调用另一个可以节点,不会影响整套系统。 分析:主要是不可用节点阻塞达30秒以上,我们使用的是random loadbalance的负载均衡策略。上级应用不断的调用不可用节点,导致被阻塞的调用越来越多,一直到报线程用完错误。 猜想可解决的...
2015-11-14 23:05:37
317
原创 Dubbo不能优雅停机,导致停止服务的时候,业务掉单
Dubbo 优雅停机修改方案 1. 服务端不能优雅停机的原因: NettyServer在构造函数中会调用ChannelHandlers.wrap(handler, ExecutorUtil.setThreadName(url, SERVER_THREAD_POOL_NAME))方法将handler进行包装,包装成MultiMessageHandler的一个对象。在...
2015-11-03 12:57:20
1254
原创 数据库链接长时间无数据交互,发生线程阻塞情况
背景: 在执行双机房部署的时候,因为应用长时间未访问数据库,导致后面访问的数据库的线程都被挂起。 现象分析:"Thread-74" daemon prio=10 tid=0x00007f1840044000 nid=0x387b runnable [0x00007f18bdb27000] java.lang.Thread.State: RUNNABLE ...
2015-11-03 12:06:21
1279
原创 Zookeeper故障总结
背景:10月29号,系统切换的时候,发生了master信息的变更,有个监听master信息的系统未收到zookeeper的通知。 分析:原代码如下所示, 监听系统中用以下代码来监听path中数据的变更。当数据发生变更的时候,会回调process方法,然后处理相应的业务。(我们使用的是curator的jar包) client = CuratorFrameworkFactory...
2015-11-01 19:55:54
1152
原创 Kafka的producer
producer示例代码 Producer producer = new kafka.javaapi.producer.Producer<Integer, String>(new ProducerConfig(props));String messageStr = new String("Message_" + messageNo);producer.send(ne...
2015-06-15 13:35:13
135
原创 Kafka的consumer
Consumer的使用示例代码//创建soncumer connector ConsumerConnector consumer = kafka.consumer.Consumer.createJavaConsumerConnector( createConsumerConfig()); Map<String, Integer> t...
2015-06-14 17:37:23
447
原创 Kafka启动的流程
调用KafkaServer的startup方法启动kafka /** * Start up API for bringing up a single instance of the Kafka server. * Instantiates the LogManager, the SocketServer and the request handlers - KafkaReq...
2015-06-14 17:30:13
818
原创 Netty ByteBuf的使用
Netty的ByteBuf主要用于网络传输,有读写两个index。 * +-------------------+------------------+------------------+ * | discardable bytes | readable bytes | writable bytes | * | ...
2015-04-06 17:33:57
498
原创 ByteBuffer深入学习
背景 最近在研究netty的源代码,发现netty的内存管理都是用jdk的ByteBuffer。为了更深入的了解bytebuffer,因此有了这篇文章 ByteBuffer的基本组成ByteBuffer 的基本函数http://kakajw.iteye.com/blog/1797073ByteBuffer分为两类DirectBuffer和HeapBuffer。Direc...
2015-04-04 20:13:45
322
原创 Spring事务配置
Spring事务配置的五种方式: http://blog.youkuaiyun.com/hjm4702192/article/details/17277669源代码分析:TransactionManager中定义了getTransaction,commit,rollback方法。用于在事务失败或成功的时候提交或者回滚TransactonTemplate的exectue方法:当调用execut...
2014-09-09 09:19:08
95
原创 concurrent- ConcurrentLinkedQueue
ConcurrentLinkedQueue使用了Unsafe的cas机制保证了线程的安全,用peek方法为例 public class ConcurrentLinkedQueue<E> extends AbstractQueue<E> implements Queue<E>, java.io.Serializable { pr...
2014-08-16 19:28:29
132
原创 Java内容的复习-Performance 调优
1. CPU2. Memory3. Disk4. IO5. JVMhttp://blog.chinaunix.net/uid-24020646-id-1992032.html
2014-08-16 19:27:22
135
原创 Java内容的复习-大数据
SparkSpark streaming和storm的区别是(两者都是分布式流处理框架)http://www.jdon.com/46591 :1.Spark支持保持状态2.Spark有数据平滑窗口(sliding window),而后者需要自己去维护这个窗口3.Spark是需要到一个duration才开始处理数据,storm是实时处理数据,有数据就处理。Storm只有秒内的延迟...
2014-08-16 19:20:28
145
原创 Java内容的复习-Spring和hibernate
Springhttp://www.cnblogs.com/linjiqin/p/3573151.htmlhttp://wenku.baidu.com/link?url=TstWbtOELC5Y0fNfmYJr4T3Dghz0IIcXehCiWxE9NvfVlIs6UT5q6eqCczzcKIMz2pFk2GiL4obU_nOdHAtrm4jQAKUKmR3m9XhE82Z6Ipeh...
2014-08-16 19:17:20
114
原创 Java内容的复习-OI项目面试
OIOI是一个告警系统。用flume收集OC client上传的数据,然后传到spark,spark再对数据进行分析,生成一些metrics键值对,然后发到graphite做显示,seyren定期去graphite查询metrics键值对,当某个metrics超过伐值的时候报警给分析人员,分析人员再对相应的日志进行分析,找出异常的原因。 拓扑框架:Performance调优环境...
2014-08-12 21:48:58
256
原创 Java内容的复习-lock和condition的使用
以前遇到一个面试题,一些农民往桶里放苹果,一些农民往桶里面拿苹果,当桶达到1000个苹果的时候不能再放了,当桶的个数少于5个的时候不能再拿了。这个例子用lock和condition可以很好的解决。condition有await方法和signal方法,当调用await方法的时候,会释放当前的锁,然后将当前线程放到condition的等待队列中。当调用signal方法时,会调用将condition...
2014-08-10 15:23:36
156
原创 Java内容的复习-TCP/IP协议笔记
网络分层:应用层 telnet ftp http 传输层 TCP和UDP 网络层 IP ICMP IGMP数据链路层 设备驱动程序和接口卡 1.链路层链路层主要有三个目的:(1)为I P模块发送和 接收I P数据报;(2 )为A R P模块发送A R P请求和接收A R P应答;(3 )为R A R P 发送R A R P请 ...
2014-08-08 00:21:42
160
原创 Java内容的复习-数据库
为了将Oracle迁移到MySQL,过程中需要做增量数据的记录。因此想了几种方案:1. 如果表后面有modifydate这个字段的话,就可以按照这个字段来迁移表,将在dump时间之后修改的数据做迁移2.在需要做增量迁移的表上建trigger,将insert,update,delete的操作记录下来。3.用oracle自带的audit trail功能来做(不适合,表格式不对,多表关联...
2014-08-03 12:44:18
104
原创 Java内容的复习-网络IO
系统I/O 可分为阻塞型(BIO), 非阻塞同步型(NIO)以及非阻塞异步型(AIO). 阻塞型I/O(BIO)意味着控制权只到调用操作结束了才会回到调用者手里. 结果调用者被阻塞了, 这段时间了做不了任何其它事情. 更郁闷的是,在等待IO结果的时间里,调用者所在线程此时无法腾出手来去响应其它的请求,这真是太浪费资源了。拿read()操作来说吧, 调用此函数的代码会一直僵在此处直至它所...
2014-08-03 12:41:26
115
原创 Java内容的复习-数据结构
HashMap 非线程安全 http://frankfan915.iteye.com/admin/blogs/1151971 HashSet 非线程安全,可以存放不相同的数值,用HashMap来存储数据,当调用Put(A)时,其实是调用了HashMap的put(A,CONSTANT)方法。http://frankfan915.iteye.com/admin/blogs/115...
2014-08-03 12:39:40
176
原创 Java内容的复习-其它知识
ClassLoader JVM自带的类加载器可以分为三类:Boot Start ClassLoader,Ext ClassLoader, App ClassLoader. Java类的加载是通过父类依赖来加载的,如果App ClassLoader加载返回 null,则调用Ext ClassLoader加载类,如果Ext不能加载,则调用Boot Start加载。我们可以自定义ClassLoade...
2014-08-03 12:29:23
88
原创 Java内容的复习-线程同步
Unsafe有点类似于反射, 但Unsafe速度快于反射,通过Unsafe可以拿到某个成员变量相对于类的偏移量,然后再按照偏移量拿到某个对象的这个成员变量的值 。很多锁的同步底层都是用Unsafe做的。如Unsafe的CAShttp://frankfan915.iteye.com/admin/blogs/1153726 ReentrantLock...
2014-08-03 12:26:41
99
原创 项目整理-一般Java项目
Policy Analysis项目的框架:Mysql和Derby做数据的存储,FreeMarker做web页面表单的验证,Guava缓存器做policy的缓存,groovy让用户扩展验证逻辑项目的难点:下载任务并发的处理,日志的分发,并行处理遇到的问题:因为一个用户一天日志下载的时间比较长,需要高效的划分下载的任务。将用户的日志按照天下载,那样已经下载的日志就可以不用重新下载。...
2014-07-29 22:20:18
160
原创 项目整理-大数据分析项目
有大半年时间在做大数据分析,主要产品为OI。OI 用到了flume,spark,graphite。学习了大数据的开发。优点:flume,spark源代码的学习,performance调优 OI项目的框架:用flume做数据收集,spark做数据分析,graphite做数据显示,seyren做告警系统项目的难点:spark和flume的框架的学习,performance的...
2014-07-29 15:20:45
404
原创 Zookeeper 源码分析-leader选举
选举的算法可以参考:http://blog.youkuaiyun.com/xhh198781/article/details/10949697 假设配置中有两个serverserver.1=localhost:2888:3888server.2=localhost:2889:3888 由前文可以,zookeeper在选举leader之前会先调用下面的代码,首先设置currentVo...
2014-07-17 16:48:22
1271
原创 Zookeeper 源码分析-启动
本文主要介绍了zookeeper启动的过程 运行zkServer.sh start命令可以启动zookeeper。入口的main函数在类中QuorumPeerMain。 main函数主要调用了runFromConfig函数,创建了QuorumPeer对象,并且调用了start函数,从而启动了zookeeper。public class QuorumPeerMain...
2014-07-15 16:55:21
114
原创 flume源码分析-Sink
Sink 将从channel接收event,然后将event发往目标地址。 /**** A simple sink which reads events from a channel and writes them to HBase.* This Sink uses an aysnchronous API internally and is likely to* per...
2014-07-14 17:01:45
287
原创 flume源码分析-SinkProcessor
flume包括三种sink processor,DefaultSinkProcessor,FailoverSinkProcessor,LoadBalancingSinkProcessor Default sink processor that only accepts a single sink, passing on process results without any additi...
2014-07-14 15:28:13
462
原创 flume源码分析-ChannelSelector
flume自带两种channelSelector。一种是MultiplexingChannelSelector,另一种是ReplicatingChannelSelector。 ReplicatingChannelSelector是将event发送到每个channelpublic class ReplicatingChannelSelector extends AbstractChan...
2014-07-14 14:22:47
877
原创 flume源码分析-channel
Channel 相当于一个管道,source写数据到channel中,sink从channel取数据。Channel有三类,memory,file,jdbc。memory速度最快,但是当机器宕机的时候数据会丢失,file数据不会丢失,jdbc速度最慢,一般选择fileChannel。 Source 中会调用ChannelProcessor的processEvent方法处理Log事件。...
2014-06-08 20:26:42
324
原创 flume源码分析-source
flume的source用于收集日志,父类为AbstractSource,下图中的其他类都继承于AbstractSource AvroSource lifecycleAware 会调用start方法启动avroSource。avroSource主要启动了一个NettyServer用于接收数据,然后交由avroSource处理。 @Override public...
2014-05-26 10:19:45
557
原创 flume源码分析
flume是一个高可靠性的分布式的大文件收集系统。它提供了transaction来保证数据不会丢失。flume官网:http://flume.apache.org/Flume文档:http://flume.apache.org/FlumeUserGuide.html,http://flume.apache.org/FlumeDeveloperGuide.html 安装:从官网下...
2014-05-23 15:04:34
85
原创 Zookeeper 学习
现在有事件可以学习一下zookeeper。link:http://www.blogjava.net/BucketLi/archive/2010/12/21/341268.html 这个链接主要讲了zookeeper的安装部署以及zookeeper的应用场景,zookeeper中znood的管理。 zookeeper的应用场景有:1. 配置信息的管理和同步(spark中用zooke...
2014-05-23 14:43:25
114
原创 Spark源码分析13-Tuning Spark
We can refer to the link http://spark.incubator.apache.org/docs/latest/tuning.html for detail tuning document. After tuning, spark can process 200M logs every minutes in one single work ...
2014-05-15 17:48:37
96
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人