如何解决 php7 导致的高负载问题

如何解决 php7 导致的高负载问题

我们升级到了 php7(这只是服务器中的变化),这导致 CPU 负载过高。

仙人掌图

在此处输入图片描述

sar output  
04:40:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
04:50:01 AM     all      2.85      0.00      2.13      0.01      0.00     95.01
04:50:01 AM       0      4.53      0.00      8.41      0.03      0.00     87.03
04:50:01 AM       1     24.64      0.00      3.93      0.01      0.00     71.43
04:50:01 AM       2      9.01      0.00      4.28      0.00      0.00     86.71
04:50:01 AM       3      3.89      0.00      2.23      0.00      0.00     93.87
04:50:01 AM       4      0.49      0.00      0.20      0.00      0.00     99.31
04:50:01 AM       5      0.38      0.00      0.79      0.00      0.00     98.83
04:50:01 AM       6      5.15      0.00     13.87      0.04      0.00     80.94
04:50:01 AM       7      1.18      0.00      5.05      0.00      0.00     93.76
04:50:01 AM       8      0.61      0.00      1.94      0.00      0.00     97.45
04:50:01 AM       9      0.37      0.00      1.33      0.00      0.00     98.30
04:50:01 AM      10      0.05      0.00      0.30      0.00      0.00     99.64
04:50:01 AM      11      0.11      0.00      0.03      0.00      0.00     99.85
04:50:01 AM      12     13.35      0.00      2.62      0.02      0.00     84.00
04:50:01 AM      13      0.98      0.00      0.24      0.00      0.00     98.78
04:50:01 AM      14      0.59      0.00      0.36      0.00      0.00     99.05
04:50:01 AM      15      0.24      0.00      0.13      0.00      0.00     99.63
04:50:01 AM      16      0.24      0.00      0.14      0.00      0.00     99.62
04:50:01 AM      17      0.03      0.00      0.03      0.00      0.00     99.94
04:50:01 AM      18      0.99      0.00      3.73      0.02      0.00     95.27
04:50:01 AM      19      0.37      0.00      0.54      0.00      0.00     99.09
04:50:01 AM      20      0.62      0.00      0.56      0.00      0.00     98.82
04:50:01 AM      21      0.24      0.00      0.28      0.00      0.00     99.48
04:50:01 AM      22      0.29      0.00      0.21      0.00      0.00     99.49
04:50:01 AM      23      0.07      0.00      0.07      0.00      0.00     99.87

04:50:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
05:00:01 AM     all      5.66      0.00      2.19      0.01      0.00     92.13
05:00:01 AM       0      7.73      0.00      7.75      0.05      0.00     84.47
05:00:01 AM       1     49.79      0.00      8.65      0.00      0.00     41.55
05:00:01 AM       2     25.74      0.00      5.77      0.00      0.00     68.50
05:00:01 AM       3      4.95      0.00      1.42      0.00      0.00     93.63
05:00:01 AM       4      1.89      0.00      1.69      0.00      0.00     96.42
05:00:01 AM       5      0.38      0.00      0.97      0.00      0.00     98.65
05:00:01 AM       6      9.79      0.00      3.96      0.10      0.00     86.15
05:00:01 AM       7      2.09      0.00      5.39      0.02      0.00     92.50
05:00:01 AM       8      0.31      0.00      0.24      0.01      0.00     99.44
05:00:01 AM       9      0.76      0.00      1.08      0.00      0.00     98.16
05:00:01 AM      10      0.02      0.00      0.13      0.01      0.00     99.84
05:00:01 AM      11      0.33      0.00      1.33      0.00      0.00     98.34
05:00:01 AM      12     25.21      0.00      3.81      0.02      0.00     70.96
05:00:01 AM      13      0.90      0.00      0.66      0.00      0.00     98.44
05:00:01 AM      14      0.67      0.00      0.76      0.05      0.00     98.52
05:00:01 AM      15      0.31      0.00      0.27      0.00      0.00     99.42
05:00:01 AM      16      0.28      0.00      0.26      0.00      0.00     99.46
05:00:01 AM      17      0.12      0.00      0.18      0.00      0.00     99.69
05:00:01 AM      18      1.24      0.00      5.03      0.04      0.00     93.69
05:00:01 AM      19      0.89      0.00      0.87      0.03      0.00     98.20
05:00:01 AM      20      1.74      0.00      1.23      0.00      0.00     97.02
05:00:01 AM      21      0.44      0.00      0.42      0.00      0.00     99.14
05:00:01 AM      22      0.38      0.00      0.45      0.00      0.00     99.17
05:00:01 AM      23      0.09      0.00      0.47      0.00      0.00     99.44

