并行类加载——让tomcat玩转双十一

今年双十一,是应用容器的最新版本Ali-tomcat 7.0.59.x应对的第一次双十一。这个版本包含的一个主要功能是并行类加载,本文主要对并行类加载在双十一期间的支持做一个总结。

并行类加载在双十一期间最主要的业务系统,在双十一期间支撑了每秒14w订单创建,是一个非常了不起的成绩!

业务背景

由于各种原因,该业务系统比较庞大,依赖较为复杂。为了解决业务复杂性,应用引入了模块化系统,通过模块化的方式抽象出一系列的bundle,而bundle之间互相隔离,享有独立的类加载器。

由于bundle之间相互隔离,我们自然就会想到,是否能够在应用启动时多线程并行的初始化这些bundle呢?

原来的应用运行在JDK6上,Tomcat启动的时候,应用的Classloader(WebappClassLoader)在进行类加载的时候是顺序加载的,因为JDK6上Classloader.loadClass(String name)这个方法是synchonized的,如果应用里面有多个线程在同时调用loadClass方法进行类加载的话,那么锁的竞争将会非常激烈。

大家知道在JDK7上,如果调用Classloader.registerAsParallelCapable方法,则会开启并行类加载功能,把锁的级别从ClassLoader对象本身,降低为要加载的类名这个级别。换句话说只要多线程加载的不是同一个类的话,loadClass方法都不会锁住。遗憾的是,开启并行类加载必须要求一个类加载器继承链路上所有类加载器都调用registerAsParallelCapable,但tomcat7自带的WebappClassLoader并没有调用registerAsParallelCapable,所以老版本的tomcat7即使运行在JDK7上,也无法利用并行类加载的特性。

实现原理

从Ali-tomcat 7.0.59.2版本开始解决了这个问题,支持在WebappClassLoader中打开registerAsParallelCapable方法。但是情况没有那么简单,还需要解决的一个问题是如何兼容JDK6的问题,因为tomcat7.x版本是基于JDK6编译,同时运行在JDK6和JDK7+以上的。JDK6下是没有Classloader.registerAsParallelCapable这个方法的,所以JDK6下必须保持原有的行为,在JDK7下才能支持并行类加载功能。也就是说,即使用户配置了并行类加载,那么tomcat也必须根据运行时的JDK版本来决定是否开启并行类加载功能。Ali-tomcat通过反射机制解决了这个问题,在运行时刻对应用的WebappClassLoader尝试注册并行类加载功能,当发现没有这个方法时,会自动fall back到普通的类加载,也就是线性类加载功能。

并行类加载体系结构

可以看到,实际运行过程中,tomcat会自动根据JDK版本来选择是否启用并行类加载功能。当然这项功能默认是关闭的,需要用户通过配置文件显示开启。

双十一应用实际运行数据



我们看到在实际线上机器的启动时间上,当开启并行类加载功能后,模块化系统的启动时间提升了47%,应用整体启动时间提升了29%!

配置方式

  1. 确认tomcat的运行环境是JRE7及以上。
  2. 安装ali-tomcat 7.0.59.3版本
    <code>sudo yum install -b current taobao-tomcat-7.0.59.3</code>

    修改/home/admin/$APP/conf/tomcat/context.xml,如果这个文件不存在,则从

    /opt/taobao/tomcat/conf/context.xml

    拷贝一份。添加如下配置:

    <code><Loader loaderClass="org.apache.catalina.loader.ParallelWebappClassLoader" /></code>
  3. 重启Tomcat
  4. 成功启动后,应该会在控制台看到类似如下的日志:
    <code>2015-10-12 14:22:50,444 org.apache.catalina.loader.ParallelWebappClassLoader <clinit>
    INFO: ParallelWebappClassLoader registration succeeded.</code>

    开源社区贡献

    并行类加载功能已经在捐献给Apache tomcat社区,并且被社区接受,在最新的Apache tomcat 7.0.65版本中已经包含该项功能。

    结语

    并行类加载功能在模块化业务应用,以及合并部署等等场景下对于性能有较大提升。后续Ali-tomcat会在开发体验,监控诊断等方面继续发力,帮助业务系统提升开发诊断效率!!

时间: 2024-07-28 16:22:11

并行类加载——让tomcat玩转双十一的相关文章

并行类加载——让tomcat玩转双十一 @双十一实战

今年双十一,是应用容器的最新版本Ali-tomcat 7.0.59.x应对的第一次双十一.这个版本包含的一个主要功能是并行类加载,本文主要对并行类加载在双十一期间的支持做一个总结. 并行类加载在双十一期间最主要的业务系统,在双十一期间支撑了每秒14w订单创建,是一个非常了不起的成绩!   业务背景 由于各种原因,该业务系统比较庞大,依赖较为复杂.为了解决业务复杂性,应用引入了模块化系统,通过模块化的方式抽象出一系列的bundle,而bundle之间互相隔离,享有独立的类加载器. 由于bundle

干货分享!2015“双十一”背后的关键技术盘点

