起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4687|回复: 8

[处理中3] 线程长时间阻塞问题

[复制链接]

22

主题

117

帖子

433

积分

中级会员

Rank: 3Rank: 3

积分
433
QQ
发表于 2018-5-7 15:14:02 | 显示全部楼层 |阅读模式
本帖最后由 tiger_lixy 于 2018-5-7 15:15 编辑

在监控中发现大量的线程是这样的(已经持续了很久runnable状态)。源码是用ActionEngine.invokeActions 调用一个action。这个方法怎么去设定读超时的时间?

名称: catalina-exec-366
状态: RUNNABLE
总阻止数: 13, 总等待数: 194

堆栈跟踪:
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
java.net.SocketInputStream.read(SocketInputStream.java:170)
java.net.SocketInputStream.read(SocketInputStream.java:141)
java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
java.io.BufferedInputStream.read(BufferedInputStream.java:265)
   - 已锁定 java.io.BufferedInputStream@61851a42
org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:78)
org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:106)
org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1116)
org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1973)
org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1735)
org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1098)
org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
com.justep.biz.client.ActionEngine.invokeActions(Unknown Source)
QueryOnlineUsers.getOnlineData(QueryOnlineUsers.java:53)
QueryOnlineUsers.execute(QueryOnlineUsers.java:22)
com.justep.ui.JavaServer.runJava(Unknown Source)
com.justep.ui.JavaServer.doJ(Unknown Source)
com.justep.ui.JavaServer.service(Native Method)
com.justep.ui.servlet.MainServlet.service(Unknown Source)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
com.justep.portal.filter.RedirectFilter.doFilter(Unknown Source)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
com.googlecode.psiprobe.Tomcat60AgentValve.invoke(Tomcat60AgentValve.java:40)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:396)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
java.lang.Thread.run(Thread.java:745)


22

主题

117

帖子

433

积分

中级会员

Rank: 3Rank: 3

积分
433
QQ
 楼主| 发表于 2018-5-7 15:21:52 | 显示全部楼层
public JSONObject getOnlineData(String prefix){       
                try{
//阻塞位置
                        ActionResult  ar2=ActionEngine.invokeActions(prefix+"/BusinessServer/onlineUsers", null, null, null,  ActionUtils.JSON_CONTENT_TYPE,"", null, null, "get", null);
                        if (ar2.isSuccess()){       
                                //return json.getJSONObject("value").getJSONArray("rows");
                               
                                return (JSONObject)ar2.getContent();
                        }else{
                                System.out.println(prefix+"没有启动!!!!");
                        }
                        return null;
                }catch(Exception e){
                        return null;
                }
        }
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35913
发表于 2018-5-7 15:47:49 | 显示全部楼层
这个应该是没问题,平台默认的获取用户数就是这样的,看看监控是不是其他的线程死锁了导致的
http://IP:端口//BusinessServer/onlineUsers看看是否可以返回数据
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

22

主题

117

帖子

433

积分

中级会员

Rank: 3Rank: 3

积分
433
QQ
 楼主| 发表于 2018-5-7 16:01:51 | 显示全部楼层
本帖最后由 tiger_lixy 于 2018-5-7 16:04 编辑
jishuang 发表于 2018-5-7 15:47
这个应该是没问题,平台默认的获取用户数就是这样的,看看监控是不是其他的线程死锁了导致的
http://IP:端口 ...

这个是因为一个集群的tomcat——jvm崩溃了(具体原因还是要问您)。崩溃以后,另一台服务器就阻塞了很多线程到这个位置了。我是想问平台api怎么设置sotimeout时间,httpclient组件是能处理掉这种情况的。
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35913
发表于 2018-5-7 16:37:00 | 显示全部楼层
另一个服务跟当前崩溃的服务是两个不同的服务端,一个奔溃不会使另一个服务出现线程阻塞

平台API都是底层控制的没有源码控制
而且平台默认的在线用户的请求是不会主动发的
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

22

主题

117

帖子

433

积分

中级会员

Rank: 3Rank: 3

积分
433
QQ
 楼主| 发表于 2018-5-7 17:16:01 | 显示全部楼层
本帖最后由 tiger_lixy 于 2018-5-7 17:17 编辑
jishuang 发表于 2018-5-7 16:37
另一个服务跟当前崩溃的服务是两个不同的服务端,一个奔溃不会使另一个服务出现线程阻塞

平台API都是底层 ...

代码是我们自己开发的,因为是集群的,所以要从所有集群获取在线人数累加起来。您回答下我那个sotimeout的问题吧?怎么引起的,原因就是某个服务器虚拟机进程挂了。怎么阻塞的我并没有问您!
我的问题是怎么能设置sotimeout的时间。
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35913
发表于 2018-5-7 17:21:48 | 显示全部楼层
平台只是提供了session超时时间的控制http://bbs.wex5.com/forum.php?mod=viewthread&tid=35568

线程的没有,可以都网上 查找tomcat是否提供的有
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

22

主题

117

帖子

433

积分

中级会员

Rank: 3Rank: 3

积分
433
QQ
 楼主| 发表于 2018-5-7 17:24:44 | 显示全部楼层
jishuang 发表于 2018-5-7 17:21
平台只是提供了session超时时间的控制http://bbs.wex5.com/forum.php?mod=viewthread&tid=35568

ActionEngine.invokeActions   这个方法没有参数设置吗?
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35913
发表于 2018-5-7 17:25:57 | 显示全部楼层
没有
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-4-20 09:38 , Processed in 0.066224 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表