05:00:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
05:10:01 AM     all      6.16      0.00      1.64      0.02      0.00     92.18
05:10:01 AM       0      6.03      0.00      5.99      0.09      0.00     87.90
05:10:01 AM       1     48.29      0.00      7.89      0.00      0.00     43.81
05:10:01 AM       2     30.24      0.00      5.09      0.00      0.00     64.67
05:10:01 AM       3      9.02      0.00      1.20      0.00      0.00     89.77
05:10:01 AM       4      2.13      0.00      0.36      0.00      0.00     97.51
05:10:01 AM       5      0.54      0.00      0.16      0.00      0.00     99.30
05:10:01 AM       6     10.47      0.00      5.23      0.15      0.00     84.15
05:10:01 AM       7      1.90      0.00      1.13      0.02      0.00     96.95
05:10:01 AM       8      0.66      0.00      1.85      0.01      0.00     97.47
05:10:01 AM       9      0.26      0.00      0.13      0.00      0.00     99.61
05:10:01 AM      10      0.02      0.00      0.08      0.00      0.00     99.90
05:10:01 AM      11      0.01      0.00      0.08      0.00      0.00     99.92
05:10:01 AM      12     28.45      0.00      3.41      0.06      0.00     68.09
05:10:01 AM      13      1.60      0.00      0.73      0.00      0.00     97.67
05:10:01 AM      14      0.55      0.00      0.67      0.00      0.00     98.78
05:10:01 AM      15      0.66      0.00      0.24      0.00      0.00     99.09
05:10:01 AM      16      0.44      0.00      0.18      0.00      0.00     99.39
05:10:01 AM      17      0.19      0.00      0.12      0.00      0.00     99.69
05:10:01 AM      18      0.39      0.00      0.53      0.03      0.00     99.05
05:10:01 AM      19      2.51      0.00      1.42      0.00      0.00     96.07
05:10:01 AM      20      1.11      0.00      1.15      0.00      0.00     97.74
05:10:01 AM      21      1.99      0.00      1.25      0.00      0.00     96.76
05:10:01 AM      22      0.35      0.00      0.35      0.00      0.00     99.29
05:10:01 AM      23      0.22      0.00      0.34      0.01      0.00     99.44

05:10:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
05:20:01 AM     all      4.02      0.00     12.27      0.01      0.00     83.69
05:20:01 AM       0      7.35      0.00     18.25      0.02      0.00     74.38
05:20:01 AM       1     11.90      0.00     31.41      0.05      0.00     56.64
05:20:01 AM       2      6.57      0.00     25.74      0.00      0.00     67.68
05:20:01 AM       3      3.52      0.00     19.25      0.00      0.00     77.23
05:20:01 AM       4      2.58      0.00     16.29      0.00      0.00     81.14
05:20:01 AM       5      2.12      0.00     12.28      0.02      0.00     85.58
05:20:01 AM       6     12.51      0.00     25.54      0.06      0.00     61.88
05:20:01 AM       7      4.24      0.00     16.93      0.00      0.00     78.82
05:20:01 AM       8      3.75      0.00      8.85      0.01      0.00     87.40
05:20:01 AM       9      2.45      0.00      5.40      0.01      0.00     92.15
05:20:01 AM      10      2.79      0.00      4.57      0.00      0.00     92.64
05:20:01 AM      11      1.00      0.00      5.14      0.00      0.00     93.86
05:20:01 AM      12      5.14      0.00     19.32      0.02      0.00     75.52
05:20:01 AM      13      2.28      0.00     16.37      0.00      0.00     81.35
05:20:01 AM      14      1.26      0.00     11.01      0.00      0.00     87.73
05:20:01 AM      15      0.80      0.00      8.60      0.00      0.00     90.60
05:20:01 AM      16      0.93      0.00      5.01      0.00      0.00     94.06
05:20:01 AM      17      1.41      0.00      4.92      0.00      0.00     93.67
05:20:01 AM      18      6.21      0.00     12.08      0.04      0.00     81.67
05:20:01 AM      19      4.66      0.00      7.26      0.00      0.00     88.08
05:20:01 AM      20      0.70      0.00      4.83      0.00      0.00     94.47
05:20:01 AM      21      5.03      0.00      5.96      0.00      0.00     89.00
05:20:01 AM      22      7.01      0.00      5.47      0.00      0.00     87.52
05:20:01 AM      23      0.30      0.00      4.15      0.00      0.00     95.55

