부두가 "7.6.8.v20121106"이고 내 서버가 https://github.com/ring-clojure/ring/tree/master/ring-jetty-adapter입니다.부두 실이 막히거나 죽은 채 잠겼습니다.
다음 코드를 사용하여 http://http-kit.org/을 사용하여 전화를 걸고 있습니다. 기본적으로 서버 호출을하지만 응답을 무시합니다. 내가 아는 것은 모든 서버 스레드가 차단/교착 상태가되는 것입니다. 이것은 서버 다운을 가져 오는 아주 쉬운 방법 인 것처럼 보이며 여기에서 무슨 일이 벌어지고 있는지 이해하고 싶었습니다. 클라이언트에서
코드는 다음과 같습니다
(require '[org.httpkit.client :as hk-client])
(defn hget [id]
(hk-client/get (str "http://localhost:5000/v1/pubapis/auth/ping?ping=" id)))
(doall (map hget (take 100 (range))))) ; Gives problem
(doall (map deref (map hget (take 100 (range)))))) ; Doesn't give problem
에서 차단 스레드
sun.nio.cs.StreamEncoder.write (StreamEncoder.java:118)
및
에서 교착 상태java.io.PrintStream.write (PrintStream.java:479)
누군가가 여기에서 진행되는 일을 도울 수 있다면 정말로 감사 할 것입니다.
해당 줄을 차단하면 클라이언트가 소켓에서 읽지 못했음을 나타냅니다. 서버가 혼잡 한 연결 (쓰기위한 것이거나 읽는 것이 아무것도 없습니다)에서 그 스레드를 차단했습니다. "그러나 응답을 무시하십시오"라고 말하면 응답을 읽거나 연결을 종료하시기 바랍니다. –
이 코드는 서버에서 실행 중입니다. 그리고 미들웨어의 라인이 로그를 호출합니다. 클라이언트가 http 요청을하고 응답을 무시합니다. 즉, https://github.com/http-kit/http-kit/issues/66#issuecomment-22441928에 따라 클라이언트의 응답을 수신하고 디코딩 한 다음 쓰레기 수거. " –