![IPv6가 활성화된 경우 Eclipse가 JUnitRunner 프로세스에 연결하는 데 시간이 오래 걸리는 이유는 무엇입니까?](https://rvso.com/image/1314341/IPv6%EA%B0%80%20%ED%99%9C%EC%84%B1%ED%99%94%EB%90%9C%20%EA%B2%BD%EC%9A%B0%20Eclipse%EA%B0%80%20JUnitRunner%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%97%90%20%EC%97%B0%EA%B2%B0%ED%95%98%EB%8A%94%20%EB%8D%B0%20%EC%8B%9C%EA%B0%84%EC%9D%B4%20%EC%98%A4%EB%9E%98%20%EA%B1%B8%EB%A6%AC%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
내 컴퓨터에서 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.1
IPv4 루프백 주소인 에서만 수신 대기하지만 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를 모두 수신하도록 구성할 수 있는지 확인하세요.