
제한된 상황에서 공개 웹페이지를 요청하면 100% 재현 가능한 약 2분의 지연이 발생합니다.
문제의 페이지:https://id.openjdk.java.net/console/login
클라이언트(curl) 로그와 서버(apache) 로그를 결합하면 일반적인 교환은 다음과 같습니다.
[client] 15:42:03.694959 => Send header, 96 bytes (0x60) 0000: GET /console/login HTTP/1.1
<DELAY HERE>
[server] [24/Feb/2015:22:44:26 +0000] "GET /console/login HTTP/1.1"
[client] 15:44:25.984150 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK
(시간대는 시간대에 따라 다르며, 시계가 동기화되지 않아 초가 약간 어긋날 수 있습니다.)
중요한 것:
- 클라이언트는 내 집 ISP를 통해 연결되며 특정 서브넷의 공용 IP 주소가 제공됩니다. 다른 범위의 고정 IP 주소가 주어지면 문제가 사라집니다.
- 이 서버의 '/console/login' 페이지가 요청됩니다. 'console/forgotPassword'를 요청하면 지연이 없습니다. 다른 서버에서는 비슷한 지연을 발견하지 못했습니다.
(분명히) 관련이 없는 것:
- 홈 네트워킹. 클라이언트가 ISP 모뎀에 연결하는 방법과 다른 모뎀을 사용해도 문제가 지속됩니다.
- 시간대/혼잡. 요청이 발생하는 시점에 관계없이 지연은 일관됩니다.
- DNS. 호스트 이름 대신 IP 주소를 사용하는 경우에도 동작은 동일합니다.
- HTTPS 핸드셰이킹. '컬' 상호작용의 이 부분은 항상 지연 없이 진행됩니다. HTTPS를 통해 'console/forgotPassword'에 액세스할 때 지연이 없습니다.
- 클라이언트 구성. 여러 브라우저에서 그리고 명령줄의 'curl'을 통해 재현 가능합니다. 여러 클라이언트 시스템 및 OS에서 재현 가능합니다.
- 이미지/스크립트/등 로딩. 추가 리소스를 요청하지 않는 'curl'을 사용할 때 지연이 발생합니다.
내 질문: 이에 대한 가장 그럴듯한 설명은 무엇입니까? 아니면 진단을 위해 다음에 무엇을 해야 합니까?
서버 문제? 제가 이해한 바에 따르면아파치 로그 형식, 지연이 발생하고 있습니다~ 전에서버는 GET 요청을 받지만 이것이 로그 타임스탬프를 읽는 적절한 방법인지 누군가 확인해 주시면 감사하겠습니다. 그렇다면 httpd에 요청을 보내기 전에 서버가 무엇을 하고 있는지, 또는 타임스탬프를 받기 전에 httpd가 무엇을 하고 있는지 명확하지 않습니다.
네트워킹 문제? 여기서 까다로운 부분은 지연이 분명히 애플리케이션 수준 메시지 내용, 즉 요청되는 특정 페이지에 따라 달라진다는 것입니다. 그리고 그것은 암호화되어야 합니다. (작은 마을) ISP 관리자는 콘텐츠 필터링을 수행하지 않는다고 말합니다... 어쨌든 도중에 일부 노드에 내 IP 주소 범위가 블랙리스트 등에 등록되어 있는지 궁금합니다.
답변1
비슷한 문제가 있었는데, 이는 xdebug 원격 연결 시간 초과로 인해 발생한 것으로 보입니다. 페이지에서 xdebug와 함께 PHP를 사용하는 경우 문제가 발생할 수 있습니다.
답변2
저에게는 페이지가 즉시 로드됩니다.
(이건 별로 중요하지 않다는 걸 알지만, 이것이 제 경험입니다.)
어디에서 연결하고 있나요? 일종의 DDOS 예방 조치를 취하고 있을 가능성이 높습니다.
귀하의 IP 주소가 블랙리스트에 등록되어 있거나 적어도 다른 모든 것보다 더 주의 깊게 검사될 수도 있습니다.