IPv6가 활성화된 경우 Eclipse가 JUnitRunner 프로세스에 연결하는 데 시간이 오래 걸리는 이유는 무엇입니까?

IPv6가 활성화된 경우 Eclipse가 JUnitRunner 프로세스에 연결하는 데 시간이 오래 걸리는 이유는 무엇입니까?

내 컴퓨터에서 IPv6가 활성화되면 새 JUnit 프로세스를 시작하고 JUnit 보기에 테스트 트리가 나타나는 사이에 30분이 경과했습니다.

IPv6를 비활성화하면 테스트가 즉시 나타납니다.

내가 보는 것은 프로세스가 생성된 다음 ca가 중단된다는 것입니다. 30대 SocketImpl.connect(). 를 사용하면 netstat다음과 같은 줄을 볼 수 있습니다.

tcp6       0      1 fe80::xxxx:xxxx:x:51019 ::1:48469               SYN_SENT

왜 그런 일이 발생합니까?

답변1

한 가지 가능성:

실행기 프로세스는 127.0.0.1IPv4 루프백 주소인 에서만 수신 대기하지만 Eclipse 는 또는 localhost중 하나일 수 있는 주소 에 연결하려고 합니다 . 후자는 IPv6 루프백입니다. 대부분의 운영 체제에서는 IPv6이 활성화되어 있으며 선호되므로 Eclipse는 IPv6을 먼저 시도합니다.127.0.0.1::1::1

JUnitRunner는 IPv6 주소를 수신하지 않으므로 OS는 TCP RST(또는아마도방화벽이 제대로 설정된 경우 ICMP "포트에 연결할 수 없음"). 그러나 이러한 시도를 자동으로 삭제하는 방화벽 구성이 있을 수 있습니다. 이는 클라이언트(Eclipse)가 전송되지 않은 응답을 기다리고 있음을 의미합니다.

먼저 방화벽 구성( ip6tables)을 확인하세요. 어떤 방식으로든 루프백 연결을 차단할 이유가 없습니다. 방화벽을 일시적으로 비활성화한 상태에서 테스트합니다. 도움이 되지 않으면 Eclipse를 사용하도록 구성할 수 있는지 127.0.0.1또는 JUnit이 IPv6 및 IPv4를 모두 수신하도록 구성할 수 있는지 확인하세요.

관련 정보