问题标签 [blocked-threads]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
535 浏览

java - 这是循环死锁还是循环等待?

我正在使用 JProfiler 检测 Restful Java 微服务,同时使用 JMeter 发送多个请求。我看到有很多阻塞的线程。微服务使用Spring、SpringBoot。当发送多个请求时,会以某种方式出现问题。

在 JProfiler 工具中,我可以看到: 概述 主题历史 监控使用情况 监控历史 线程转储

  • 在我阅读:循环死锁哲学家就餐后,我认为存在循环死锁。这是正确的吗?
  • 死锁和循环死锁有什么区别?在互联网上浏览了一下之后,我看到了另一个概念,循环等待。循环等待呢?
  • 如果您查看 Monitor History 和 Overview 部分,您会看到很多阻塞的线程,还有一个线程等待其他线程完成。问题在于ReentrantLock.NonfairSync类。但是,如果您查看 Thread Dump,您会看到线程处于 Waiting 状态,并且在 stacktrace 的顶部您会看到sun.misc.Unsafe.park。使用方法 park 和 unpark 来实现线程锁。你知道它可以是什么吗?
  • com.fasterxml 库可能再次出现问题吗?杰克逊项目

谢谢

0 投票
0 回答
572 浏览

java - Java线程转储中的“等待”与“等待锁定”与“锁定”

查看线程转储,我看到几个 BLOCKED 线程,但有些“等待锁定”,有些“等待”,而只有一个 RUNNABLE 线程可能获得了锁定。我的问题是为什么有些“等待锁定”而其他“等待”?此外,“等待”的线程似乎有锁,但不是实际持有锁的 RUNNABLE 线程,因为它说它锁定了堆栈跟踪中较低地址的对象,那么如果它有锁,为什么它会阻塞(或者它没有锁)?

以下示例: 锁定对象位于 0x00000000c2ad4be8

等待

等待锁定

最后是 RUNNABLE 线程

0 投票
0 回答
662 浏览

java - 使用 apache commons 打开连接时线程被阻塞

从我的应用程序中,许多线程正试图从 oracle 获得连接,但我看到一次只有一个线程能够获得连接。在此线程获得连接之前,其他线程被阻塞,这导致应用程序运行缓慢。我需要帮助确定其他线程被阻塞的原因。我的连接数是否比池中的可用连接数少?

持有锁的线程。

0 投票
1 回答
309 浏览

java - String.toUpperCase() 上的 Java 阻塞线程

查询 Oracle 数据库时,其中一个线程的锁定时间超过 3 秒。这会在访问 Oracle 数据库时导致许多线程阻塞,从而导致线程数量突然增加和应用程序无响应。我正在使用 Tomcat 8.5、Tomcat 连接池、Java 8。跟踪阻塞线程:

这是 10+ BLOCKED 线程之一的跟踪

我不知道为什么 toUpperCase() 会锁定某些东西(据我所知,它是一些被锁定的 Integer 对象)超过 30 秒,但这每天都会发生多次。线程转储分析器在转储中没有发现任何死锁。Tomcat 池化查询阻塞线程 http-nio-80-exec-433 的日志需要 5 分钟才能完成。

这可能是 jvm、内存或其他问题吗?比如jdbc驱动或者连接池配置问题?

0 投票
0 回答
75 浏览

jmeter - JMeter Threads Getting blocked after sometime in test

Using JMeter 5.4.1 and JDK 11 in Non-GUI mode, running at 40 Thread at 5 requests/sec.

  • All Listeners Off
  • Disabled all assertions, relying on application logs
  • Groovy used as scripting language in JSR223, using to emulate Pacing between requests
  • Heap Size increased to 12 GB

