当前位置: 首页 > 知识库问答 >
问题:

具有大量匿名线程的Jboss 4.2.3应用程序

公胤运
2023-03-14

我们维护一个遗留的(jboss 4.2.3、EJB3、jsp、jdk 1.6.45 64b)应用程序。

    null
<mbean code="org.jboss.util.threadpool.BasicThreadPool"name="jboss.system:service=ThreadPool">
  <attribute name="Name">JBoss System Threads</attribute>
  <attribute name="ThreadGroupName">System Threads</attribute>
  <attribute name="KeepAliveTime">60000</attribute>
  <attribute name="MaximumPoolSize">10</attribute>
  <attribute name="MaximumQueueSize">1000</attribute>
  <attribute name="BlockingMode">run</attribute>

我们的一个客户在一天中的一部分时间里有一些不好的性能。
生成了许多与用户活动没有任何关系的线程。

正常活动线程数为300/400线程

  • 有时它在几秒钟内增长到4k,在几分钟内缓慢下降
  • 有时它可以增长到25 k个线程,并且需要几个小时才能减少,应用程序变得没有响应(需要重新启动)

共有1个答案

沈华皓
2023-03-14

决心!该问题与SQL SERVER Jdbc驱动程序有关,我们的代码在语句上使用setQueryTimeout指令,驱动程序中有一个bug导致它为每个查询创建一个线程来管理超时。

参见:https://connect.microsoft.com/sqlserver/feedbackdetail/view/785983/jdbc-aderatory-thread-for-every-query-when-using-setquerytimeout
https://connect.microsoft.com/sqlserver/feedback/details/669427/property-to-create-timer-threads-per-statement-or-connection-in-jdbc-driver

删除setQueryTimeout指令可以解决这个问题。

HTH!

 类似资料:
  • 我有一个用Keycloak保护的JEE服务(JaxRx),身份验证是有效的,但是当我想用应用安全性时,我得到了。 该服务部署在Wildfly11中,关于文档,我使用和下一个配置文件()将安全上下文传播到EJB层。 我在Wildfly中安装了keycloak。 如图中所示,请求用户是在RequestContext中标识的,但在SessionContext(上下文)不存在的情况下,它显示而不是用户。

  • 问题内容: 我有以下代码片段: 在这里,如何在不创建线程类实例的情况下为线程调用方法? 问题答案: 您已经在创建Thread类的实例-您对此不做任何事情。您甚至 可以不使用局部变量 来 调用: …但是我个人通常会将其分配给局部变量,然后执行您想要执行的其他任何操作(例如,设置名称等),然后启动它:

  • 我希望能够识别唯一的匿名用户,所以我可以在数据库中为该用户存储一些信息。一个客人购物车之类的东西。 我并不特别想使用会话,因为如果我一直使用无会话数据方法构建,我喜欢服务器之间的故障转移。 在spring security或generic spring中,是否有任何方法可以获得一个标识令牌,我可以使用它来标识特定的匿名用户(主键)?

  • 我目前分析了我的kafka制作人Spring boot应用程序,发现许多“kafka制作人-网络-线程”正在运行(总共47个)。即使没有发送数据,它也永远不会停止运行。我的应用程序看起来有点像这样: 与KafkaSender: 因为每次我想给kafka发送消息时,我都会引用一个新的KafkaSender,所以我认为会创建一个新的线程,然后将消息发送到Kafka队列。目前看起来像是产生了一批生产者,

  • 我正在尝试开发一个应用程序,它应该能够运行在只有CLI的环境中,以及在启用GUI的模式下。由于我的一些工作是由Jav FX线程完成的,所以我需要在不启动图形引擎的情况下启动JavaFX主线程,因为这在只使用CLI的环境中会崩溃。我该怎么做?我已经编写了第一个主类,它将使用命令行参数来决定GUI是否将被启动或者它应该在CLI模式下运行。GUI已经工作了,我只需要弄清楚如何在另一个类中运行没有GUI的

  • 问题内容: 我正在编写一个GUI应用程序,该应用程序通过Web连接定期检索数据。由于此检索需要一段时间,因此这会导致UI在检索过程中无响应(无法拆分成较小的部分)。这就是为什么我想将Web连接外包给一个单独的工作线程。 [是的,我知道,现在我有两个问题。] 无论如何,该应用程序使用PyQt4,所以我想知道更好的选择是:使用Qt的线程还是使用Python threading模块?各自的优点/缺点是什