2017-08-10 18 views
0

私は外出先でいくつかのスレッドを持っています。それぞれのスレッドは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) 

どれでも問題は何ができるかのアイデア、またはそれを診断する方法についてのポインタ?

答えて

0

よくあることは、DefaultUncaughtExceptionHandlerを設定することです。 スレッドに例外がある場合は、少なくともこれが表示されます。

(defn init-jvm-uncaught-exception-logging [] 
    (Thread/setDefaultUncaughtExceptionHandler 
    (reify Thread$UncaughtExceptionHandler 
     (uncaughtException [_ thread ex] 
     (log/error ex "Uncaught exception on" (.getName thread)))))) 

スチュアートシエラはこれにうまく書かれています:https://stuartsierra.com/2015/05/27/clojure-uncaught-exceptions

+0

感謝を非常に。残念なことに、それは問題にどのような光も当てていません。 – Joe

関連する問題