1+ using Microsoft . AspNetCore . Server . Kestrel . Core ;
2+
3+ namespace ProjectVG . Api . Configuration ;
4+
5+ /// <summary>
6+ /// 부하테스트 환경을 위한 성능 최적화 설정을 제공합니다.
7+ /// </summary>
8+ public static class LoadTestConfiguration
9+ {
10+ /// <summary>
11+ /// 부하테스트 환경에서 Kestrel 서버의 성능을 최적화합니다.
12+ /// </summary>
13+ /// <param name="options">Kestrel 서버 옵션</param>
14+ public static void ConfigureKestrelForLoadTest ( KestrelServerOptions options )
15+ {
16+ // 연결 한도 설정 (부하테스트용 고성능)
17+ options . Limits . MaxConcurrentConnections = 1000 ;
18+ options . Limits . MaxConcurrentUpgradedConnections = 1000 ;
19+
20+ // 요청 크기 및 타임아웃 최적화
21+ options . Limits . MaxRequestBodySize = 10_000_000 ; // 10MB
22+ options . Limits . RequestHeadersTimeout = TimeSpan . FromSeconds ( 30 ) ;
23+ options . Limits . KeepAliveTimeout = TimeSpan . FromMinutes ( 2 ) ;
24+ options . Limits . RequestHeadersTimeout = TimeSpan . FromSeconds ( 10 ) ;
25+
26+ // HTTP/2 최적화
27+ options . Limits . Http2 . MaxStreamsPerConnection = 100 ;
28+ options . Limits . Http2 . HeaderTableSize = 4096 ;
29+ options . Limits . Http2 . MaxFrameSize = 16384 ;
30+
31+ // 성능 로깅
32+ Console . WriteLine ( $ "LoadTest Kestrel Configuration Applied:") ;
33+ Console . WriteLine ( $ "- MaxConcurrentConnections: { options . Limits . MaxConcurrentConnections } ") ;
34+ Console . WriteLine ( $ "- MaxRequestBodySize: { options . Limits . MaxRequestBodySize } bytes") ;
35+ }
36+
37+ /// <summary>
38+ /// 부하테스트 환경에서 ThreadPool을 최적화합니다.
39+ /// </summary>
40+ public static void ConfigureThreadPoolForLoadTest ( )
41+ {
42+ // ThreadPool 최소 스레드 수 설정 (부하테스트용)
43+ ThreadPool . SetMinThreads ( 100 , 100 ) ;
44+
45+ // ThreadPool 상태 로깅
46+ ThreadPool . GetMinThreads ( out int minWorkerThreads , out int minCompletionPortThreads ) ;
47+ ThreadPool . GetMaxThreads ( out int maxWorkerThreads , out int maxCompletionPortThreads ) ;
48+
49+ Console . WriteLine ( $ "ThreadPool Configuration:") ;
50+ Console . WriteLine ( $ "- Min Worker Threads: { minWorkerThreads } ") ;
51+ Console . WriteLine ( $ "- Min Completion Port Threads: { minCompletionPortThreads } ") ;
52+ Console . WriteLine ( $ "- Max Worker Threads: { maxWorkerThreads } ") ;
53+ Console . WriteLine ( $ "- Max Completion Port Threads: { maxCompletionPortThreads } ") ;
54+ }
55+ }
0 commit comments