gpt4 book ai didi

jakarta-ee - 是否有诊断 WebSphere 中发生的线程挂起的做法?

转载 作者:行者123 更新时间:2023-12-02 04:53:15 25 4
gpt4 key购买 nike

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {

if ((request instanceof HttpServletRequest)
&& (response instanceof HttpServletResponse)) {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
HttpServletResponse httpServletResponse = (HttpServletResponse) response;

if (isSessionControlRequiredForThisResource(httpServletRequest)) {

if (isSessionInvalid(httpServletRequest)) {

String encodedURL = httpServletRequest.getContextPath() + this.timeoutPage;

try {
httpServletResponse.sendRedirect(encodedURL);
} catch (Exception e) {
logger.error("[Error happened in filter] : ", e.fillInStackTrace());
}

return;
}
}

if (!httpServletRequest.getRequestURI().startsWith(httpServletRequest.getContextPath() + ResourceHandler.RESOURCE_IDENTIFIER)) {
httpServletResponse.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
httpServletResponse.setHeader("Pragma", "no-cache");
httpServletResponse.setDateHeader("Expires", 0);
}
}
chain.doFilter(request, response);
}

上面显示的代码有时会在任务期间失败,导致 SystemOut.log 中显示以下错误。

[8/26/13 8:38:39:873 MYT] 0000002c ThreadMonitor W WSVR0605W: Thread "WebContainer : 9" (00000037) has been active for 611221 milliseconds and may be hung. There is/are 7 thread(s) in total in the server that may be hung.

诊断这个错误并不容易,因为它后面总是跟着一长串不属于我的应用程序的堆栈跟踪。通常它可能会在一段时间内(大约 15 到 20 分钟)发生几次,但线程 ID 可能不同。

我无法在 UAT 服务器的单元测试中对此进行模拟,而且我不确定这个问题的根本原因是什么。它偶尔会发生。是否有捕获此错误的模式?它是否发生在其他一些异常发生之后,比如数据库连接丢失或者一些后台进程正在运行,比如在生产服务器中检索巨大的结果集?我只是想了解什么情况下会导致这个问题,以便我可以在编码过程中避免这种情况。

最佳答案

  • 确定您的 WebSphere 进程的 PID,例如使用 jps

$ jps
1039 java


  • 使用 jstack 创建完整的线程转储

$ jstack 1039

  • 或者(如果您使用的是 UNIX 系统):

$ kill -QUIT 1039

$ kill -3 1039


  • 确定挂起的线程(您可以从日志文件中的警告中获取名称)
  • 确定线程挂起的行
    • 寻找竞争条件、非并发对象/迭代器中的并发修改等。
  • 同时检查死锁(它们可能附加到完整的线程转储中)
    • 一个死锁的例子是here (查找处于 BLOCKED 状态的线程)。

相关:

关于jakarta-ee - 是否有诊断 WebSphere 中发生的线程挂起的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18440846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com