2010-02-10 2 views
1

XML-RPC.NET을 사용하여 Python으로 작성된 Linux XML-RPC 서버와 통신하려고합니다. Cook Computing의 XML-RPC.NET에서 샘플 애플리케이션 (MathApp)을 사용해 보았지만 동일한 LAN 내에서 두 개의 숫자를 서버에 추가하는 데 30 초가 걸렸습니다.XML-RPC.NET이 포함 된 Windows 7의 느린 XML-RPC

필자는 Windows 7에서 파이썬으로 작성된 간단한 클라이언트를 실행하여 동일한 서버를 호출하려고 시도했으며 5 초 만에 응답했습니다. 이 머신에는 비슷한 처리 능력을 갖춘 4GB의 RAM이 있으므로 문제가되지 않습니다.

그런 다음 Java 및 PHP가 설치된 Windows XP 시스템에서 서버를 호출하려고했습니다. 두 응답은 거의 즉각적으로 빠르다. 서버가 localhost에서도 빠르게 응답하므로 서버에서 대기 시간이 발생하지는 않습니다.

내 인터넷 검색에서 Windows의 IPv6 사용과 관련된 몇 가지 문제를 반환했지만 서버 호출에 동일한 서브넷에 IPv4 주소 (호스트 이름 아님)가 포함되어 있습니다. 어쨌든 나는 IPv6를 끄고 아무 것도 바뀌지 않았다.

대기 시간의 원인을 확인할 수있는 방법이 있습니까?

+0

받기 와이어 샤크 (http://www.wireshark.org/)과 와이어에 무슨 일이 일어나고 있는지 볼 - 그 가능성이 당신을 가리킬 수 있습니다 범인 (또는 최소한 좁은 것). 특히 당신이 일하는 의사 소통과 그것을 비교할 수 있기 때문에. –

+0

xml-rpc는 빠르게 타오르는 것으로 유명하지 않습니다. (문제가있을지라도) 같은 종류의 기능을 조금 더 빠르게 제공 할 ICE (www.zeroc.com)를보고 싶을 수도 있습니다. . –

답변

0

클라이언트 컴퓨터에서 패킷 캡처를 실행하고 네트워크 트래픽 타이밍과 기능 호출 시간을 비교하십시오.

이렇게하면 느린 프로세스에서 대기 시간을 결정하는 데 도움이됩니다. 응용 프로그램 시작 시간, 이름 확인 등

어떻게 클라이언트에서 서버를 지정하고 있습니까? IP별로? FQDN으로? 사용하는 각 응용 프로그램에서 주소 지정 방법이 동일합니까?

동일한 원격 프로 시저를 동일한 느린 응용 프로그램에서 여러 번 호출하는 경우 소요 시간이 선형 적으로 증가합니까?

1

및 하위 클래스 (SimpleXMLRPCServer 포함)에 영향을 미치는 a bug이 있습니다. 기본적으로 서버는 로그하려는 모든 IP 주소에 대해 socket.getfqdn 함수를 호출 할 가능성이 높습니다. 이 article은 아마도 더 잘 설명 할 것입니다.

해결 방법은 TL을 위해,이 설명; DR :

import BaseHTTPServer 
def not_insane_address_string(self): 
    host, port = self.client_address[:2] 
    return '%s (no getfqdn)' % host #used to call: socket.getfqdn(host) 
BaseHTTPServer.BaseHTTPRequestHandler.address_string = \ 
    not_insane_address_string 
+0

완벽하게 작동합니다 : http.server에서 Python 3.1을 사용합니다. BaseHTTPRequestHandler –