apollo configservice在处理客户端请求时,出现500报错

rn0zuynd  于 4个月前  发布在  其他
关注(0)|答案(1)|浏览(56)

各位大牛好!最近遇到一个问题,还请帮忙分析下原因,描述如下:

公司运行了apollo配置中心,configservice集群中包含8个服务实例。有一个appid的客户端数量在5000左右。7月29日晚上,这个appid发布了新版配置,大量的客户端拉取新版配置,产生了惊群效应。现象是configservice的cpu100%了,所有服务实例都自动重启了,其中有一个服务实例在处理客户端请求时,出现少量的500报错,不能自动恢复,在手工重启这个实例后,不再报错。

apollo configservice版本:v1.0.0
出现500错误的接口
长轮询 /notifications/v2
查询配置 /configs/{appId}/{clusterName}/{namespace:.+}

其中一类错误:
Already value [org.springframework.orm.jpa.EntityManagerHolder@705437c9] for key [org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean@36a860dd] bound to thread [http-nio-8080-exec-147]

另一类错误:
EntityManager is closed; nested exception is java.lang.IllegalStateException: EntityManager is closed

我在本地无法复现这个问题,看了apollo及spring的源码也没有找出详细错误原因,还请帮忙分析下,多谢!

57hvy0tb

57hvy0tb1#

Hi weifly, maybe it has something related with the code here

apollo/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/controller/NotificationControllerV2.java

Line 188 in 49bd8cc

| | entityManagerUtil.closeEntityManager(); |

By the way, can you provide more details?

相关问题