05:20:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
05:30:01 AM     all      4.34      0.00     11.07      0.01      0.00     84.58
05:30:01 AM       0      5.33      0.00     16.49      0.02      0.00     78.17
05:30:01 AM       1     17.19      0.00     33.85      0.03      0.00     48.93
05:30:01 AM       2     11.77      0.00     25.47      0.00      0.00     62.76
05:30:01 AM       3      5.08      0.00     21.68      0.00      0.00     73.23
05:30:01 AM       4      6.13      0.00     14.52      0.00      0.00     79.35
05:30:01 AM       5      2.06      0.00     11.81      0.00      0.00     86.13
05:30:01 AM       6     16.30      0.00     26.25      0.03      0.00     57.42
05:30:01 AM       7      3.80      0.00     17.13      0.01      0.00     79.06
05:30:01 AM       8      4.56      0.00      7.31      0.00      0.00     88.13
05:30:01 AM       9      0.11      0.00      2.77      0.01      0.00     97.11
05:30:01 AM      10      0.51      0.00      2.72      0.00      0.00     96.77
05:30:01 AM      11      4.69      0.00      2.10      0.00      0.00     93.21
05:30:01 AM      12      8.04      0.00     20.36      0.02      0.00     71.58
05:30:01 AM      13      1.30      0.00     12.20      0.00      0.00     86.50
05:30:01 AM      14      3.16      0.00      9.36      0.00      0.00     87.47
05:30:01 AM      15      0.51      0.00      4.93      0.01      0.00     94.55
05:30:01 AM      16      0.47      0.00      4.21      0.00      0.00     95.32
05:30:01 AM      17      0.43      0.00      3.02      0.00      0.00     96.55
05:30:01 AM      18      6.61      0.00     14.71      0.02      0.00     78.66
05:30:01 AM      19      3.60      0.00      6.18      0.00      0.00     90.22
05:30:01 AM      20      1.95      0.00      3.81      0.00      0.00     94.24
05:30:01 AM      21      0.46      0.00      2.55      0.00      0.00     96.99
05:30:01 AM      22      0.12      0.00      1.47      0.00      0.00     98.41
05:30:01 AM      23      0.13      0.00      0.88      0.00      0.00     98.99

05:30:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
05:40:02 AM     all      3.23      0.00     14.96      0.02      0.00     81.80
05:40:02 AM       0      5.70      0.00     21.45      0.18      0.00     72.67
05:40:02 AM       1     18.01      0.00     39.59      0.01      0.00     42.39
05:40:02 AM       2      9.73      0.00     33.71      0.01      0.00     56.55
05:40:02 AM       3      6.22      0.00     27.88      0.01      0.00     65.90
05:40:02 AM       4      2.83      0.00     20.78      0.00      0.00     76.39
05:40:02 AM       5      2.48      0.00     14.93      0.01      0.00     82.57
05:40:02 AM       6      5.30      0.00     35.07      0.05      0.00     59.57
05:40:02 AM       7      1.29      0.00     22.27      0.00      0.00     76.44
05:40:02 AM       8      0.77      0.00      9.50      0.00      0.00     89.73
05:40:02 AM       9      1.67      0.00      6.24      0.00      0.00     92.09
05:40:02 AM      10      0.88      0.00      4.54      0.00      0.00     94.59
05:40:02 AM      11      1.10      0.00      4.21      0.00      0.00     94.69
05:40:02 AM      12      9.25      0.00     26.51      0.01      0.00     64.23
05:40:02 AM      13      2.30      0.00     15.82      0.00      0.00     81.87
05:40:02 AM      14      1.31      0.00     11.75      0.00      0.00     86.94
05:40:02 AM      15      0.66      0.00     10.17      0.00      0.00     89.18
05:40:02 AM      16      1.17      0.00      5.83      0.00      0.00     93.01
05:40:02 AM      17      0.60      0.00      4.94      0.00      0.00     94.46
05:40:02 AM      18      2.62      0.00     20.10      0.12      0.00     77.16
05:40:02 AM      19      0.83      0.00      9.10      0.00      0.00     90.08
05:40:02 AM      20      0.75      0.00      5.42      0.00      0.00     93.82
05:40:02 AM      21      1.04      0.00      3.14      0.00      0.00     95.82
05:40:02 AM      22      0.28      0.00      2.73      0.00      0.00     96.99
05:40:02 AM      23      0.67      0.00      3.34      0.00      0.00     95.99

