Netty 4에서 데이터 전송이 9분가량 중지되는 상황,

已查看 177 次
跳至第一个未读帖子

glapark

未读,
2021年9月25日 09:39:232021/9/25
收件人 Netty Korean User Group
안녕하세요? Netty 4로 개발할 때 비슷한 문제 겪으신 분 있으신지 해서 질문 드립니다.

배경을 말씀드리면,

1) Hadoop Shuffle Handler는 현재 Netty 3 기반으로 구현되어 있습니다.
2) Apache Tez에서 Hadoop Shuffle Handler 코드 기반으로 자체 Shuffle Handler를 구현했으며,
3) 저희 프로젝트에서 Tez Shuffle Handler 코드를 필요에 맞게 수정하여 사용하고 있습니다.
4) 그런데, 이번에 Apache Tez에서 Shuffle Handler 코드를 Netty 4를 사용하도록 수정하였고 저희 프로젝트에서도 코드를 동일하게 수정하였습니다. Netty 버전은 3.10.5.Final에서 4.1.48.Final로 올렸습니다.

저희 프로젝트에서 Shuffle Handler는 데이터 전송은 이루어지는데 중간에 전송이 9분가량 중지되는 상황이 발생합니다. (최종적으로는 데이터 전송이 제대로 완료됩니다.)

Shuffle Handler에서는 thread가 전부 다음 위치에서 멈춰있습니다.

"Tez Shuffle Handler Worker #88" #240 prio=5 os_prio=0 tid=0x00002ad9a5eaf800 nid=0x123bf runnable [0x00002ae92f0ae000]
   java.lang.Thread.State: RUNNABLE
        at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
        at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
        at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)
        at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
        - locked <0x00002ae00f89a348> (a io.netty.channel.nio.SelectedSelectionKeySet)
        - locked <0x00002ae00f89a4a8> (a java.util.Collections$UnmodifiableSet)
        - locked <0x00002ae00f89a368> (a sun.nio.ch.EPollSelectorImpl)
        at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
        at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:101)
        at io.netty.channel.nio.SelectedSelectionKeySetSelector.select(SelectedSelectionKeySetSelector.java:68)
        at io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:803)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:457)
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
        at java.lang.Thread.run(Thread.java:745)

LOG를 보면 다음처럼 9분가량 아무것도 안하다가 데이터 전송이 재개됩니다.

Sep 23, 2021 4:04:15 AM sun.net.www.protocol.http.HttpURLConnection getInputStream0
FINE: sun.net.www.MessageHeader@7f714a907 pairs: {null: HTTP/1.1 200 OK}{ReplyHash: 720FNcT2FMC2huA9ApyhkQ2Pris=}{name: mapreduce}{version: 1.0.0}{Content-Length: 1488900}{Connection: keep-alive}{keep-alive: timeout=5}
Sep 23, 2021 4:13:18 AM sun.net.www.protocol.http.HttpURLConnection plainConnect0

혹시 Netty 4로 프로그래밍하면서 thread가 9분가량 멈추는 현상 해결하신 경험 있다면 공유 부탁드립니다. (Tez Shuffle Handler 구현 코드는 자체 test를 모두 통과합니다.)


감사합니다.


回复全部
回复作者
转发
0 个新帖子