私は外出先でいくつかのスレッドを持っています。それぞれのスレッドはHTTPキットをブロックして呼び出します。私のコードは動作していますが、最近約30分後にフリーズするようになりました。私のスレッドはすべて、次の点で立ち往生している: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)
ラインmy_project.web.clj:35
をのようなものです:
(let [result @(org.httpkit.client/get "http://example.com")]
私はのコンテキストを実行しているので、(私はむしろcore.async
よりプレーンなJavaスレッドを使用していますKafkaクライアントはそれぞれ独自のスレッドをスピンアップします。特に、私はそれを数回、例えば5回並列に実行しています。
すべてのスレッドがHTTPキットでこのようにパークされてしまったという事実は、リソースリーク、または配信する機会がなくなる前に死んでいるHTTPキットのコード、またはおそらくリソース不足を示唆しています。
もう1つのスレッドがここに固執しているようです。すべての約束を妨げる可能性があります。
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