2009-06-24 7 views
4

클라이언트 측 Ajax Javascript 코드는 XMLHttpRequest을 사용하여 POST 요청을 보내지 만 응답을 얻는 데 0.5 초 지연이 발생하며 이유를 알아 내려고합니다. 0.2 초 정도 더 빨라야합니다. 두 엔드 포인트는 동일한 인트라넷에 있으며 클라이언트는 이더넷을 통해 직접 연결되고 서버는 802.11b를 통해 연결됩니다.POST 응답 시간이 너무 오래 걸림

 
Time(ms)  From   To    Info 
------------------------------------------------------------------------ 
0.0   client  server   [SYN] 
11.7   server  client   [SYN,ACK] 
11.8   client  server   [ACK] 
12.0   client  server   [POST] 
12.1   client  server   Continuation 
39.0   server  client   ACK 
46.0   server  client   ACK 
150.0  server  client   TCP segment of reassembled PDU 
311.0  client  server   ACK 
324.0  server  client   HTTP/1.1 200 OK (text/html) 
512.0  client  server   ACK 

실제 포스트 및 응답 정말 짧은 :

은 와이어 샤크를 사용하여 나는 다음과 같은 TCP 트랜잭션을 맡아 봤다고. 기본적으로 POST 요청의 내용은 다음과 같습니다

cmd=getCurXY&chan=CH_L_JX 

그리고 지금 보내고있다한다는 응답의 내용은 간단하다 :

cmd=noresponse 

응답은 Transfer-Encoding: chunked로 전송되고있다.

어떤 방식 으로든이 거래가 빨라질 수 있습니까?
왜 전체 0.5 초가 필요합니까?

+2

일부 코드가 포함되어야합니다 – stevedbrown

+0

이더넷을 통해 직접 연결을 시도 했습니까? TCP 스택이 패킷을 조각내는 것이 이상하게 보입니다. MTU가 잘못 구성 되었습니까? – qdot

답변

0

우선이 보석을 gemfile의 개발 그룹 보석에 추가하는 것이 좋습니다.

group :development, :test do 
    gem 'rack-mini-profiler' 
end 

AJAX 요청 또는 웹 브라우저에서 모든 종류의 요청을 구현할 때 시간 트랜잭션을 추적 할 수 있습니다. 또한 Webrick (Rails에서 사용하는 기본 개발 서버)은 개발 속도가 매우 느린 서버이므로 Puma를 개발 서버로 사용하고 Unicorn을 프로덕션 서버로 사용하는 것이 좋습니다.

또한 정말로 이러한 요청을 관리하기 위해 레일스 컨트롤러를 사용해야합니까? 이러한 종류의 프로젝트에 대한 아주 좋은 구현은 미들웨어를 사용하는 것입니다. 그것은 여전히 ​​루비 코드이지만 모든 Rails 기능을로드하지 않아도 응답 속도가 빨라집니다. 자세한 내용은 http://railscasts.com/episodes/319-rails-middleware-walkthrough

감사합니다.

관련 문제