05:40:02 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
05:50:01 AM     all      2.28      0.00     11.49      0.04      0.00     86.19
05:50:01 AM       0      3.58      0.00     16.41      0.03      0.00     79.98
05:50:01 AM       1     14.45      0.00     32.73      0.01      0.00     52.82
05:50:01 AM       2      7.32      0.00     25.51      0.02      0.00     67.15
05:50:01 AM       3      3.46      0.00     20.23      0.00      0.00     76.31
05:50:01 AM       4      2.44      0.00     12.95      0.01      0.00     84.60
05:50:01 AM       5      1.33      0.00     12.12      0.00      0.00     86.55
05:50:01 AM       6      4.11      0.00     29.63      0.46      0.00     65.80
05:50:01 AM       7      1.67      0.00     14.28      0.06      0.00     83.99
05:50:01 AM       8      0.58      0.00      4.48      0.01      0.00     94.92
05:50:01 AM       9      0.24      0.00      4.33      0.02      0.00     95.41
05:50:01 AM      10      0.07      0.00      1.87      0.00      0.00     98.05
05:50:01 AM      11      0.08      0.00      1.36      0.00      0.00     98.55
05:50:01 AM      12      7.46      0.00     19.27      0.01      0.00     73.27
05:50:01 AM      13      1.08      0.00     13.72      0.00      0.00     85.20
05:50:01 AM      14      0.71      0.00     10.76      0.02      0.00     88.51
05:50:01 AM      15      0.66      0.00      7.16      0.01      0.00     92.17
05:50:01 AM      16      0.36      0.00      4.58      0.00      0.00     95.06
05:50:01 AM      17      0.49      0.00      3.64      0.00      0.00     95.87
05:50:01 AM      18      0.90      0.00     19.63      0.11      0.00     79.36
05:50:01 AM      19      0.76      0.00      6.19      0.03      0.00     93.02
05:50:01 AM      20      1.11      0.00      4.42      0.06      0.00     94.41
05:50:01 AM      21      0.74      0.00      3.29      0.02      0.00     95.95
05:50:01 AM      22      0.37      0.00      1.72      0.01      0.00     97.90
05:50:01 AM      23      0.78      0.00      5.67      0.04      0.00     93.50

05:50:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
06:00:01 AM     all      1.93      0.00     11.03      0.01      0.00     87.03
06:00:01 AM       0      3.39      0.00     17.41      0.02      0.00     79.18
06:00:01 AM       1     14.49      0.00     35.42      0.00      0.00     50.09
06:00:01 AM       2      5.96      0.00     27.15      0.00      0.00     66.89
06:00:01 AM       3      3.31      0.00     18.51      0.02      0.00     78.16
06:00:01 AM       4      1.45      0.00     11.41      0.00      0.00     87.15
06:00:01 AM       5      0.50      0.00      7.73      0.00      0.00     91.77
06:00:01 AM       6      2.20      0.00     35.46      0.04      0.00     62.30
06:00:01 AM       7      1.59      0.00     15.17      0.01      0.00     83.24
06:00:01 AM       8      0.23      0.00      3.56      0.01      0.00     96.21
06:00:01 AM       9      0.14      0.00      2.01      0.00      0.00     97.85
06:00:01 AM      10      0.13      0.00      1.37      0.00      0.00     98.51
06:00:01 AM      11      0.04      0.00      0.73      0.00      0.00     99.23
06:00:01 AM      12      7.45      0.00     22.89      0.01      0.00     69.66
06:00:01 AM      13      1.45      0.00     13.04      0.00      0.00     85.51
06:00:01 AM      14      0.82      0.00      8.06      0.00      0.00     91.12
06:00:01 AM      15      0.31      0.00      4.05      0.00      0.00     95.63
06:00:01 AM      16      0.29      0.00      2.70      0.00      0.00     97.02
06:00:01 AM      17      0.13      0.00      0.97      0.00      0.00     98.90
06:00:01 AM      18      1.15      0.00     21.66      0.08      0.00     77.10
06:00:01 AM      19      0.43      0.00      7.24      0.00      0.00     92.33
06:00:01 AM      20      0.39      0.00      4.84      0.00      0.00     94.77
06:00:01 AM      21      0.25      0.00      1.94      0.00      0.00     97.81
06:00:01 AM      22      0.15      0.00      0.64      0.00      0.00     99.21
06:00:01 AM      23      0.13      0.00      0.91      0.00      0.00     98.96