时间过的很快,转眼间已近农历新年,回首这一年,盘点技术界的大事件必然离不开双十一这一场技术盛宴.当亿万用户在双十一这一天购物狂欢,屏幕那一头是众多程序员们在努力保障用户每一次点击的客户体验. 通过集结2015年双十一期间从应用服务.中间件.数据库到基础设施等等各层技术人员的一线实战技术分享总结,试图让读者看到双十一背后的人和事,也希望更多技术人从中汲取有益的经验. 技术分享 手淘双十一系列(一) | 521 性能优化项目揭秘@双十一实战   搜索双链路实时计算体系@双十一实战     iGrap

“双十一”电商玩创新,赛车送货靠谱吗?

"双十一"被称作http://www.aliyun.com/zixun/aggregation/7676.html">网络购物狂欢节,亦被称作中国屌丝节,它是电商区别于线下最重要的节日,这是完全属于线上电商打造出来的网络上最大的年度购物活动(现在线下会有模仿,但是规模和线上完全不是一个档次).我们不去追溯它的起源,仅从网络传播的效果来看,它已经是电商的一种文化符号,不管是大的电商企业,还是小的甚至是个人的电商平台,都会在这一天备足货源,然后开始和用户"开战&q

天猫“双十一”换新玩法:无线社交+大数据=未来商业?

10月15日, 天猫[微博]宣布2013年"双十一"购物狂欢节启动.今年天猫在11月11日(下称:"双十一")期间将打破线上线下商业界线,整合覆盖全国1000多个市县的3万家线下门店,通过天猫无线客户端与线上全面打通,为消费者打造线上线下共同狂欢.同时,天猫还将在今年"双十一"推出社交互动.千人千面.周期购等代表未来商业方向的全新模式.这些探索或将成为商业走向的风向标. 天猫副总裁王煜磊10月15日透露,今年"双十一"将有2万

生鲜电商搅局双十一:主推预售+定制化玩法

DoNews 10月28日消息(记者 张琳)双十一临近,http://www.aliyun.com/zixun/aggregation/12210.html">生鲜电商网站自然不会放过这一促销良机,在推广策略上各家也有很大不同.平台电商希望借助生鲜品类环节常规促销带来的审美疲劳,而垂直电商则更倾向于在价格方面下功夫,品牌商家则蓄积品牌势能以集中释放. 在平台电商方面,以天猫为代表,该平台将生鲜放在了与视频类目同样重要的位置,而此前生鲜一直是食品类目的子频道.天猫方面的产品以预售为主,商家提

“双十一”的销售数据牵动着众人的心

对于商场.实体店,甚至快递行业的今后发展都带来了不同的引导,引发行业的大探讨.网购消费方式将改变零售业格局?会加速快递企业的发展脚步? 百货店:不畏电商挑战, 两者应是并驾齐驱的两驾马车 昨日亿邦动力网公布数据,户外运动品牌骆驼天猫销售额已超过1个亿,这个在商场并不显山露水的品牌让所有人大吃一惊. 1个亿是什么概念? "在百货店里,如果年销售额在1500万元以上,都属于一线品牌,是支撑百货店业绩的坚实基础.如果业绩能达到2000万元,可以坐到头把交椅了."杭州一家商场的相关负责人表示.

飞猪的第一个双十一,除了21.7亿你还读到了什么?

转载自环球旅讯读者投稿,作者为琅琊,非著名互联网人,旅游电商从业者. 阿里旅行在技术层面做了很多工作,在营销玩法上也有很多突破,品牌在10月27日年轻化改名飞猪,整个平台的创新动作可谓是频出不断,但整体所有的努力最终都应该回归到销售层面.在这次双十一大考里面,飞猪交出了21.7亿的成绩,除了最终的业绩,我们还可以在里面读到哪些信息呢? 一.长线爆款成平台GMV重磅推荐 飞猪和携程去哪儿最大的不一样在于,飞猪背靠着阿里的生态体系.在拥有"双十一"(阿里巴巴于2014年已取得"双

电商最低价利器被拨除 群雄凭什么玩转“双11”

没等到11月11日零点,各大电商就已经拉开"双11"大战的序幕. 天猫总裁王煜磊预计,今年是历年商家数目参与最多的一年,到目前为止,天猫有2.7万家商家参与,并首度向国际商家开放.另一边,京东商城在线上线下投放大量双11广告,促销力度不逊于阿里,并借助微信通道意与阿里争锋.携程也抢在上周启动15周年大促,唯品会.汽车之家等各个领域的电商也不示弱,纷纷在刷双11存在感.战火纷飞,场面凌乱.南都记者从权威渠道获悉,近日,国家工商总局召集阿里巴巴.京东.苏宁易购.携程等10家电商企业进行约谈

双十一:阿里交易额571亿元 凡客曾宕机

摘要: 随着昨晚24点钟声的敲响,2014双十一电商购物狂欢正式闭幕,阿里以单日交易额571 亿元,交上了上市后的首份双十一成绩单. 在阿里的总部杭州,马云( 微博 )和被称之为马云背后的男 随着昨晚24点钟声的敲响,2014"双十一"电商购物狂欢正式闭幕,阿里以单日交易额571 亿元,交上了上市后的首份双十一成绩单. 在阿里的总部杭州,马云( 微博 )和被称之为马云背后的男人-- 阿里巴巴集团 副董事长蔡崇信也都出现在媒体面前.阿里"双十一"大平台的效应甚至已经渗