그만큼timeout 지시문에 대한 문서아파치에서는 다음과 같이 말합니다.
클라이언트에 데이터를 쓸 때 송신 버퍼가 가득 찬 경우 패킷 승인을 기다리는 시간입니다.
그러나 TCP 스택이 수신 및 ACK를 받지 못하면 패킷을 다시 보냅니다. 그렇다면 이 두 가지가 어떻게 상호 작용합니까? 아파치 시간 초과는 연결을 중단하기 전 재시도에 대한 전체 제한을 설정합니까?
상황은 오류로 인해 컬 풀이 주기적으로 실패하는 상황입니다.
컬: (18) 읽을 수 있는 XXXXXX 바이트가 남아 있는 상태로 전송이 종료되었습니다.
정확한 이유를 알아내려고 노력 중이에요.
클라이언트와 서버 모두에서 Wireshark 추적을 수행한 결과 서버(아파치)가 어떤 이유로 세션을 조기에 종료하는 것 같습니다(방화벽이나 다른 강제 종료가 아님). 이는 자주 다운로드되는 두 가지 유형의 파일, 즉 큰 바이너리(100MB mp4) 파일과 작은 텍스트 파일(~10kb)에서 발생합니다. 대용량 파일의 경우 Apache 로그 메시지가 있습니다.
지정된 시간 초과가 만료되었습니다: [client :] AH01581: URI /xxxx/xxxx/xxxx/에 대한 데이터를 클라이언트에 쓰는 동안 시간 초과되었습니다.
현재 최선의 추측은 오류가 특정 시간에 뭉쳐지는 경향이 있기 때문에 이것이 네트워크 정체일 뿐이라는 것입니다. 그러나 가능하다면 이를 더 자세히 파악하고 싶습니다.
구성:
센트OS 6.6
아파치 2.4.16
컬 7.19.7