什么叫服务器挂起

什么叫服务器挂起,第1张

服务器挂起是这样一种场景,即服务器仍在运行,但是服务器上的一个或多个任务不响应请求。这些任务可能还是活跃的,但是不在做它们应该做的事情。术语 “挂起” 也定义了一种状态,即当计算机程序不按设计运行时可能会出现的状态。大部分时候,出现挂起是因为,低级循环或资源的持久不可用导致严重的性能问题。服务器挂起通常归因于资源问题,所以有时可把它们看成性能问题。在挂起期间,程序看起来像已瘫痪,也不显示错误消息,并且屏幕冻结或者应用程序不响应用户的动作。键盘输入或鼠标点击没有反应,不管光标置于何处都一样,但是程序仍在运行。与 ABEND 或崩溃不一样,挂起有时会自己解决问题,应用程序继续其正常的执行过程,无需您的干预。这样的情况更应该看成是性能问题,而不是挂起。

网站访问量比较小,但是有个问题一直困扰着我们,就是was服务器隔一段时间就报线程挂起,时间有长有短,短的重启5分钟内就报。

一般情况是:

1.开应用服务器——用户下载——报线程挂起——下载量下降——报线程N长时间没活动,超过was设置的阀值,释放掉。

2.开应用服务器——用户下载——报线程挂起——下载量继续或者上升,挂起线程越来越多——was自动调整线程阀值——调不过来,挂。

经过查找,基本确定问题:是因为用户在用浏览器下载文件时,网络瞬断或其他原因,导致抛出异常,但是下载的线程并未释放。可打开浏览器下载,下到一半直接关掉浏览器来模拟这个现象。

byte[] b = new byte[1024]

...

while ((len = in.read(b)) != -1) {

out.write(b, 0, len)

}

...

登录后复制

修改为

byte[] b = new byte[1024]

...

while ((len = in.read(b)) != -1) {

Thread.sleep(50)

Thread.yield()

out.write(b, 0, len)

}

...

登录后复制

一些人建议的方法是,在服务器端给线程做个时间限制,超过时间的就关掉;但是这样做,较低网速下载大文件的用户,又会受到影响。因此用上面的做法是:线程处理一段时间,停一会,让出CPU控制权,不至于造成堵塞。

这个方法可能不是最好的,但是至少是比较合适的,现在服务器上线程挂起的现象已经大大减少,并且额外加了一句

if (request.getHeader("Range") != null) {

ErrShow(request, response, "不支持多线程!")

return

}

登录后复制

这样避免掉用下载工具的多线程下载。

哪位有更优解,请提出来,一起讨论一下。

刚才看到用守护线程来处理超时线程的解决方案,但另外一个技术主管极力反对,哪位能解释一下,为什么不可用?守护线程在什么情况下可用?谢谢

1、线路问题;

2、网络硬件质量有问题,如,双胶线、水晶头、分离器、猫、路由器、网卡。

3、注意分离器、猫、路由器的散热。

4、网卡驱动:换网卡,更新驱动。

5、宽带上网拨号软件:推荐用自带PPPOE拨号软件,断流较少,稳定性高。

6、设置TCP/IP协议。

7、操作系统:操作系统可能对ADSL的相关组件存在兼容性问题,到微软升级,或修复系统。有条件可以重装。

8、软件冲突问题

如果软件有冲突就尽量找出冲突软件,对其卸载或者其他方法解决。

9、病毒问题:虽然受到黑客和病毒的攻击可能性较小,但也不排除可能性,特别是网页病毒和蠕虫病毒。杀毒。

10、防火墙如果上网不稳定,可以尝试先关闭防火墙,测试稳定与否,在进行相应的设置。 另外防火墙引起或IE浏览器出现故障,也可导致可以正常连接,但不能打开网页。

11、静电问题。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/593116.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-07-08
下一篇2023-07-08

发表评论

登录后才能评论

评论列表(0条)

    保存