网站首页 > 技术文章 正文
问题描述
在出现以下情况时怀疑服务器挂起:
- 服务器不响应新的请求。
- 请求超时。
- 请求处理的时间越来越长(其最终结果可能是挂起)。
通常,服务器挂起不会表现为服务器崩溃,但服务器挂起之后可能会崩溃。
故障排除
请注意,并非下面所有任务都需要完成。有些问题仅通过执行几项任务就可以解决。
为什么发生此问题?
服务器挂起有多种原因。一般而言,服务器挂起是因为缺少某种资源。缺少资源会阻止服务器响应服务请求。例如,由于故障(死锁)或者大量请求的缘故,可能没有任何可用的执行线程来完成工作,所有执行线程都被占用或忙于处理以前的请求。
服务器挂起的可能原因
基本步骤
(1)从命令行对服务器执行ping 命令
当服务器挂起时,首先使用 java weblogic.Admin t3://server:port PING 来 ping 该服务器。如果服务器能够响应此 ping,则可能是应用程序正在挂起而不是服务器自身。
(2)检查服务器是否正在执行垃圾回收
确保服务器确实正在挂起,而不是在做垃圾回收。若要验证挂起,加上-verbose:gc 参数,并且将 stdout 和 stderr 重定向到一个文件中,重新启动服务器。当服务器停止响应时,可以判断它是正在收集无用信息还是确实挂起。
(3)查看执行现场运行状态
查看执行线程的运行情况,如果一个空闲线程都没有的话,那么狠可能会导致服务器挂起,WebLogic Server 使用“Default”线程队列响应客户端服务请求,可以查看default队列里是否有空闲的执行线程。登录控制台,然后依次执行DomainName->Servers->ServerName->Monitoring->General->Monitor All Active Queues->weblogic.kernel.Default 命令,里面的Current Request 列会显示线程是否正在工作。
已知的 WebLogic 问题
JDBC 产生死锁问题的可能性存在。检查在 weblogic.log 开头找到的服务器的版本和 Service Pack 级别。然后对已经应用于服务器类路径的所有临时修补程序检查以上版本和 Service Pack 行。修补程序将指明已经解决了什么问题。
收集 Thread Dump
进行 Thread Dump 的方法取决于安装挂起服务器实例的操作系统。Thread Dump 提供关于每个线程在特定时刻正在执行什么操作的信息。检查 Thread Dump,了解每个线程在服务器挂起时正在执行的操作。这有助于分析下一个探查阶段。例如,如果 JSP 编译中涉及许多线程,参考服务器挂起的可能原因一节可了解进一步的诊断和测试操作。
初始探查结果分析
下面是其中一个线程在 Thread Dump 中的形式示例。Execute Thread 14 正在等待任务。该线程调用的最后方法是 Object.wait()。
确定“Default”ExecuteThread 队列是否超载。利用控制台确定“Default”队列中的所有 ExecuteThreads 是否空闲。如果没有一个空闲,则应用程序可能需要一个更大的 ExecuteThread 数来配置。可以通过控制台更改该值,并将其保存在 config.xml 文件中。
如果执行队列有空闲线程,则可能没有分配足够的 Socket Reader 线程。缺省情况下,WebLogic Server 实例在启动时创建三个 Socket Reader 线程。如果群集系统在高峰期使用的 Socket Reader 线程超过三个,则增加 Socket Reader 线程的数量。
通常,Socket Reader 线程的数量应当较小。但是,如果 Weblogic Serve 充当正在挂起的服务器实例的客户端,则应当为每个 Weblogic Serve 配置一个线程。
如果使用 JDBC 连接池,确保池中已经配置的 JDBC 连接数量与同时请求(即执行线程)的数量相等。
故障排除检查清单
(1)确认服务器是否已挂起,并确定服务器状态:崩溃、最终恢复正常,还是这两种情况均未发生。
(2)收集初始探查数据
a) 如果没有数据,可设置参数以供下次发生挂起时使用
b) 检查线程活动并进行若干次Thread dump
(3)查找服务器挂起的根本原因
a) 可用的执行线程数和Socket Reader线程数是否充足?是否有监听线程?
b) GC否正在运行?
c) 对Th是read dump进行分析,查找可能原因,参考特定模式
(4)根据需要更改配置,增大导致服务器挂起的限值
(5)根据需要探查具体的故障成因。
(6)继续监视,看是否还会发生故障
联动北方邀请您参与【有奖话题讨论】
目前人工智已经渗透到了我们生活的方方面面,无论是日常手机拍照、网上购物抑或外出旅行,在越来越便捷的生活方式背后多多少少有着人工智能技术的助力。
围绕以下三个话题说出你对人工智能的理解,有惊喜礼物等你哦~
- 你认为人工智能能超越人类大脑吗?
- 你认为人工智能近期最有可能实现的是什么?
- 你认为人工智能近期最迫切需要实现的是什么?
参与链接:
http://bbs.landingbj.com/t-0-286771-1.html
- 上一篇: 作为一名程序猿,你不可不知的Java基础知识的三十个经典问答
- 下一篇: jsp原理详解
猜你喜欢
- 2025-05-30 玩转Apache Tomcat
- 2025-05-30 前端请求一到,后端就乱套?揭秘 Spring MVC 底层调用全流程!
- 2025-05-30 只调一个参数,性能快了近10倍?Tomcat调优高阶笔记开源
- 2025-05-30 从asp.net到jsp:3分钟看透Jsp&Servlet
- 2025-05-30 从容应对问题再发:关于JVM内存,你想知道的都在这里
- 2025-05-30 tomcat之JSP引擎
- 2025-05-30 Jsp 页面报错后如何找到提示信息中的 _jsp.java 文件
- 2025-05-30 Tomcat处理HTTP请求流程解析
- 2025-05-30 奇葩Java面试题:jsp 是前端语言还是后端语言?你答对了吗?
- 2025-05-30 京东大佬问我,SpringBoot项目启动从7分钟降到了10秒,如何优化?
- 最近发表
-
- 使用这个新的 ECMAScript 运算符告别 Try/Catch!
- 抛弃 try-catch,错误处理的新方案
- 深圳尚学堂Java培训:总结java编程常用的快捷键(二)
- Try-catch speeding up my code?(speeding up)
- 能代替try catch处理异常的优雅方式
- Linux系统stress压力测试工具(linux自带的压力测试)
- ESL-通过事件控制FreeSWITCH(es事务控制)
- 谈JVM xmx, xms等内存相关参数合理性设置
- 嵌入式工程师竟然看不懂这些专业语句,那真别怪人说你菜
- 不会前端也能写官网?没问题,Devbox+Cursor 带你起飞
- 标签列表
-
- cmd/c (64)
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- sqlset (64)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)