HTTP 프록시/FASTCGI/SCGI 클라이언트 연결이 끊어 졌을 때 연결되지 않음 - 버그 또는 기능?

StackOverflow https://stackoverflow.com/questions/1354690

문제

나는 일하고있다 혜성 지원 ~을 위한 CPPCMS 긴 xmlhttprequest 여론 조사를 통한 프레임 워크. 대부분의 경우 서버의 응답이 제공되기 전에 이러한 요청이 클라이언트가 닫습니다. 예를 들어 페이지가 닫히거나 사용자가 다른 페이지로 이동하거나 방금 반박됩니다.

서버 측에서는 연결이 삭제된다는 알림을받을 것으로 예상됩니다. 나는 3 개의 커넥터를 통해 FASTCGI, SCGI 및 SIGHT HTTP 프록시를 통해 응용 프로그램을 테스트했습니다.

3 개의 주요 UNIX 웹 서버 인 APACHE2, LIGHTPD 및 NGINX에서 마지막으로 만 애플리케이션이 대기 큐에서 요청을 제거 할 수 있도록 닫힌 연결을 가졌습니다. 이는 FASTCGI 및 HTTP 프록시 커넥터 모두에서 작동했습니다. (NGINX에는 기본적으로 SCGI 모듈이 없습니다).

다른 사람들, Apache와 LightTPD는 연결이 끊긴 클라이언트에 대해 연결하거나 백엔드를 알리지 않습니다. 이것은 3 개의 지원되는 API (FASTCGI, SCGI 및 HTTP 프록시)에 대해 발생합니다.

나는 문제를 열었다 lighttpd, 그러나 더 많은 것은 나에게 상담하는 것은 Apache- Apache- 성숙하고 잘 지원되는 웹 서버가 LightTPD로서, 클라이언트가 사라진 서버 백엔드를 공개하지 않는다는 사실입니다.

질문:

  1. 이것은 버그입니까, 아니면 기능입니까? 웹 서버와 응용 프로그램 백엔드 간의 연결을 닫지 않는 이유가 있습니까?
  2. FASTCGI/SCGI/HTTP-PROXY 백엔드를 통해 이러한 서버 뒤에서 작동하는 실제 혜성 응용 프로그램이 있습니까?
  3. 위의 사실이라면이 문제를 어떻게 처리합니까? 나는 10 초마다 모든 연결을 시간에 맞출 수 있다는 것을 이해하지만 클라이언트가 듣는 한 클라이언트를 듣는 한 유휴 상태로 유지하고 싶습니다. 이는 더 쉽게 스케일 업을 허용하기 때문에 각 연결이 매우 chee 기가되기 때문에 비용은 선택된 소켓 일뿐입니다.

감사!

도움이 되었습니까?

해결책

(1) 기능. 또는보다 구체적으로 구현 세부 사항에서 낙진.

TCP/IP 연결에는 지속적인 트래픽 흐름이 앞뒤로 흐르지 않습니다. 따라서 클라이언트가 (a) 연결을 닫고 있다고 말한 고객이 없거나 (b) 타임 아웃이 없다는 것을 알 수있는 방법이 없습니다.

(2) 나는 혜성이나 CPPCM에 특히 익숙하지 않습니다. 그러나 예, 언급 된 웹 서버 뒤에 실행되는 모든 종류의 CMS 서버가 있으며 모두이 문제를 처리해야합니다 (예, 통증입니다).

(3) 타임 아웃이 유일한 방법이지만 고통을 완화 할 수 있습니다. 활동이 없을 때 클라이언트가 N 초마다 연결을 통해 서버를 핑하도록하십시오. 아무것도 할 필요가 없으며 답장에 물건을 다룰 수 있습니다. 동시 편집 또는 필요한 모든 것에 대한 알림.

mod_fastcgi가 Apache가 연결이 끊김 또는 연결 시간이 초과되었다고 말하는 백엔드를 알려주는 것이 놀랍습니다. 그리고 당신은 가장 먼저 당황한 것은 아닙니다.

이 페이지의 두 번째 패치는 해당 특정 문제를 해결해야합니다.

http://osdir.com/ml/web.fastcgi.devel/2006-02/msg00015.html

다른 팁

http://ncannasse.fr/blog/tora_comet

구체적인 정보가 없지만이 기사는 클라이언트가 Apache에서 분리 된시기를 감지 할 수 있다고 언급합니다. 보다 tora.Queue. 그리고 소스가 Neko CVS에서 사용할 수있는 것처럼 들리므로 거기에서 몇 가지 단서를 찾을 수 있습니다. 행운을 빕니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top