우리는 Delphi On Rails을 사용하는 서버에서 작동하고 HTTP, JSON 및 웹 소켓을 사용하여 클라이언트와 통신하는 응용 프로그램을 델파이로 작성했습니다. 최근 몇 가지 문제가 발생했으며 문제를 디버깅하고 문제의 원인을 찾기가 어렵습니다.일부 HTTP 요청의 이상한 TCP 재설정 (RST)
트래픽 분석에 Wireshark를 사용하면 다음과 같은 동작을 볼 수 있습니다. 클라이언트로부터 요청이 있습니다 (HTTP GET 파일). 일반적으로 우리는 요청을 처리하고 HTTP 상태 코드, 파일 (캐시되지 않은 경우) 등을 보냅니다. 그러나 클라이언트의 요청 (서버의 TCP SYN)이 인 경우 재현성 문제가 발생하지만 그 이후에는 서버가 RST 패킷을 보내고 TCP 통신이 중지됩니다. (디버그 환경에서
- :
이상한 것은합니다 (RST 패킷 통신을 방해 파일이 다를 수 있지만) 우리는 아주 잘 문제를 재현 할 수이며 신비 다음과 같은 경우 중 하나에 사라진다 메인 애플리케이션 창 이외의 다른 창으로 madExceptPatch와
- 가지 적어 포커스를 실행 파일을 패치하지, 릴리스 환경에서
- madExcept을 해제 델파이 IDE). 우리는 레일에 델파이와 함께 몇 가지 문제가 있었다 액세스 위반 및 디버그 예외를 방지하기 위해 여기에 약간의 수정을 할 수 없었
, 나는 DOR이 될 수있는 원인과 이상한 메모리 손상 또는 uncatched 예외로 의심 버그,하지만 여전히 혼란 스럽습니다. 특히 초점을 바꾼다면 문제가 사라질 수 있습니다.
내 주요 질문은이 문제를 해결하는 방법이 아니라 디버깅하는 방법과 문제를 찾을 위치입니다. TCP 리셋의 원인은 나를 괴롭 히며, 우리는 the usual procedures that process requests을 실행하지 않고 DOR이나 다른 것 (애플리케이션, Winsock, OS)이 실수로 연결을 재설정하는 것처럼 보입니다. Issue #6, Issue #7, Issue #8, forum entry : 그것과 관련이있을 수도로
완성도를 들어, 여기에 내가 델파이에 레일 프로젝트와 나는이 문제에 대해 madExcept 저자에게 물었다 포럼 스레드에보고 된 문제입니다.
이 방법이 도움이되는지 확신 할 수 없지만 Windows는 'accept()'하지 않은 연결 시도가 많은 대기중인 소켓으로 연결을 재설정합니다. "큰 백 로그"가 특히 잘 정의되지는 않았지만 합리적인 숫자로 간주됩니다. – cha0site
시스템 문제 일 수 있습니다. 특히 "변경된 포커스"에 대해 이야기 할 때 serverfault에 대한 질문을 시도해보십시오. – pmod