과부하 테스트 중 메모리 사용량이 매우 낮음

과부하 테스트 중 메모리 사용량이 매우 낮음

나는 많은 부하 테스트를 수행한 WordPress 웹 사이트를 가지고 있습니다. 아래에서 볼 수 있듯이 CPU 사용량은 물론 높지만 동시에 RAM 사용량은 0.4%를 넘지 않습니다. 로드 테스트에서는 오류가 발생하지 않지만 웹사이트 로딩 시간이 매우 깁니다. RAM의 가용 용량이 실제로 사용되지 않는 것은 아닌지 걱정됩니다. 아니면 초당 10,000개의 클라이언트에 대해 낮은 RAM 사용량이 정상인가요?

서버 사양:

  • CPU: AMD Ryzen 7 PRO 3700 8코어 프로세서(16코어)
  • RAM: 64GB
  • SSD: 960GB NVMe
  • 대역폭: 1Gbps
  • OS: 우분투 20.04.4 LTS

캐싱이 활성화되지 않았습니다.

나는 top명령 으로 그 결과를 얻습니다

top - 14:12:22 up  4:11,  2 users,  load average: 29.49, 16.27, 7.29
Tasks: 467 total, 143 running, 301 sleeping,  23 stopped,   0 zombie
%Cpu(s): 27.6 us, 45.5 sy,  0.0 ni, 24.8 id,  0.0 wa,  0.0 hi,  2.1 si,  0.0 st
MiB Mem :  64306.9 total,  50683.7 free,   7559.5 used,   6063.7 buff/cache
MiB Swap:   7630.0 total,   7630.0 free,      0.0 used.  55881.2 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
  37346 nginx     20   0  270356 266728   6364 R  78.1   0.4   2:19.89 nginx
  57982 fibonac+  20   0  355720 153908 105132 S  14.0   0.2   0:03.36 php-fpm
  61772 fibonac+  20   0  353552 150692 105776 S  14.0   0.2   0:01.26 php-fpm
   1524 mysql     20   0 9117616 192712  20468 S  13.6   0.3   1:17.50 mysqld
  57048 fibonac+  20   0  355788 153888 105072 S  13.6   0.2   0:04.08 php-fpm
  59186 fibonac+  20   0  353712 151920 105132 S  13.6   0.2   0:02.86 php-fpm
  61435 fibonac+  20   0  353680 150108 105120 R  13.6   0.2   0:01.66 php-fpm
  57693 fibonac+  20   0  355760 153964 105132 S  13.3   0.2   0:04.53 php-fpm
  59195 fibonac+  20   0  353684 151912 105124 S  13.3   0.2   0:02.86 php-fpm
  51154 fibonac+  20   0  357824 156160 105136 R  12.3   0.2   0:08.10 php-fpm
  51197 fibonac+  20   0  357780 156064 105088 R  12.0   0.2   0:07.05 php-fpm
  58034 fibonac+  20   0  355728 153616 105132 R  11.0   0.2   0:03.17 php-fpm
  51261 fibonac+  20   0  357780 156064 105136 R  10.0   0.2   0:06.74 php-fpm
  52563 fibonac+  20   0  358116 162056 110892 R  10.0   0.2   0:06.62 php-fpm
  57410 fibonac+  20   0  355728 153948 105132 R  10.0   0.2   0:03.86 php-fpm
  59521 fibonac+  20   0  351636 149816 105136 R  10.0   0.2   0:01.98 php-fpm
  60246 fibonac+  20   0  353752 151856 105140 R  10.0   0.2   0:02.70 php-fpm
  51147 fibonac+  20   0  357812 156156 105136 R   9.6   0.2   0:07.93 php-fpm
  51210 fibonac+  20   0  357780 156136 105136 R   9.6   0.2   0:08.08 php-fpm
  51225 fibonac+  20   0  357776 156112 105128 R   9.6   0.2   0:07.47 php-fpm
  51241 fibonac+  20   0  357780 156112 105136 R   9.6   0.2   0:06.95 php-fpm
  51251 fibonac+  20   0  357784 156072 105136 R   9.3   0.2   0:06.92 php-fpm
  51255 fibonac+  20   0  357784 156132 105140 R   9.3   0.2   0:07.43 php-fpm
  57054 fibonac+  20   0  355784 153952 105124 R   9.3   0.2   0:03.91 php-fpm
  57056 fibonac+  20   0  355768 153960 105132 R   9.3   0.2   0:03.85 php-fpm
  59192 fibonac+  20   0  353708 151508 105120 R   9.3   0.2   0:02.73 php-fpm
  61746 fibonac+  20   0  343316 140124 105140 R   9.3   0.2   0:00.74 php-fpm
  51233 fibonac+  20   0  357776 156112 105140 R   9.0   0.2   0:06.65 php-fpm
  51243 fibonac+  20   0  357784 156140 105120 R   9.0   0.2   0:07.97 php-fpm
  55161 fibonac+  20   0  355728 153988 105132 R   9.0   0.2   0:04.28 php-fpm
  57424 fibonac+  20   0  355736 153600 105132 R   9.0   0.2   0:03.30 php-fpm
  59185 fibonac+  20   0  353684 151496 104832 R   9.0   0.2   0:02.73 php-fpm
  51177 fibonac+  20   0  357812 156132 105136 R   8.6   0.2   0:07.17 php-fpm
  57401 fibonac+  20   0  355728 153620 105132 R   8.6   0.2   0:03.25 php-fpm
  51239 fibonac+  20   0  357836 156128 105136 R   8.3   0.2   0:06.93 php-fpm
  54835 fibonac+  20   0  357776 155544 104892 R   8.3   0.2   0:04.93 php-fpm
  61764 fibonac+  20   0  345492 143512 105588 R   8.3   0.2   0:01.07 php-fpm
  50951 fibonac+  20   0  357860 156164 105140 R   8.0   0.2   0:08.77 php-fpm
  51024 fibonac+  20   0  357816 156128 105136 R   8.0   0.2   0:07.97 php-fpm
  51160 fibonac+  20   0  357808 156156 105136 R   8.0   0.2   0:07.45 php-fpm
  54833 fibonac+  20   0  357832 155788 104816 R   8.0   0.2   0:06.09 php-fpm
  57047 fibonac+  20   0  355788 153864 105068 R   8.0   0.2   0:03.91 php-fpm
  59193 fibonac+  20   0  355760 153208 105080 R   8.0   0.2   0:03.08 php-fpm
  63679 fibonac+  20   0  260456 107648  80836 R   8.0   0.2   0:00.24 php-fpm
  63682 fibonac+  20   0  260456 107672  80860 R   8.0   0.2   0:00.24 php-fpm
  51028 fibonac+  20   0  357856 156068 105136 R   7.6   0.2   0:06.58 php-fpm
  53620 fibonac+  20   0  357776 156048 105132 R   7.6   0.2   0:05.68 php-fpm
  54832 fibonac+  20   0  357776 155968 105052 R   7.6   0.2   0:05.61 php-fpm
  55152 fibonac+  20   0  357780 156040 105132 R   7.6   0.2   0:05.36 php-fpm
  57981 fibonac+  20   0  355732 153596 105132 R   7.6   0.2   0:03.30 php-fpm
  58035 fibonac+  20   0  355736 153604 105132 R   7.6   0.2   0:03.29 php-fpm
  59184 fibonac+  20   0  353736 151484 105100 R   7.6   0.2   0:02.47 php-fpm
  59189 fibonac+  20   0  356072 159176 110760 R   7.6   0.2   0:05.38 php-fpm
  63683 fibonac+  20   0  260456 106668  80072 R   7.6   0.2   0:00.23 php-fpm
  51208 fibonac+  20   0  357780 156188 105140 R   7.3   0.2   0:07.25 php-fpm
  51237 fibonac+  20   0  357776 156184 105136 R   7.3   0.2   0:07.43 php-fpm

