cloud learning space E0505
某局点出现上课虚拟机任务卡住,从而导致无法上课的问题
复现上课虚拟机任务卡住的问题,从现场取到的dump文件分析:
发现cas的克隆任务都阻塞在了创建虚拟机线程的结果返回这里,部分虚拟机未克隆成功导致外部主线程一直在等待虚拟机创建的结果
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:425)
at java.util.concurrent.FutureTask.get(FutureTask.java:187)
at java.util.concurrent.AbstractExecutorService.invokeAll(AbstractExecutorService.java:243)
at com.virtual.plat.server.virtualhost.DomainHandler.batchCloneDomain(vmc:34930)
继续查看dump文件,发现存在如下多个相同的栈信息,该栈为创建虚拟机时执行查询数据
mac的动作,这些线程都停在了at java.net.PlainSocketImpl.socketAvailable(Native Method),
java.lang.Thread.State: RUNNABLE
at java.net.PlainSocketImpl.socketAvailable(Native Method)
at java.net.AbstractPlainSocketImpl.available(AbstractPlainSocketImpl.java:478)
- locked <0x00000000c1876f50> (a java.net.SocksSocketImpl)
at java.net.SocketInputStream.available(SocketInputStream.java:246)
at com.mysql.jdbc.util.ReadAheadInputStream.available(ReadAheadInputStream.java:231)
at com.mysql.jdbc.MysqlIO.clearInputStream(MysqlIO.java:943)
at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:1804)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2165)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2642)
- locked <0x00000000c1c3fd58> (a java.lang.Object)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2571)
通过比较栈信息,CAS侧批量接口在缓存中累积查询MAC数量到达65535个而出现死循环造成mysql断掉, cvm由于以上原因导致客户端一直等待mysql连接,使线程一直阻塞导致任务卡住。
解决办法
该问题需要等待CAS E0513H04版本才能解决。
规避方法:
在CAS E0513H04版本未发布之前,需要在当前版本中规避此问题,规避方法如下:
1. 在云学院未使用的情况下,使用如下命令重启tomcat
service tomcat8 restart
2. 在定时任务中添加如下命令,定时在每周六晚凌晨3:10分重启一次tomcat,具体命令如下:
echo "10 3 * * 6 root /etc/init.d/tomcat8 restart" >> /etc/crontab
该案例暂时没有网友评论
✖
案例意见反馈
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作