重負載測試期間記憶體使用率非常低
我有一個 wordpress 網站,我在上面進行了繁重的負載測試。正如您在下面看到的,CPU 使用率當然很高,但同時 RAM 使用率永遠不會高於 0.4%。負載測試不會產生任何錯誤,但網站的載入時間很長。我擔心 RAM 的可用容量並沒有真正使用。還是每秒 10000 個客戶端的低 RAM 使用率是正常的?
伺服器規格:
- CPU:AMD Ryzen 7 PRO 3700 8 核處理器(16 核)
- 記憶體:64 GB
- 固態硬碟:960 GB NVMe
- 頻寬:1 Gbps
- 作業系統:Ubuntu 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
10000 個客戶端/秒?
您實際期望得到的請求數量級是多少?整個網路 Stack Exchange 的峰值約為每秒 5,000 個請求,每月頁面瀏覽量約為 13 億。直接比較是困難的,但我認為你正在做的事情比這要小。
RAM 的可用容量並未真正使用。
您是正確的,此時您的大部分記憶體都沒有被使用。50683 MB 的可用空間在絕對數量和 64306 MB 總量的 78% 中都很大。作為容量規劃的一部分,是否將其視為浪費的、慷慨的增長分配,還是適合大多數 64 GB 伺服器的大小是您的判斷要求。
六十 (?) 個 Web 伺服器程序加上其他一些零碎的東西對於 64 GB 記憶體來說沒什麼大不了的。注意每個大約 150 MB 的 RES。雖然理論上總和可以達到 5,000 MB,但記憶體核算總是比人們做出的簡單假設更複雜。Linux 是惰性的,並且傾向於為唯一數據分配物理記憶體頁面。相同任務的數十個副本“壓縮”得很好。特別是對於計算基準工作負載,它可能會通過一個小的工作集來驅動 CPU。
有大量可用記憶體,但對應用程序的響應時間很短,肯定還有其他限制性能的因素。找到它需要有條不紊的方法來檢查系統的所有方面。從 php 調整參數到其他資源(網路?),再到應用程序並發問題。
實際上,在 Linux 上安裝調試符號並執行
perf top
了解 CPU 上的功能有助於分析使用者或核心程式碼深處發生的事情。理想情況下,您還擁有可以分析程式碼的 APM 工具之類的東西。