답변1

10000 클라이언트/초?

실제로 받을 것으로 예상되는 요청의 규모는 어느 정도입니까? 전체 네트워크인 Stack Exchange는 아마도 최고조에 달할 것입니다.초당 요청 5,000개매월 최대 13억 페이지 조회수. 직접적인 비교는 어렵지만, 귀하가 하고 있는 일은 그보다 작다고 가정합니다.

RAM의 사용 가능한 용량은 실제로 사용되지 않습니다.

현재 시점에서 메모리의 많은 부분이 사용되지 않는다는 것은 맞습니다. 50683MB의 여유 공간은 절대적인 숫자와 총 64306MB의 78%에 해당하는 양입니다. 이를 낭비적이고 확장을 위한 넉넉한 할당으로 처리할지 아니면 대부분의 64GB 서버에 적합한 단일 크기로 처리할지 여부는 용량 계획의 일부로서 귀하의 판단에 달려 있습니다.

60개(?)의 웹 서버 프로세스와 기타 잡동사니는 64GB 메모리에 큰 문제가 되지 않습니다. 각각 약 150MB의 RES를 확인하세요. 이론적으로 메모리 계산은 총 5,000MB에 달할 수 있지만 사람들이 만드는 단순한 가정보다 항상 더 복잡합니다. Linux는 게으르고 고유한 데이터에 물리적 메모리 페이지를 할당하는 경향이 있습니다. 동일한 작업의 수십 개의 복사본이 잘 "압축"됩니다. 특히 작은 작업 세트로 CPU를 구동할 수 있는 컴퓨팅 벤치마크 워크로드의 경우 더욱 그렇습니다.

사용 가능한 메모리는 많지만 애플리케이션에 대한 응답 시간이 느리면 성능에 대한 다른 제한 요소가 분명히 있습니다. 그것을 찾는 것은 필요하다체계적인 접근시스템의 모든 측면을 검사합니다. PHP 조정 매개변수부터 기타 리소스(네트워크?), 애플리케이션 동시성 문제까지 모든 것입니다.

실제로 Linux에서는 디버그 기호를 설치하고 실행합니다. perf top CPU에 어떤 기능이 있는지 알면 사용자 또는 커널 코드에서 심층적으로 무슨 일이 일어나고 있는지 분석하는 데 도움이 됩니다. 이상적으로는 코드를 프로파일링할 수 있는 APM 도구와 같은 것도 있습니다.

관련 정보