类找不到问题追踪及分析

背景

集成环境上在执行某个操作时,频繁报出类找不到错误,下图为部分异常信息。

问题分析

最开始以为是jar包依赖有问题。但看了业务数据,相同操作有时能正常走完流程。初步排除jar包依赖问题。但具体是什么问题呢?通过该日志没有更多的线索了。

有个技巧:排查问题时,我们希望能找到产生问题的根源点。这个异常信息很有可能是其他问题导致的,因此我们需要往前看日志。从哪个时间点会看日志呢?很明显,需要找到该异常发生的第一次时间点。

根据该思路,往前找到了第一次跑出该异常的点,然后接着往前找,发现了一个系统异常:

这个异常比较明显:打开了太多的文件。

linux系统可以针对用户、进程进行一些资源的限制,具体可参考ulimit命令。通过这个异常信息,大概猜测出进程打开了太多的文件。

通过ulimit  -a(或直接使用ulimit -n查看进程可以打开的最大文件数),查看系统的一些配置:

可以看出限制进程能打开的最大文件数为1024。

找到服务的进程号,使用lsof -p pid | wc -l,查看打开的文件数,发现确实达到了上限。

至此问题根源找到。

总结

因为集成环境配置较低,而测试人员设置了高并发的压测,导致无法打开更多文件。因为类加载时也需要打开jar文件进行读取,所以该类无法正常加载到持久代,最终导致类无法找到的问题产生。

我们在看日志时,往往无法直接通过日志信息定位到问题,此时就应该怀疑该问题是由于另外一个问题导致的。因此,适当的往前看看日志,对于定位问题是很有帮助的。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-10 12:33:15

类找不到问题追踪及分析的相关文章

4、Cocos2dx 3.0游戏开发找小三之Hello World 分析

尊重开发者的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27186557 Hello World 分析 打开新建的"findmistress"项目,可以看到项目文件是由多个代码文件及文件夹组成的,其中 Hello World 的代码文件直接存放于该项目文件夹中.下面我们来详细介绍一下项目的文件组成. 1."resource" 该文件夹主要用于存放游戏中需要的图片.音频和配置等资源

spring启动component-scan类扫描加载过程---源码分析

有朋友最近问到了 spring 加载类的过程,尤其是基于 annotation 注解的加载过程,有些时候如果由于某些系统部署的问题,加载不到,很是不解!就针对这个问题,我这篇博客说说spring启动过程,用源码来说明,这部分内容也会在书中出现,只是表达方式会稍微有些区别,我将使用spring 3.0的版本来说明(虽然版本有所区别,但是变化并不是特别大),另外,这里会从WEB中使用spring开始,中途会穿插自己通过newClassPathXmlApplicationContext 的区别和联系.

转:使用xhprof进行线上PHP性能追踪及分析

原文来自于:http://avnpc.com/pages/profiler-php-performance-online-by-xhprof 原创作者:AlloVince 之前一直使用基于Xdebug进行PHP的性能分析,对于本地开发环境来说是够用了,但如果是线上环境的话,xdebug消耗较大,配置也不够灵活,因此线上环境建议使用xhprof进行PHP性能追踪及分析. xhprof的安装与简易用法 xhprof是Facebook开源的轻量级PHP性能分析工具,Linux环境下可以通过pecl直接

PHP性能追踪及分析工具xhprof的安装与使用

https://segmentfault.com/a/1190000007288664(原文地址) 对于本地开发环境来说,进行性能分析xdebug是够用了,但如果是线上环境的话,xdebug消耗较大,配置也不够灵活,因此线上环境建议使用xhprof进行PHP性能追踪及分析. 我们今天就简单介绍一下xhprof的简单安装与使用 xhprof的安装 下载xhprof,我们这里选择的是通过git clone的方式,当然你也可以从 http://pecl.php.net/package/x... 这里下

NSMutableDictionary 类中增加键值对方法分析

在iOS中可变字典增加一个键值对的方法有setObject: forKey: 和setValue : forKey: .为了方便我们把这两个方法简称为方法A和方法B. B这个方法中其中的value值是不能为nil,否则程序会出项崩溃.而A方法中的这个value可以为nil,但是当这个value位nil时,系统会自动调用removeObjectforKey:这个方法.这样就把这个键值对删除掉了.B方法中的key值可以是任意类型的,但是这个类型必须要实现NSCopying协议.而A方法中它的key值

类找不到异常 Caused by: java.lang.NoClassDefFoundError

错误原因:在部署应用的时候,服务器报错,Caused by: java.lang.ClassNotFoundException: org.quartz.impl.JobDetailImpl,某个类找不到,找到对应的包发现明明某个jar已经引进去了,在仔细一看发现有三个类似的jar, com.alibaba.external:opensymphony.quartz,opensymphony:quartz,org.quartz-scheduler:quartz.实际上我希望的包,是org.quart

关于Android项目中,突然就R类找不到已存在的资源文件的解决方法

项目代码早上打开正常,下午开的时候突然提示R类找不到已存在的布局文件,于是试了各种方法,CLEAN啊,重启啊,均无效,然后去网上搜了下,遇到这个问题的人还不少. 看到其中有这么一条解决方法,删除导入的Android.R包,去检查了自己的代码,果然有这么一行,删除之后,问题解决. 但是又比较奇怪这个Android.R是什么东西,得到的答复是,是系统的资源类,如果导入之后会与本地工程文件的R类冲突,所以产生错误,找不到布局文件等问题. 希望能对大家有所帮助.

遇到一个spring启动时类找不到的问题~

今天将一个老的项目部署到Tomcat7上运行时,spring初始化一直失败,提示错误如下: Java.lang.NoClassDefFoundError:org.springframework.beans.FatalBeanException 控制台打印的堆栈信息如下: [org.springframework.web.context.ContextLoader]-[ERROR] Context initialization failed java.lang.NoClassDefFoundErr

1、vs2012 mvc3项目ObjectContext类找不到的问题

在vs2012下找不到ObjectContext类,取而代之的是DBContext,实体对象的Attach方法,上下文的ObjectStateManager对象都找不到,解决办法: 在设计视图中打开EDMX文件,在属性面板中将“代码生成策略”改为“默认”,然后将解决方案管理器中的“.tt”文件删除,在查看.designer.cs文件,已经有生成的代码了,并且父类已经是ObjectContext了,一切问题都OK了. 1.vs2012 mvc3项目ObjectContext类找不到的问题