- 浏览: 354704 次
- 性别:
- 来自: 杭州
最新评论
-
无红墙:
另一种修改,请参考:https://github.com/ta ...
Dubbo不能优雅停机,导致停止服务的时候,业务掉单 -
fish_no7:
if (handler instanceof WrappedC ...
Dubbo不能优雅停机,导致停止服务的时候,业务掉单 -
frankfan915:
lizhou828 写道怎么解决?设置NetTimeoutFo ...
Communications link failure错误分析 -
lizhou828:
怎么解决?
Communications link failure错误分析 -
frankfan915:
ileson 写道 解决办法sh设置NetTimeoutFo ...
Communications link failure错误分析
文章列表
背景:
在执行双机房部署的时候,因为应用长时间未访问数据库,导致后面访问的数据库的线程都被挂起。
现象分析:
Java代码
"Thread-74" daemon prio=10 tid=0x00007f1840044000 nid=0x387b runnable [0x00007f18bdb27000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
...
1.迁移的流程
数据通过Ogg抽取Oracle增量数据到苏州flume集群
在flume集群对数据脱敏
同步数据到kafka集群
在滨江数据拉取数据到hbase集群
优化
(1)可扩展性
保证没有单点性能问题,每个流程都是可扩展的。苏州flume集群,滨江kafka集群,滨江flume
GeTrace系统的所有搜索都是用ElasticSearch来做的,在使用ElasticSearch的过程中碰到了一些问题,这里记录一下。
一 . 在查找调用链的时候。整体数据量大(每天60G * 7 = 420G),但是结果集比较少(只有几百行)的时候,查询时间经 ...
Neo4j批量插入性能优化
- 博客分类:
- Neo4j
一. 原生的远程操作接口
Neo4j原生的直接可用的插入方式有以下几种:
1. Rest api执行Cypher语句
public boolean flush() {
if (sqlCache.size() != 0) {
long start = System.currentTimeMillis();
restAPI.executeBatch(new Process(sqlCache));
logger.info("Size:{},cost:{}ms" ...
背景:
前段时间,发生了某个服务节点发生问题,被阻塞时,影响了整套系统的运行。期望在运行的时候,当某个节点发生问题的时候,上级服务可以调用另一个可以节点,不会影响整套系统。
分析:
主要是不可用节点阻塞达30秒以上,我们使用的是random loadbalance的负载均衡策略。上级应用不断的调用不可用节点,导致被阻塞的调用越来越多,一直到报线程用完错误。
猜想可解决的方案:
1. 对于一些耗时少的服务,上级应用应该设置比较短的timeout时间,然后设置retry为下级节点数,这样就可以无失败次数
2.对于耗时长的服务,上级应用需要设置长的timeout时 ...
Dubbo 优雅停机修改方案
1. 服务端不能优雅停机的原因:
NettyServer在构造函数中会调用
ChannelHandlers.wrap(handler, ExecutorUtil.setThreadName(url, SERVER_THREAD_POOL_NAME))
方法将handler进行包装,包装成MultiMessageHandler的一个对象。在下面红色代码中会判断handler是否是WrappedChannelHandler对象,只有是的时候才会对executor对象复值。因为MultiMessageHandler对象不是WrappedCha ...
背景:
在执行双机房部署的时候,因为应用长时间未访问数据库,导致后面访问的数据库的线程都被挂起。
现象分析:
"Thread-74" daemon prio=10 tid=0x00007f1840044000 nid=0x387b runnable [0x00007f18bdb27000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputS ...
Zookeeper故障总结
- 博客分类:
- Zookeeper
背景:
10月29号,系统切换的时候,发生了master信息的变更,有个监听master信息的系统未收到zookeeper的通知。
分析:
原代码如下所示, 监听系统中用以下代码来监听path中数据的变更。当数据发生变更的时候,会回调process方法,然后处理相应的业务。(我们使用的是curator的jar包)
client = CuratorFrameworkFactory.newClient("*:2181", new ExponentialBackoffRetry(1000, 3));
client.start();
try {
...
Kafka的producer
- 博客分类:
- Kafka
producer示例代码
Producer producer = new kafka.javaapi.producer.Producer<Integer, String>(new ProducerConfig(props));
String messageStr = new String("Message_" + messageNo);
producer.send(new KeyedMessage<Integer, String>(topic, messageStr));
producer可以支持异步发送和同步发送两种方式
...
Kafka的consumer
- 博客分类:
- Kafka
Consumer的使用示例代码
//创建soncumer connector
ConsumerConnector consumer = kafka.consumer.Consumer.createJavaConsumerConnector(
createConsumerConfig());
Map<String, Integer> topicCountMap = new HashMap<String, Integer>();
//设置topic和监控份数 ...
Kafka启动的流程
- 博客分类:
- 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 - KafkaRequestHandlers
*/
def startup() {
try {
info("starting")
brokerStat ...
Netty ByteBuf的使用
- 博客分类:
- netty
Netty的ByteBuf主要用于网络传输,有读写两个index。
* +-------------------+------------------+------------------+
* | discardable bytes | readable bytes | writable bytes |
* | | (CONTENT) | |
* +-------------------+------------------+---------- ...
ByteBuffer深入学习
- 博客分类:
- netty
背景
最近在研究netty的源代码,发现netty的内存管理都是用jdk的ByteBuffer。为了更深入的了解bytebuffer,因此有了这篇文章
ByteBuffer的基本组成
ByteBuffer 的基本函数http://kakajw.iteye.com/blog/1797073
ByteBuffer分为两类DirectBuffer和HeapBuffer。DirectBuffer速度快于HeapBuffer。DirectBuffer可以直接将数据输出到终端,避免内存拷贝。DirectBuffer的分配开销大于HeapBuffer。但是DirectBuffer不用G ...
Spring事务配置
- 博客分类:
- Spring
Spring事务配置的五种方式: http://blog.csdn.net/hjm4702192/article/details/17277669
源代码分析:
TransactionManager中定义了getTransaction,commit,rollback方法。用于在事务失败或成功的时候提交或者回滚
TransactonTemplate的exectue方法:
当调用execute方法的时候,会先判断为CallbackPreferringPlatformTransactionManager(CallbackPreferringPlatformTransactionManager ...
ConcurrentLinkedQueue使用了Unsafe的cas机制保证了线程的安全,用peek方法为例
public class ConcurrentLinkedQueue<E> extends AbstractQueue<E>
implements Queue<E>, java.io.Serializable {
private static final sun.misc.Unsafe UNSAFE;
private transient volatile Node<E> head;
pr ...