`
iwinit
  • 浏览: 454792 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论
文章列表
某一天想查看某个应用里的hsf活跃线程数(工作线程)。 第一个想到的jstack,根据jstack打出的日志分析。 典型日志: "HSFBizProcessor-thread-6"prio=10 tid=0x00002aaabdffd800 nid=0x201f runnable [0x000000004768e000] java.lang.Thread.State: RUNNABLE at java.lang.Class.getEnclosingMethod0(Native Method) at java.lang.Cl ...
  大名鼎鼎的Zookeeper是解决分布式问题的神器。小编最近简单阅读了代码,分享一下。有不对之处,还请大家指出。 整篇文章将分多个系列完成,因为涉及点比较多,很难在一片文章内搞定。关于zookeeper的使用场景,大家参考http://rdc.taobao.com/team/jm/archives/1232。api使用参考官网手http://zookeeper.apache.org/doc/trunk/。这里以最新的zookeeper3.4.5为例。 这个系列的第一篇来说说zookeeper server端的启动,以单机为例,分布式zookeeper将在后续专门分析。 单机版启动类Z ...
最近小弟要分析一些gc数据,同时要分析几台机器的gc日志,主要统计每天数据:minor gc次数,最大运行时间,最小运行时间,平均运行时间,minor gc引起的总的stop world时间,major gc次数,major gc引起的总的stop world时间。   原始数据: 2012-10-25T13:00:22.244+0800:234273.762: [GC 234273.762: [ParNew: 1418872K->53180K(1501888K), 0.0337000secs] 3512438K->2148338K(4057792K), 0.0340 ...
      处理流程: 1.       在web容器启动时,通过SphFilter启动降级线程,初始化整个Sph框架。 Web.xml配置: <filter> <filter-name>SphFilter</filter-name> <display-name>SphFilter</display-name> <filter-clas ...
在我们应用经常需要统计一些计数,比如调用次数等。典型代码如下: Keys keys = newKeys("XXX","doSomething"); MonitorLog.addStat(keys, System.currentTimeMillis()-begin, 1L);       在监控系统的页面上就能看到准实时 ...
  各位好,最近小弟接到一个需求,需要dump数据从云梯(淘宝的hadoop环境)到TAIR(淘宝的缓存系统)。 原先的大概设计: 先从云梯原始表分析出部分数据,再用Datax(数据同步工具)将这些数据导入mysql单表,再起一个单机多线程任务跑(这里需要8个多小时)。 我的一个简单想法,既然数据在云梯上,为什么不直接在云梯上直接跑MapReduce任务呢?然后我就开始这么干了。。。    1.由于原始表在hive环境中,大概20亿条记录,而我感兴趣的只是其中部分数据。所以先用hivesql过滤数据,sql如下:   set mapred.reduce.tasks=45;/ ...
在双11之前,做了一些UMP GC优化的事情,和大家分享下问题查找和优化的思路。 一.   一些GC基础知识 1.      大部分jvm都有分代的概念,堆被分成2个部分,一个Young区,一个old区 2.      -Xmx设置堆的最大值,-Xmn设置young区的大小,减一下就是old区的大小 3.      Young区又分为Eden,survivor(s0,s1,大小通过SuvivorRatio指定)区,新生对象一般都在eden区分配,Hotspot为了优化对象创建的效率,给每个线程默认分配了部分内存TLAB,线程先在自己的TLAB空间创建对象,如果不够则去eden区分配。 ...
  前两篇文章为大家带来了HSF容器启动和Porvider的分享。这篇来分析下consumer端的运行机制。 一. Consumer的启动 1.     服务代理 在HSFSpringConsumer的启动中会返回一个HSFServiceProxy的jdk动态代理,后续调用其实都是通过这个代理类来实现的。 InvocationHandler handler = newHSFServiceProxy(metadata); Object proxyObj =Proxy.newProxyInstance(getClass().getClassLoader(), new ...
  上篇文章,简单介绍了HSF框架的初始化。这一篇,小编将为大家带来HSF provider的启动和服务细节。主要关注点:Server的启动,服务的注册,调用处理主流程(IO线程,业务线程)。 一.  Server的启动 在某一个HSFSpringProviderBean初始化时,启动HSF Server。在HSF默认协议使用TBRemoting作为RPC框架,TBRemotingRPCProtocolComponent.registerProvider中: providerServer.startHSFServer(); 其代码如下:   Server s ...
  大家平时都在用这个服务框架。简单阅读了下代码,了解其原理可以方便解决一些常见hsf的问题。限于篇幅,整个分析将分几个系列发布。第一篇将简单介绍Hsf的启动和各组件之间关系。   一.  Hsf总体架构       这个图很经典,想必大家都了解,Consumer,Provider,中间通过ConfigServer联接。那么其内部是如何实现的呢?请看下文。 二.  容器启动,jboss为例 HSF使用基于equinox(OSGi框架的eclipse实现,http://www.eclipse.org/equinox/)的OSGi,启动流程       1.    ...
前2篇分析了echo server端的运行机制,本篇同样以echo client为例,分析netty的nio客户端的运行机制。 总体来说client端和server端的处理是类似的,NioWorker是重用的,也就意味着client和server的读写机制是一样的,都是通过worker线程来管理的。所不同的是Boss线程,server端的boss线程一个bind端口起一个,主要负责接收新请求,而client端的boss线程是一个可配置的数组,一个connect端口分配一个,主要负责connect过程,如果connect成功则将channle注册到worker线程中处理。在Client同样有Pi ...
  Server bind之后,就可以对外提供服务了。Netty使用了reactor模式来提升服务的并发处理能力。boss线程负责监听新的连接请求,当有新的连接进来时,将对应的channel指派一个worker线程来处理。Worker线程负责对该Channel的读写操作。 一.Boss线程   1.阻塞Select for (;;) { try { // Boss线程专门负责监听新入连接,所以阻塞select selector.selec ...
以netty提供的echo server作为分析入口,echoServer代码:   public void run() { // 构造NioServerSocketChannelFactory,初始化bootstrap ServerBootstrap bootstrap = new ServerBootstrap( new NioServerSocketChannelFactory( Executors.newCachedThreadPool(), Executors.newCachedThreadPool())); // 创建一 ...
Netty是一个java领域常用的IO框架,小编最近简单看了下它的实现,和大家分享下。小编能力有限,有不对的地方还请大家指出。这个系列将分多个文章来完成,第一篇先简单介绍下netty的概念模型。使用的netty版本是3.5.11.Final。 Netty的核心概念可以用这个类图来表示: 一.Bootstrap    netty框架启动的工具类,分client,server和udp3种,其核心功能是初始化主channel 二.ChannelFactory    创建Channel的工厂,接受ChannelPipeline参数,创建一个Channel。针对不同场景,netty提供了各种 ...
Hello world 之前的qing地址 http://qing.weibo.com/1557922863
Global site tag (gtag.js) - Google Analytics