2012-02-19 2 views
3

나는 cpu-heavy .net 4.0 windows 어플리케이션을 .net 4.0 wcf 서비스로 이식하고 있습니다. 기본적으로 wcf 서비스에 .net 클래스를 가져 왔습니다..net wcf 서비스의 성능을 향상시키는 방법

wcf 서비스의 성능을 제외하면 모두 잘 작동합니다. 동일한 개발 시스템에서 로컬로 실행되는 aspx.net wcf 서비스에서 6267947 틱 (2539ms)을 사용하는 작업은 815349861 틱 (13045ms)을 사용합니다.

내 로컬 컴퓨터만큼 성능이 나쁜 appharbor에 이미 서비스 + 테스트 클라이언트를 업로드했습니다. 내 테스트 앱에 대한 링크는 http://www.wsolver.com/입니다. 성능 향상 방법에 대한 아이디어가 있습니까?

+0

서비스가 수행해야하는 작업은 무엇입니까? –

+0

@Johnny Graber는 스크래블 솔버입니다. 많은 사전이 메모리에있는 트리 구조에로드됩니다. – Muleskinner

+2

실제 * 수행중인 * 코드는 동일한 시간이 걸립니다. WCF 로의 전환은 동기화 컨텍스트 등을 사용하지 않는다고 가정하고 전송 문제에만 영향을 주어야합니다. 명확히 할 수 있습니까? "하고있는"코드? 또는 운송? 또는...? –

답변

2

당신은 복잡한 자료 구조의 시간이 소요 초기화를 할 필요가 있다면, 당신은해야하고이 MvcApplication 객체의 정적 변수에 자료 구조를 생성 할당합니다. 응용 프로그램 시작시 한 번만 수행하면 각 요청에서 수행하는 것이 훨씬 빠릅니다.

+0

감사합니다. wcf 서비스를 로컬에서 실행하고 appharbor에서 온라인으로 실행할 때의 성능 차이 (apprarbor에서 충분한 CPU 리소스가 부족하여 계산 속도가 3 배 느려지고 네트워크 트래픽을 고려하지 않음)를 설명 할 수 있습니다. 그렇다면 여분의 근로자를 구매하여 성과를 최적화 할 수 있습니까? – Muleskinner

+0

추가 작업자를 추가해도 개별 요청 응답 시간은 늘어나지 않지만 추가 동시성을 확보하므로 총 요청 처리량이 증가합니다. 우리는 고등 개인 근로자를 추가하는 것이 우리가해야 할 일인지 생각하고 있습니다. 동기 요청에서 자원 집약적 인 처리를 수행하는 것이 적절한 지 여부와이를 비동기식 AJAX 요청으로 이동하는 것이 더 나을지 여부를 고려할 수 있습니다. – friism

+0

답변 해 주셔서 감사합니다. – Muleskinner

3

요청 시간에 구성 될 수있는 서비스의 종속성을 확인하십시오. 여기에는 생성자 종속성 및 필드/속성 종속성이 포함됩니다. 어쩌면 그들 중 하나가 지연의 원인이 될 수 있습니까? 이 경우에는 장기 실행 클래스를 인스턴스화하는 데 싱글 톤을 사용하는 것이 좋습니다.

후속 요청으로 인해 지연이 여전히 발생했는지 확인 했습니까?

또한 Datetime.Now.toString()과 같은 간단한 작업을 수행하고 동일한 문제가 있는지 확인하는 밴드 서비스를 새로 만듭니다.

0

사전 트리는 캐시에 한 번만로드됩니다. 당신은 당신이하는 모든 전화에 그것을 로딩하지 않습니까?

+0

그 순간에 모든 호출이로드됩니다 (이것이 첫 번째 프로토 타입 임). 그러나 이것은 문제가 아닙니다. 트라이로드 시간은 417ms가 소요됩니다. – Muleskinner

1

13 초 동안 (또는 procdump를 사용하여 여러 번) 전체 메모리 덤프를 취한 다음 프로세스 (windbg 및 sos.dll)에서 발생하는 것을 acutally 확인합니다. 그런 다음 어떤 코드가 범인인지 파악할 수 있습니다.

3

아래의 기사 및 백서를 살펴보십시오. 탐색에 필요한 구체적인 성능 고려 사항을 제공하고 조정, 최적화 또는 변경하기위한 실제 설정을 제공해야합니다.

Performance Tuning WCF Services

Optimizing WCF Web Service Performance

Using ServiceThrottlingBehavior to Control WCF Service Performance

Transport Quotas

Optimizing IIS Performance

ASP.NET Performance Overview

Application_Start()에 한번에

A Performance Comparison of Windows Communication Foundation (WCF) with Existing Distributed Communication Technologies

+0

이 링크는 꽤 유용한 목록이라고 생각하지만 도움이되는 특정 기술을 확장 할 수 있습니까? – MatthewJ

관련 문제