两台相同的服务器,其中一台的 CPU 负载为 2 倍

两台相同的服务器,其中一台的 CPU 负载为 2 倍

Http 请求在两台服务器上各占一半。服务器运行的是 FreeBSD 9.2,它们的硬件、软件和应用程序配置完全相同。但其中一台服务器的 CPU 负载是 2 倍。在流量高峰期间,这一事实会导致“有缺陷”的服务器出现 LA 问题。

两个服务器都设置了 nginx+php-fpm+redis+memcached+mysql,除此之外没有其他设置。没有运行任何 cron 等。

CPU: 24.9% user,  0.0% nice,  8.1% system,  0.0% interrupt, 66.9% idle
CPU: 12.7% user,  0.0% nice,  3.4% system,  0.0% interrupt, 83.9% idle

vmstat 1对于有缺陷的服务器

 procs      memory      page                   disk   faults         cpu
 r b w     avm    fre   flt  re  pi  po    fr  sr mf0   in   sy   cs us sy id
44 0 0  78511M  3775M    92   0   0   0    93   9   0   27   82   37 12  5 83
14 0 0  78539M  3768M  3612   0   0   0  2320   0  94 4019 290766 59170 32 42 26
10 0 0  78544M  3763M  1019   0   0   0   544   0 127 4054 267760 36825 26  8 67
11 0 0  78540M  3758M  2156   0   0   0  2106   0 218 4045 272843 37923 28  8 64
 9 0 0  78544M  3759M   601   0   0   0  1412   0  55 4067 279558 37887 26  9 65
 9 0 0  78548M  3753M  1835   0   0   0   414   0  79 4042 273963 37264 26  9 65
11 0 0  78548M  3754M  1036   0   0   0  2934   0 199 4078 262876 36150 25  7 68
 9 0 0  78548M  3759M   295   0   0   0  2408   0  44 3781 249391 32801 25  7 68
15 1 0  78548M  3758M  2158   0   0   0  2628   0 100 3816 250708 33943 25  7 68
12 0 0  78552M  3754M  1506   0   0   0  1637   0 113 3965 269543 36864 28  8 64
 9 0 0  78564M  3746M  2288   0   0   0   620   0 102 3974 256959 34928 26  8 67
13 0 0  78568M  3745M   689   0   0   0   939   0  75 3992 272804 36572 25  9 66
13 0 0  78568M  3744M   239   0   0   0  2084   0  44 4040 273036 36631 26  8 65
 8 0 0  78479M  3752M  2279   0   0   0  5177   0 128 3955 263155 36118 27  9 64
 9 0 0  78475M  3752M   496   6   0   0  1085   0 172 3954 256552 34906 25  8 67
15 0 0  78475M  3754M   263   0   0   0  2016   0 178 3870 254864 35432 25  8 67

vmstat 1为良好的服务器

 procs      memory      page                   disk   faults         cpu
 r b w     avm    fre   flt  re  pi  po    fr  sr mf0   in   sy   cs us sy id
 1 0 6  78873M  4870M   153   2   0   0    54  61   0   48   48  136  6  1 93
 6 0 6  78865M  4871M   755   0   0   0  1839   0 126 3588 254715 30931 13  3 84
 7 0 6  78873M  4868M   715   0   0   0  3750   0  76 3453 240474 28698 11  4 85
 6 0 6  78869M  4867M   404   0   0   0  1793   0 165 3419 232270 27453 12  3 85
 5 0 6  78877M  4867M   213   0   0   0   845   0 276 3793 261560 31747 13  3 84
 4 0 6  78877M  4866M   602   0   0   0   830   0 157 3539 249173 29895 12  4 84
 5 1 6  78881M  4858M  1762   0   0   0  1639   0  93 3586 256812 30538 12  4 84
 4 0 6  78890M  4851M  1757   0   0   0 90059   0  88 3651 267225 32082 13  3 83
 4 0 6  78890M  4845M   836   0   0   0 12182   0 202 3822 259947 31564 12  4 85
 5 0 6  78894M  4842M   726   0   0   0   906   0 314 3665 247476 30474 12  3 85
 5 0 6  78898M  4832M   638   0   0   0   288   0 258 3698 252603 31849 13  3 84
 5 0 6  78902M  4818M  1231   0   0   0  1992   0 460 3815 247440 31429 12  3 84
 9 0 6  78902M  4808M    23   0   0   0   152   0 596 4121 252113 31974 12  3 85
 6 0 6  78902M  4804M  1050   1   0   0   885   0 206 3810 265230 32513 13  4 83

我们可以在procs.rproces.w列中看到一些有趣的东西。有缺陷的服务器根本没有w进程,但进程数量却更多r。我该如何解释这一点?我应该获取哪些指标来弄清楚发生了什么?

答案1

在我看来,其中一个负载更多,也许你平均分配了请求数,但“有缺陷”的那个请求要求更多,它有更多正在运行的进程和更多页面错误。使用 vmstat 检查它们此时实际提供的服务。

相关内容