0
我有一些線程正在忙碌中,每個線程都會對HTTP Kit進行阻塞調用。我的代碼一直在工作,但最近約30分鐘後凍結。我的所有線程都停留在以下幾點:my_project.web.clj:35
使用HTTP-Kit停放線程
sun.misc.Unsafe.park(Native Method)
java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:997)
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1304)
java.util.concurrent.CountDownLatch.await(CountDownLatch.java:231)
clojure.core$promise$reify__7005.deref(core.clj:6823)
clojure.core$deref.invokeStatic(core.clj:2228)
clojure.core$deref.invoke(core.clj:2214)
my_project.web$fetch.invokeStatic(web.clj:35)
線是一樣的東西:
(let [result @(org.httpkit.client/get "http://example.com")]
(我使用的是普通的Java線程,而不是core.async
因爲我跑的情況下一組併發的Apache Kafka客戶端分別在它們自己的線程中,Kafka客戶端啓動了很多自己的線程,特別是當我運行它幾次時,例如5並行)。
事實上,我的所有線程最終停留在HTTP套件中,這表明資源泄漏或HTTP Kit中的某些代碼在它有機會交付之前死亡,或者可能資源匱乏。
另一個線程似乎卡在這裏。它可能會阻止所有承諾交付。
sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:850)
sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:781)
javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624)
org.httpkit.client.HttpsRequest.unwrapRead(HttpsRequest.java:35)
org.httpkit.client.HttpClient.doRead(HttpClient.java:131)
org.httpkit.client.HttpClient.run(HttpClient.java:377)
java.lang.Thread.run(Thread.java:748)
任何想法可能是什麼問題,或指示如何診斷它?
非常感謝。不幸的是,這並沒有解決問題。 – Joe