After around 40 mins or sometime 70 mins, JMeter stops generating load as seen on Web Server logs. I ran Visual VM on JMeter machine, hooked into JMeter process and took a Thread Dump.

  1. Majority of my threads are in Monitor State

  2. Log as below: '''

    "Script11 - GetRequest 11-1" #61 prio=5 os_prio=0 cpu=13390.63ms elapsed=4266.73s tid=0x000001d1599d9800 nid=0xee0 waiting for monitor entry [0x000000ca924fe000] java.lang.Thread.State: BLOCKED (on object monitor) at java.io.PrintStream.println(java.base@11.0.11/PrintStream.java:881) - waiting to lock <0x0000000500857638> (a java.io.PrintStream) at org.apache.jmeter.reporters.Summariser.formatAndWriteToLog(Summariser.java:329) at org.apache.jmeter.reporters.Summariser.sampleOccurred(Summariser.java:208) at org.apache.jmeter.threads.ListenerNotifier.notifyListeners(ListenerNotifier.java:58) at org.apache.jmeter.threads.JMeterThread.notifyListeners(JMeterThread.java:1024) at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:579) at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:489) at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256) at java.lang.Thread.run(java.base@11.0.11/Thread.java:834)

  3. "0x0000000500857638" is Locked on

    "Script09 - GetRequest9 9-2" #55 prio=5 os_prio=0 cpu=13562.50ms elapsed=4266.74s tid=0x000001d1599d5000 nid=0x13e0 runnable [0x000000ca91efe000] java.lang.Thread.State: RUNNABLE at java.io.FileOutputStream.writeBytes(java.base@11.0.11/Native Method) at java.io.FileOutputStream.write(java.base@11.0.11/FileOutputStream.java:354) at java.io.BufferedOutputStream.flushBuffer(java.base@11.0.11/BufferedOutputStream.java:81) at java.io.BufferedOutputStream.flush(java.base@11.0.11/BufferedOutputStream.java:142) - locked <0x0000000500857660> (a java.io.BufferedOutputStream) at java.io.PrintStream.write(java.base@11.0.11/PrintStream.java:561) - locked <0x0000000500857638> (a java.io.PrintStream) at sun.nio.cs.StreamEncoder.writeBytes(java.base@11.0.11/StreamEncoder.java:233) at sun.nio.cs.StreamEncoder.implFlushBuffer(java.base@11.0.11/StreamEncoder.java:312) at sun.nio.cs.StreamEncoder.flushBuffer(java.base@11.0.11/StreamEncoder.java:104) - locked <0x00000005008577b8> (a java.io.OutputStreamWriter) at java.io.OutputStreamWriter.flushBuffer(java.base@11.0.11/OutputStreamWriter.java:181) at java.io.PrintStream.write(java.base@11.0.11/PrintStream.java:606) - locked <0x0000000500857638> (a java.io.PrintStream) at java.io.PrintStream.print(java.base@11.0.11/PrintStream.java:745) at java.io.PrintStream.println(java.base@11.0.11/PrintStream.java:882) - locked <0x0000000500857638> (a java.io.PrintStream) at org.apache.jmeter.reporters.Summariser.formatAndWriteToLog(Summariser.java:329) at org.apache.jmeter.reporters.Summariser.sampleOccurred(Summariser.java:208) at org.apache.jmeter.threads.ListenerNotifier.notifyListeners(ListenerNotifier.java:58) at org.apache.jmeter.threads.JMeterThread.notifyListeners(JMeterThread.java:1024) at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:579) at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:489) at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256) at java.lang.Thread.run(java.base@11.0.11/Thread.java:834)

Heap Utilization is around 1.5GB, allocation is 12 GB CPU Utilization on host machine is around 15% Any suggestions on how to avoid the JMeter threads getting blocked ?

Thanks.

0 投票
0 回答
18 浏览

locking - 当前线程在被阻塞并且在持有锁的同时切换上下文时如何释放锁

在这里,我有一个类信号量、等待和信号方法以及其他方法的实现。我的问题是,在查看等待方法时,当我们在该临界区阻塞当前线程时,何时释放等待方法内部的锁?我们可以看到阻塞方法是通过将当前线程放入阻塞队列,并从就绪队列中获取一些其他线程并发生上下文切换来实现的。如果发生上下文切换,则阻塞线程的上下文将保存在 ; 在 block() 方法之后,这意味着后面的行 (unlock()) 没有执行并且上下文被切换。因此,被阻塞的线程永远不会释放锁,还是我错过了什么?那么当我们在临界区切换上下文时,锁是如何释放的呢?这是实现: 类信号量的实现和类信号量的实现续 注意setContext方法和resume是通过setjmp和longjmp方法实现的。

0 投票
0 回答
10 浏览

reactjs - React 中的 Click 事件导致非常长的 JS 任务(几乎只有系统时间)

我编写了一个 React Web 应用程序,其中一个按钮有一些性能问题。每次我点击它时,页面都会在 1-2 秒内无响应,因为主线程被阻塞了。为了找出可能导致问题的原因,我在 Chrome DevTools 中运行了性能分析(附上下面的屏幕截图)。如果我们查看时间分布,我们可以很快看到该事件几乎花费了系统中的所有时间(子项)。任何想法这可能是什么以及如何优化它?

在此处输入图像描述