06:00:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
06:10:01 AM     all      2.78      0.00     18.12      0.01      0.00     79.09
06:10:01 AM       0      4.13      0.00     25.91      0.07      0.00     69.89
06:10:01 AM       1     14.89      0.00     41.23      0.01      0.00     43.88
06:10:01 AM       2      8.86      0.00     35.86      0.01      0.00     55.28
06:10:01 AM       3      4.97      0.00     31.55      0.00      0.00     63.48
06:10:01 AM       4      2.86      0.00     25.14      0.00      0.00     72.00
06:10:01 AM       5      2.20      0.00     19.33      0.00      0.00     78.48
06:10:01 AM       6      5.45      0.00     36.19      0.02      0.00     58.34
06:10:01 AM       7      1.96      0.00     26.27      0.04      0.00     71.72
06:10:01 AM       8      1.26      0.00     12.71      0.03      0.00     86.01
06:10:01 AM       9      0.67      0.00      9.15      0.01      0.00     90.18
06:10:01 AM      10      0.55      0.00      5.23      0.00      0.00     94.22
06:10:01 AM      11      0.74      0.00      5.65      0.00      0.00     93.61
06:10:01 AM      12      6.99      0.00     28.78      0.01      0.00     64.23
06:10:01 AM      13      1.61      0.00     19.93      0.00      0.00     78.46
06:10:01 AM      14      1.53      0.00     16.81      0.00      0.00     81.66
06:10:01 AM      15      1.30      0.00     13.27      0.00      0.00     85.43
06:10:01 AM      16      1.07      0.00     10.22      0.00      0.00     88.71
06:10:01 AM      17      0.93      0.00      8.63      0.00      0.00     90.44
06:10:01 AM      18      0.93      0.00     24.76      0.03      0.00     74.28
06:10:01 AM      19      0.90      0.00     13.35      0.01      0.00     85.74
06:10:01 AM      20      0.85      0.00      9.04      0.00      0.00     90.11
06:10:01 AM      21      1.00      0.00      6.38      0.02      0.00     92.60
06:10:01 AM      22      0.54      0.00      6.25      0.00      0.00     93.21
06:10:01 AM      23      0.46      0.00      3.31      0.01      0.00     96.23

如果你注意到,系统时间在凌晨 5:20 之后增加了。

Strace output of php process
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 41.96    0.001331           3       438           poll
 30.14    0.000956           2       548           munmap

% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 52.21    0.001264           6       222           munmap
 11.61    0.000281           1       247           poll

% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 44.56    0.001159           5       225           munmap
 37.99    0.000988           3       320           poll

% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
100.00    0.000539          67         8           munmap
  0.00    0.000000           0       119           write

% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 51.37    0.001034           6       161           munmap
 21.56    0.000434           1       293           poll

如何解决 php7 导致的高负载问题

更新 1

  1. 当系统总 RAM 较低(<32GB)时不会出现此问题,但当系统总 RAM 较高(256GB)时就会出现此问题。
  2. 重新启动 PHP 有时可以在几天内解决此问题。

答案1

所有的时间似乎都在进行 munmap。即取消内存映射。PHP7 能够在内核中使用透明大页面。

透明大页面在过去曾给不同的内核和软件带来过问题。 https://answers.splunk.com/answers/188875/how-do-i-disable-transparent-huge-pages-thp-and-co.html显示了这可能是什么问题以及如何解决它。

我在使用此内核的 RHEL 6 上遇到了大页面和 PostgreSQL 问题。关闭大页面解决了问题。

您还提交了https://bugs.php.net/bug.php?id=72322直接到 PHP 项目也可以得到答案。

答案2

帖子中根本没有足够的信息来提供导致这种情况的明确答案。

您如何改变 RAM 数量?

您已将其标记为 CentOS 6 - 但我认为标准构建存储库中没有 PHP7 - 它是从哪里来的?以前的 PHP 版本是从哪里来的?

随机猜测是您没有正确调整缓存大小 - 但您没有说您从哪里升级(APC 具有与 opcache 非常不同的特性)但也可能是由于从 mysql 切换到 mysqli 造成的(如果您正在使用 mysql 客户端并且您的代码库对结果集的管理非常马虎)。

解决此问题的第一步是准确确定发生了什么变化。

相关内容