2016-12-22 6 views
1

I JMeter를 사용하여 WebApi에로드합니다. 모든 사용자에 대해 100 명의 사용자 + 4000 루프.Owin + Unity 컨테이너의 성능이 좋지 않습니다.

  1. 간단한 OWIN : 평균 5-10ms, 최대 응답 200ms II. OWIN
  2. Microsoft Unity 컨테이너 : 평균 15ms, 최대 응답 9000ms.

성능 차트

enter image description here

나는 OWIN의 자체 호스팅 WebApi + 마이크로 소프트 화합 컨테이너를 가지고있다.

public IDependencyScope BeginScope() 
    { 
     var childContainer = Container.CreateChildContainer(); //47% CPU 

     return new UnityDependencyScope(childContainer); 
    } 

    public object GetService(Type serviceType) 
    { 
     if (typeof(IHttpController).IsAssignableFrom(serviceType)) 
     { 
      return Container.Resolve(serviceType); //35% CPU 
     } 

     try 
     { 
      return Container.Resolve(serviceType); 
     } 
     catch 
     { 
      return null; 
     } 
    } 

    public void Dispose() 
    { 
     Container.Dispose(); //16%CPU 
    } 

방법 유니티 용기의 사용을 최적화하기 위해 어디서 문제가 : VS 성능 탐색기와

나는 뜨거운 경로를 조사?

답변

0

컨트롤러가 너무 많은 개체를 사용하여 구성하는 경우 모든 개체 그래프를 작성하는 데 약간의 시간이 걸릴 수 있습니다.

컨트롤러를 공격 한 모든 요청에 ​​대해 모든 종속성을 전혀 인스턴스화하지 않아도 모든 종속성을 인스턴스화합니다.

하나의 큰 컨트롤러를 더 작은 여러 컨트롤러로 분할하고 개체 그래프 (종속성 트리)를 리팩토링하여 컨트롤러 당 최소로 유지할 수 있습니다.

관련 문제