企业级应用系统的开发中,你一定遇到过这几个问题,CPU 飙升、内存利用率暴增,如何定位代码?数据库连接数被耗尽,怎么监控?各种 OOM 如何预防?线程死锁、锁争用、上下文切换太频繁,怎么办?
有没有一种方法,在不用了解具体业务和代码的情况下,可以快速地了解并诊断你的系统,给系统做一个 360 度画像视图?
冯忠旗,目前是京东数科高级架构师,2015-2018 在宜信支付与结算中心担任支付结算平台技术负责人,2010-2014 在 IBM CDL 中国研发中心担任 ITAAS 私有云 RingCloud 技术团队研发负责人。对支付、账户产品以及基于支付和账户的消金和供应链金融产品有丰富的项目经验,曾帮助多家互联网银行搭建技术平台,同时主导聚合付钱拉技术平台的产品研发工作。
技术方面,个人比较关注高并发、高可用的架构设计,对分布式系统建设过程中的业务拆分、分库分表、消息队列、性能调优等方面有深入研究和实战经验,热衷于技术研究和分享,曾经在极客邦 InfoQ 全球开发者大会被邀请作为讲师分享技术产品经验。
作者回复: 第一个问题,当创建一个线程的时候,虚拟机在jvm内存创建一个对象的同时会创建一个操作系统线程,这个操作系统的内存用的是jvm分配之外的内存,这个内存需要除去很多其他内存,比如被操作系统预留的。因此,给jvm越多,你能创建的线程越少,极端情况下会发生unable to create new native thread, 这种场景可以通过代码测试模拟出来。对于大概占用多少,需要看jdk版本,1.5里面默认是1M。第二个问题,需要根据具体业务量来确定,并且观察GC情况来考虑。如果内存相对宽松,可以多一些。
作者回复: 谢谢!
作者回复: 谢谢建议!
作者回复: 谢谢!
作者回复: 谢谢!
作者回复: 考虑一下,谢谢支持