【发布时间】:2014-04-01 14:03:12
【问题描述】:
我的应用程序监听kafka 主题并将数据转储到cassandra。线程也从mongo 加载一些信息。 kafka 主题中的滞后增加。我已经看到大多数线程在加载某些类时被阻塞。我在下面附上我的thread_dump。
"KafkaConsumer-49" prio=10 tid=0x00007f1178fdd000 nid=0x78e0 waiting for monitor entry [0x00007f1155fb5000]
java.lang.Thread.State: BLOCKED (on object monitor)
at java.lang.ClassLoader.loadClass(ClassLoader.java:403)
- waiting to lock <0x00000006c0655b58> (a java.lang.Object)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at org.springframework.util.ClassUtils.forName(ClassUtils.java:258)
at org.springframework.data.convert.SimpleTypeInformationMapper.resolveTypeFrom(SimpleTypeInformationMapper.java:56)
at org.springframework.data.convert.DefaultTypeMapper.readType(DefaultTypeMapper.java:103)
at org.springframework.data.convert.DefaultTypeMapper.getDefaultedTypeToBeUsed(DefaultTypeMapper.java:144)
at org.springframework.data.convert.DefaultTypeMapper.readType(DefaultTypeMapper.java:121)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:186)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:176)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:172)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:75)
at org.springframework.data.mongodb.core.MongoTemplate$ReadDbObjectCallback.doWith(MongoTemplate.java:1840)
at org.springframework.data.mongodb.core.MongoTemplate.executeFindMultiInternal(MongoTemplate.java:1536)
at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1336)
at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1322)
at org.springframework.data.mongodb.core.MongoTemplate.find(MongoTemplate.java:495)
at org.springframework.data.mongodb.core.MongoTemplate.find(MongoTemplate.java:486)
at com.snapdeal.coms.timemachine.mao.TimeMachineMao.getVendorProductsForUploadId(TimeMachineMao.java:32)
at com.snapdeal.coms.timemachine.service.TimeMachineService.getVendorProductsForUploadIdAndSupc(TimeMachineService.java:35)
at com.snapdeal.coms.timemachine.event.SupcUploadIdStateUpdateEventHandler.handleEvent(SupcUploadIdStateUpdateEventHandler.java:40)
KafkaConsumer-48" prio=10 tid=0x00007f1178fdb000 nid=0x78df waiting for monitor entry [0x00007f11560b6000]
java.lang.Thread.State: BLOCKED (on object monitor)
at java.lang.ClassLoader.loadClass(ClassLoader.java:403)
- waiting to lock <0x00000006c0655b58> (a java.lang.Object)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at org.springframework.util.ClassUtils.forName(ClassUtils.java:258)
at org.springframework.data.convert.SimpleTypeInformationMapper.resolveTypeFrom(SimpleTypeInformationMapper.java:56)
at org.springframework.data.convert.DefaultTypeMapper.readType(DefaultTypeMapper.java:103)
at org.springframework.data.convert.DefaultTypeMapper.getDefaultedTypeToBeUsed(DefaultTypeMapper.java:144)
at org.springframework.data.convert.DefaultTypeMapper.readType(DefaultTypeMapper.java:121)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:186)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:176)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:172)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:75)
at org.springframework.data.mongodb.core.MongoTemplate$ReadDbObjectCallback.doWith(MongoTemplate.java:1840)
at org.springframework.data.mongodb.core.MongoTemplate.executeFindMultiInternal(MongoTemplate.java:1536)
at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1336)
at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1322)
at org.springframework.data.mongodb.core.MongoTemplate.find(MongoTemplate.java:495)
at org.springframework.data.mongodb.core.MongoTemplate.find(MongoTemplate.java:486)
at com.snapdeal.coms.timemachine.mao.TimeMachineMao.getVendorProductsForUploadId(TimeMachineMao.java:32)
at com.snapdeal.coms.timemachine.service.TimeMachineService.getVendorProductsForUploadIdAndSupc(TimeMachineService.java:35)
at com.snapdeal.coms.timemachine.event.SupcUploadIdStateUpdateEventHandler.handleEvent(SupcUploadIdStateUpdateEventHandler.java:40)
at com.snapdeal.coms.timemachine.TimeMachine.onEvent(TimeMachine.java:109)
“KafkaConsumer-47”prio=10 tid=0x00007f1178fd9800 nid=0x78de 等待监控入口 [0x00007f11561b7000] java.lang.Thread.State: BLOCKED (在对象监视器上) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:403) - 等待锁定 (a java.lang.Object) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:356) 在 org.springframework.util.ClassUtils.forName(ClassUtils.java:258) 在 org.springframework.data.convert.SimpleTypeInformationMapper.resolveTypeFrom(SimpleTypeInformationMapper.java:56) 在 org.springframework.data.convert.DefaultTypeMapper.readType(DefaultTypeMapper.java:103) 在 org.springframework.data.convert.DefaultTypeMapper.getDefaultedTypeToBeUsed(DefaultTypeMapper.java:144) 在 org.springframework.data.convert.DefaultTypeMapper.readType(DefaultTypeMapper.java:121) 在 org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:186) 在 org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:176) 在 org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:172) 在 org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:75) 在 org.springframework.data.mongodb.core.MongoTemplate$ReadDbObjectCallback.doWith(MongoTemplate.java:1840) 在 org.springframework.data.mongodb.core.MongoTemplate.executeFindMultiInternal(MongoTemplate.java:1536) 在 org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1336) 在 org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1322) 在 org.springframework.data.mongodb.core.MongoTemplate.find(MongoTemplate.java:495) 在 org.springframework.data.mongodb.core.MongoTemplate.find(MongoTemplate.java:486)
"KafkaConsumer-46" prio=10 tid=0x00007f1178fd8000 nid=0x78dd waiting for monitor entry [0x00007f11562b8000]
java.lang.Thread.State: BLOCKED(在对象监视器上) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:403) - 等待锁定 (a java.lang.Object) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:356) 在 org.springframework.util.ClassUtils.forName(ClassUtils.java:258) 在 org.springframework.data.convert.SimpleTypeInformationMapper.resolveTypeFrom(SimpleTypeInformationMapper.java:56) 在 org.springframework.data.convert.DefaultTypeMapper.readType(DefaultTypeMapper.java:103) 在 org.springframework.data.convert.DefaultTypeMapper.getDefaultedTypeToBeUsed(DefaultTypeMapper.java:144) 在 org.springframework.data.convert.DefaultTypeMapper.readType(DefaultTypeMapper.java:121) 在 org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:186) 在 org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:176) 在 org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:172) 在 org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:75) 在 org.springframework.data.mongodb.core.MongoTemplate$ReadDbObjectCallback.doWith(MongoTemplate.java:1840) 在 org.springframework.data.mongodb.core.MongoTemplate.executeFindMultiInternal(MongoTemplate.java:1536) 在 org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1336) 在 org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1322) 在 org.springframework.data.mongodb.core.MongoTemplate.find(MongoTemplate.java:495) 在 org.springframework.data.mongodb.core.MongoTemplate.find(MongoTemplate.java:486) 在 com.snapdeal.coms.timemachine.mao.TimeMachineMao.getVendorProductsForUploadId(TimeMachineMao.java:32) 在 com.snapdeal.coms.timemachine.service.TimeMachineService.getVendorProductsForUploadIdAndSupc(TimeMachineService.java:35) 在 com.snapdeal.coms.timemachine.event.SupcUploadIdStateUpdateEventHandler.handleEvent(SupcUploadIdStateUpdateEventHandler.java:40)
我不确定为什么所有线程都被阻塞。我认为类只加载一次,以后不需要任何锁。
【问题讨论】:
标签: java classloader apache-kafka spring-mongo