Высокая загрузка ЦП и диска после восстановления после неудачного обновления

После обнаружения выпуска версии 3.3.0-beta1 я сразу же обновил свой экземпляр Discourse через веб-интерфейс.

Однако в процессе обновления логи веб-интерфейса зависли более чем на пятнадцать минут без дальнейшего вывода (кажется, последним выводом была серия растущих многоточий? Возможно, я немного не уверен). Примерно через два часа я проверил статус сервера на платформе облачных услуг и предположил, что он завис, поэтому выполнил мягкую перезагрузку через эту платформу.

После перезагрузки я немедленно создал резервную копию Discourse через командную строку, загрузил её вместе с файлом app.yml на локальный компьютер, а затем полностью переустановил Discourse (разумеется, последнюю версию). После этого я загрузил резервную копию и запустил процесс восстановления через командную строку.

Восстановление прошло успешно, но теперь мой экземпляр Discourse столкнулся с серьёзными проблемами производительности. Раньше использование процессора в обычном режиме не превышало 10%, а теперь даже в часы низкой нагрузки оно подскакивает до 30%, а чтение с диска также значительно возросло. Хуже того, иногда сервер неожиданно падает: чтение с диска достигает около 1900 операций в секунду (это предел моего облачного сервера), а процессор более 40% времени находится в состоянии ожидания. Веб-страницы не загружаются, выдавая тайм-ауты соединения. В данный момент я запускаю vmstat и top, но, к сожалению, не сохранил их вывод. Помню, что обмен с подкачкой (swap IO) был почти нулевым, что указывает на чистое чтение с диска. Количество заблокированных потоков превышало 100.

Я подозреваю, что это неудачное обновление могло повредить что-то, возможно, данные внутри резервной копии, а не саму программу. Есть ли способ — э-э, не уверен — очистить кэш или выполнить подобные операции? Или, может быть… запустить обновление снова? (В конце концов, обновления Discourse происходят довольно часто, и обновить можно практически в любое время.)

В качестве временного решения я установил программный сторожевой таймер для автоматической перезагрузки при высокой нагрузке. Однако это не долгосрочное решение, и я не нашёл здесь подобных проблем; очевидно, дело не в самом программном обеспечении Discourse. Я хочу понять, как это исправить.

Если вам нужно, чтобы я выполнил какие-либо команды на сервере для проверки его состояния во время высокой нагрузки, пожалуйста, дайте знать. Я сделаю всё возможное, чтобы поддерживать соединение SSH и получить эти данные без перезагрузки.

Как выглядит ваша очередь Sidekiq? Возможно, она просто занимается повторной обработкой всех постов, и нагрузка со временем спадёт, как только очередь будет обработана. То есть ситуация должна быть временной.

Со мной это случалось несколько раз недавно. Каждый раз я вручную перезагружал систему и выполнял пересборку через командную строку. Очевидно, это не лучшее долгосрочное решение и довольно рискованно.

Это признак того, что на вашем компьютере больше не хватает оперативной памяти. Рассмотрите возможность увеличения файла подкачки (swap), чтобы справиться с пиковыми нагрузками.

Мне сейчас требуется машина с 4 ГБ оперативной памяти и 3 ГБ swap для выполнения онлайн-обновлений. Сколько памяти у вас?

Э-э… на самом деле, сразу после восстановления у него не наблюдалось экстремально высокой нагрузки, что, полагаю, нормально. Но в моём случае, после того как нагрузка упала примерно до 2% вслед за восстановлением, когда я вносил некоторые правки через веб-интерфейс, страница внезапно перестала загружаться после одного действия. При проверке платформы облачного сервера оказалось, что загрузка процессора и операции чтения с диска были очень высокими. Не думаю, что это проблема, связанная с повторной обработкой всех сообщений.

Поскольку сейчас мой сервер находится в нормальном состоянии, вот интерфейс Sidekiq:


У меня 2 ГБ физической памяти и 2 ГБ файла подкачки. Похоже, файл подкачки был автоматически включён в процессе установки Discourse? В любом случае, я не настраивал его вручную.


Теперь я вручную увеличил общий размер файла подкачки до 6 ГБ.

Окей, это ваша проблема.

Судя по моему недавнему опыту, процесс веб-компиляции гораздо более требователен к ресурсам, так что вы можете поэкспериментировать с увеличением файла подкачки или перейти на более мощный сервер.

Кстати, в моих предыдущих попытках выполнить резервное копирование через веб-интерфейс логи иногда зависали. Сейчас я выполняю все резервные копии и восстановление из командной строки (за исключением автоматических резервных копий, которые никогда не давали сбоев и работают отлично). Мне интересно, является ли это распространённой проблемой? Есть ли команда для выполнения обновления? Стоит ли мне в будущем продолжать выполнять обновления через командную строку? Может ли это повысить вероятность успешного выполнения?

В повседневном использовании я также заметил значительное увеличение задержек при загрузке веб-страниц по сравнению с прошлым, и, скорее всего, это не проблема сети, а проблема производительности. Вот данные о производительности при загрузке главной страницы:

Сервер снова завис. (watchdog остановлен вручную, чтобы получить полный лог без перезагрузки) Вот вывод команд top и vmstat:

Обратите внимание, что вывод top с момента зависания сервера практически не обновился, в отличие от vmstat, поэтому он может не отражать самые последние данные.

top - 21:53:16 up  2:19,  3 users,  load average: 19.20, 4.89, 1.90
Tasks: 164 total,   1 running, 163 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.7 us,  7.2 sy,  0.0 ni,  0.0 id, 91.8 wa,  0.0 hi,  0.4 si,  0.0 st
MiB Mem :   1668.6 total,     75.9 free,   1473.1 used,    119.6 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.     36.8 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                   
     92 root      20   0       0      0      0 S   2.8   0.0   0:08.01 kswapd0                                                                   
   2504 root      10 -10  123496   6932      0 D   1.6   0.4   2:59.44 AliYunDunMonito                                                           
     90 root       0 -20       0      0      0 I   1.0   0.0   0:01.10 kworker/1:1H-kblockd                                                      
   1320 root      20   0 1236124   2116      0 S   0.8   0.1   0:00.96 containerd-shim                                                           
   2493 root      10 -10   87652   1744      0 S   0.6   0.1   0:44.69 AliYunDun                                                                 
   1008 root      20   0 1276372   2160      0 S   0.5   0.1   0:43.62 argusagent                                                                
    725 root      20   0  689584   3860      0 S   0.3   0.2   0:08.16 aliyun-service                                                            
   1964 message+  20   0   74800  12512      0 D   0.3   0.7   0:19.97 redis-server                                                              
   1973 www-data  20   0   56840   4872    472 D   0.3   0.3   0:01.36 nginx                                                                     
   2081 admin     20   0  519788 263284      4 S   0.3  15.4   0:07.88 ruby                                                                      
   2214 admin     25   5 5338856 495356      0 S   0.3  29.0   0:31.95 ruby                                                                      
   2227 admin     20   0 5246956 484488      4 S   0.3  28.4   0:33.31 ruby                                                                      
   2467 systemd+  20   0  215196  15052  11348 D   0.3   0.9   0:00.45 postmaster                                                                
    785 root      20   0   42256    748      0 S   0.2   0.0   0:07.58 AliYunDunUpdate                                                           
    805 root      20   0 1798676  11832      0 S   0.2   0.7   0:02.24 containerd                                                                
   1027 root      20   0 2281464  29296      0 S   0.2   1.7   0:01.96 dockerd                                                                   
   2056 systemd+  20   0   67872   2192      0 D   0.2   0.1   0:00.39 postmaster                                                                
   2243 root      20   0   17204   5068   2592 S   0.2   0.3   0:00.34 sshd                                                                      
   2555 root      20   0   10496   2736   1916 R   0.2   0.2   0:11.41 top                                                                       
   9998 admin     20   0 5057740 313028      4 S   0.2  18.3   0:04.83 ruby                                                                      
  11658 admin     20   0   10944    252      0 D   0.2   0.0   0:00.09 sleep                                                                     
      1 root      20   0  166776   6568   2808 D   0.1   0.4   0:01.42 systemd                                                                   
     22 root      20   0       0      0      0 S   0.1   0.0   0:00.31 ksoftirqd/1                                                               
    149 root       0 -20       0      0      0 I   0.1   0.0   0:00.17 kworker/0:1H-kblockd                                                      
    707 systemd+  20   0   16260   2296   1212 D   0.1   0.1   0:00.16 systemd-network                                                           
    723 root      20   0   19424    984      0 S   0.1   0.1   0:01.58 assist_daemon                                                             
   1965 root      20   0    6680    280      0 D   0.1   0.0   0:00.05 cron                                                                      
   1974 www-data  20   0   55912   3996    472 D   0.1   0.2   0:00.98 nginx                                                                     
   2054 systemd+  20   0  213244   6344   4384 S   0.1   0.4   0:02.02 postmaster                                                                
   2055 systemd+  20   0  213780   3208    924 D   0.1   0.2   0:00.12 postmaster                                                                
   2270 root      20   0   17204   3880   1404 D   0.1   0.2   0:00.67 sshd            
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0  71456    624 134980    0    0 11302     4 2209 3766  1  1 96  2  0
 0  1      0  72756   1452 132412    0    0 15250    12 2418 3969  1  2 94  4  0
 0  0      0  67724   1244 137444    0    0  4485     2 2083 3700  1  1 98  1  0
 0  0      0  80388    928 124660    0    0 26388    10 2650 4018  1  2 92  4  0
 0  0      0  78256    696 126228    0    0 14752     6 2286 3792  1  1 95  3  0
 0  0      0  72252   1680 130784    0    0 40334    41 2938 4212  1  2 89  7  0
 0  0      0  74812    712 128588    0    0 15904    34 2309 3839  1  1 95  3  0
 2  0      0  71120    856 132224    0    0 54282     5 3292 4382  1  3 85 10  0
 0  0      0  73668    600 128232    0    0 30135    35 2795 4212  1  2 92  5  0
 0  0      0  65160   1524 135636    0    0 30239     6 2842 4247  1  2 90  7  0
 0  0      0  74480   1416 126484    0    0 11761     8 2254 3793  1  2 95  2  0
 1  0      0  80096   1188 120752    0    0 37110     2 2907 4163  1  4 88  7  0
 0  0      0  77880    688 122928    0    0  8439     5 2151 3719  1  1 97  2  0
 0  8      0  76744   1256 122536    0    0 110986    14 4410 4860  1  6 34 59  0
 0 13      0  71776    244 128496    0    0 126111    21 4386 4699  1  7  0 91  0
 1 30      0  71860    356 127916    0    0 125040    21 4634 7331  1  7  0 91  0
 3 31      0  77448    204 122688    0    0 125980    10 4167 8370  1  5  0 94  0
 3 44      0  68184    168 132192    0    0 150011     0 4296 9015  0  7  0 93  0
 1 44      0  74812    216 124700    0    0 204040     0 4949 10108  1  6  0 93  0
 6 35      0  66588    244 133160    0    0 131782     2 6238 12786  1  7  0 93  0
 1 39      0  68156    556 130996    0    0 144440    11 4608 9622  1  8  0 92  0
 0 71      0  72256    212 126520    0    0 169879    12 4780 10242  1 10  0 89  0
 0 91      0  66752    112 132476    0    0 542955    18 7422 17564  0 52  0 48  0
 6 89      0  70324    172 129516    0    0 404754    21 6033 14379  0 52  0 48  0
 3 87      0  60468    156 138060    0    0 499604     1 10640 26065  0 56  0 44  0
 5 91      0  63456    152 135588    0    0 725747    11 10827 25806  0 55  0 45  0
 4 101      0  69596    168 129132    0    0 558872     8 7755 18745  0 56  0 44  0
 6 93      0  66516    156 132772    0    0 394003     3 12549 30622  0 54  0 46  0
 4 94      0  62872    152 135976    0    0 656057     0 7790 18800  0 52  0 48  0
 2 95      0  57072    156 141552    0    0 347776     0 10390 25943  0 56  0 44  0
 4 97      0  66308    164 132964    0    0 641920     0 9963 24307  0 55  0 45  0
13 90      0  75620    152 123836    0    0 658883     0 7870 19260  0 55  0 45  0
 2 96      0  66244    152 131496    0    0 764233     0 16078 40498  0 55  0 45  0
 1 102      0  60156    224 137440    0    0 542241     0 10243 24560  0 54  0 46  0
13 90      0  62488    164 135548    0    0 671301     0 13771 34230  0 55  0 45  0
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 3 101      0  61812    100 136048    0    0 548615     0 10328 26305  0 55  0 45  0
 2 102      0  61412     92 135928    0    0 1003845     0 17283 42751  0 56  0 44  0
 8 98      0  60408    152 136896    0    0 662925     0 11369 29130  0 55  0 45  0
 2 104      0  68292    152 129552    0    0 628286     0 13772 34122  0 56  0 44  0
 2 99      0  65352    152 132436    0    0 494863     5 8766 21559  0 54  0 46  0
10 94      0  58344     96 138800    0    0 669390     0 9294 22968  0 56  0 44  0
 3 95      0  61180    100 135444    0    0 598622     0 13342 32430  0 57  0 43  0
 8 96      0  59444    160 137584    0    0 720255     0 10812 25735  0 57  0 43  0
14 89      0  66844    160 130072    0    0 665390     0 17496 43187  0 56  0 44  0
 1 98      0  64668    152 132756    0    0 498328     0 7262 18622  0 55  0 45  0
 1 98      0  61848    172 135060    0    0 438272     0 7693 19947  0 56  0 44  0
 3 102      0  60636    152 136548    0    0 1020531     0 17162 43981  0 55  0 45  0
 2 93      0  55096    164 141908    0    0 595678     0 14379 37088  0 55  0 45  0
 9 100      0  61704    152 134692    0    0 368380     0 10621 27539  0 55  0 45  0
 2 104      0  63784    148 132620    0    0 767905     8 11090 28866  0 56  0 44  0
 2 110      0  60124    232 135636    0    0 882479     0 14778 38194  0 55  0 45  0
 3 109      0  64632    156 131448    0    0 489138     0 11521 30264  0 56  0 44  0
 2 107      0  65852     36 130592    0    0 1214409     0 17572 45932  0 55  0 45  0
 2 97      0  60260     96 135668    0    0 559811     0 14592 37198  0 56  0 44  0
 1 103      0  56064    104 139668    0    0 514522     0 11059 26834  0 57  0 43  0
 7 97      0  62624    160 133492    0    0 646888     4 7819 19552  0 57  0 43  0
 8 102      0  65404    152 130172    0    0 526268     0 11623 29396  0 56  0 44  0

Я оставлю сервер в состоянии зависания без перезагрузки. Если вам нужно, чтобы я выполнил какие-либо команды на сервере для проверки его состояния при высокой нагрузке, не стесняйтесь спрашивать. Я сделаю всё возможное, чтобы поддерживать соединение SSH и получить все данные без перезагрузки.


другие данные с платформы облачного сервера:


Это выглядит подозрительно — может быть причиной, а может и нет. Что-то (вероятно) выполняет огромное количество операций чтения с диска. AliYunDun, похоже, является инструментом облачного провайдера. AliYunDunMonitor (возможно) завис в ожидании доступа к диску, работает с повышенным приоритетом и уже израсходовал значительное время процессора.

Я видел, что кто-то где-то написал скрипт для завершения таких процессов. Тон скрипта агрессивный. (Я не могу сказать, безопасен ли этот скрипт или это хорошая идея.)

Однако также возможно, что все операции чтения с диска выполняет какой-то процесс Discourse.

Попробуйте выполнить:

apt-get install iotop
iotop -b -d 15 -P -o

и наблюдайте за выводом до тех пор, пока не произойдёт зависание.

Хорошо, и вот вывод iotop во время зависания:

Total DISK READ:         7.92 M/s | Total DISK WRITE:        11.70 K/s
Current DISK READ:      12.14 M/s | Current DISK WRITE:      17.29 K/s
    PID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN      IO    COMMAND
      1 be/4 root        6.12 K/s    0.00 B/s  ?unavailable?  init noibrs
    300 be/3 root        0.00 B/s    2.93 K/s  ?unavailable?  [jbd2/vda3-8]
    374 be/3 root       10.64 K/s    0.00 B/s  ?unavailable?  systemd-journald
    709 be/4 systemd-    3.99 K/s    0.00 B/s  ?unavailable?  systemd-resolved
    723 be/4 root       51.07 K/s    0.00 B/s  ?unavailable?  assist_daemon
    725 be/4 root      856.83 K/s  272.40 B/s  ?unavailable?  aliyun-service
    770 be/4 root       63.31 K/s    0.00 B/s  ?unavailable?  python3 -Es /usr/sbin/tuned -l -P
    785 be/4 root       12.77 K/s    0.00 B/s  ?unavailable?  AliYunDunUpdate
    805 be/4 root      389.98 K/s    0.00 B/s  ?unavailable?  containerd
   1008 be/4 root      242.60 K/s  544.80 B/s  ?unavailable?  argusagent
   1027 be/4 root      690.31 K/s    0.00 B/s  ?unavailable?  dockerd -H fd:// --containerd=/run/containerd/containerd.sock
   1320 be/4 root      241.01 K/s    0.00 B/s  ?unavailable?  containerd-shim-runc-v2 -namespace moby -id 6e9880833995c5e2a295ed6571129387036824d304e09f43d5e1333ebd7fdbd5 -address /run/containerd/containerd.sock
   1953 be/4 root     1906.79 B/s    0.00 B/s  ?unavailable?  runsvdir -P /etc/service
   1962 be/4 admin      85.12 K/s    0.00 B/s  ?unavailable?  bash config/unicorn_launcher -E production -c config/unicorn.conf.rb
   1964 be/4 messageb  611.83 K/s    0.00 B/s  ?unavailable?  redis-server *:6379
   1973 be/4 www-data  530.17 K/s  272.40 B/s  ?unavailable?  nginx: worker process
   2054 be/4 systemd-    8.78 K/s    7.45 K/s  ?unavailable?  postgres: 13/main: walwriter
   2056 be/4 systemd-  102.42 K/s    0.00 B/s  ?unavailable?  postgres: 13/main: stats collector
   2081 be/4 admin     817.20 B/s    0.00 B/s  ?unavailable?  unicorn master -E production -c config/unicorn.conf.rb
   2493 ?dif root      132.21 K/s    0.00 B/s  ?unavailable?  AliYunDun
   2504 be/2 root      740.32 K/s    0.00 B/s  ?unavailable?  AliYunDunMonitor
  45686 be/4 root       47.62 K/s    0.00 B/s  ?unavailable?  sshd: root@pts/0
  45816 be/4 root       36.98 K/s    0.00 B/s  ?unavailable?  top
  46146 be/4 root      357.52 K/s    0.00 B/s  ?unavailable?  python3 /usr/sbin/iotop -b -d 15 -P -o
  46160 be/4 root      267.34 K/s    0.00 B/s  ?unavailable?  sshd: root@pts/2
  46232 be/4 root      174.24 K/s    0.00 B/s  ?unavailable?  vmstat 5
  51903 be/4 admin    1569.22 K/s  272.40 B/s  ?unavailable?  unicorn worker[0] -E production -c config/unicorn.conf.rb
  51972 be/4 admin     175.84 K/s    0.00 B/s  ?unavailable?  unicorn worker[1] -E production -c config/unicorn.conf.rb
  60365 be/4 root      272.40 B/s    0.00 B/s  ?unavailable?  [kworker/u4:0-writeback]
  63081 be/4 root      272.40 B/s    0.00 B/s  ?unavailable?  [kworker/u4:4-events_unbound]
  63825 be/4 systemd-  673.02 K/s    0.00 B/s  ?unavailable?  postgres: 13/main: discourse discourse [local] idle
  64191 be/4 root       23.14 K/s    0.00 B/s  ?unavailable?  -bash

На самом деле мне удалось обрушить сайт, быстро несколько раз обновив домашнюю страницу клавишей F5… Так что, думаю, проблема действительно скорее всего в Discourse.

Вывод top сейчас:

top - 13:36:47 up 18:03,  4 users,  load average: 86.10, 47.87, 19.63
Tasks: 174 total,   4 running, 170 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.2 us, 21.1 sy,  0.0 ni,  0.0 id, 76.3 wa,  0.0 hi,  0.4 si,  0.0 st
MiB Mem :   1668.6 total,     69.6 free,   1413.6 used,    185.4 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.     36.9 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                   
     92 root      20   0       0      0      0 S  37.8   0.0 100:17.66 kswapd0                                                                   
   1320 root      20   0 1236124   2320      0 S   4.0   0.1   4:18.47 containerd-shim                                                           
   1027 root      20   0 2281464  29160      0 S   2.6   1.7   2:25.38 dockerd                                                                   
    805 root      20   0 1798676  11844      0 S   2.5   0.7   2:28.22 containerd                                                                
   2504 root      10 -10  129972  11660      0 D   2.1   0.7  27:34.39 AliYunDunMonito                                                           
     90 root       0 -20       0      0      0 R   1.5   0.0   1:58.75 kworker/1:1H-kblockd                                                      
   2493 root      10 -10   88144   2244      0 D   1.1   0.1  10:49.21 AliYunDun                                                                 
  51989 root      20   0 1318960   8980      0 S   0.8   0.5   0:46.15 snapd                                                                     
   1008 root      20   0 1276372   2584      0 S   0.7   0.2  11:16.56 argusagent                                                                
  46146 root      20   0   22320   9516   1908 D   0.5   0.6   0:23.57 iotop                                                                     
  46160 root      20   0   17200   4968   2496 D   0.3   0.3   0:03.41 sshd                                                                      
  45686 root      20   0   17200   5188   2716 D   0.3   0.3   0:04.21 sshd                                                                      
    785 root      20   0   42324    876      0 S   0.2   0.1   3:41.24 AliYunDunUpdate                                                           
  45816 root      20   0   10500   3352   2544 R   0.2   0.2   0:26.01 top                                                                       
  51903 admin     20   0  845708 458296      4 S   0.2  26.8   0:32.36 ruby                                                                      
  53938 admin     25   5 5285240 378040      0 S   0.2  22.1   0:33.50 ruby                                                                      
    723 root      20   0   19424    996      0 S   0.2   0.1   1:57.31 assist_daemon                                                             
    725 root      20   0  689584   3800      0 S   0.2   0.2   3:06.25 aliyun-service                                                            
   1964 message+  20   0   74800  13944      0 D   0.2   0.8   2:51.80 redis-server                                                              
   1974 www-data  20   0   57696   6136    772 R   0.2   0.4   0:36.37 nginx                                                                     
   1975 www-data  20   0   53508   1520     72 S   0.2   0.1   0:45.76 nginx                                                                     
   2053 systemd+  20   0  213244   6952   4988 D   0.2   0.4   0:27.47 postmaster                                                                
  51972 admin     20   0 5139692 329104      4 S   0.2  19.3   0:08.21 ruby                                                                      
  64309 systemd+  20   0  213244   1956      0 D   0.2   0.1   0:00.15 postmaster                                                                
     22 root      20   0       0      0      0 S   0.1   0.0   0:09.66 ksoftirqd/1                                                               
    149 root       0 -20       0      0      0 I   0.1   0.0   0:06.26 kworker/0:1H-kblockd                                                      
   1973 www-data  20   0   56576   5088    768 D   0.1   0.3   0:35.23 nginx                                                                     
   2052 systemd+  20   0  213468  34408  32340 D   0.1   2.0   0:30.59 postmaster                                                                
   2055 systemd+  20   0  213780   3244    932 D   0.1   0.2   0:29.32 postmaster                                                                
   2056 systemd+  20   0   68132   2256      0 D   0.1   0.1   0:15.54 postmaster                                                                
   2081 admin     20   0  585324 280488      4 S   0.1  16.4   0:57.44 ruby            

Вывод vmstat ниже:

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0  80348    884 230624    0    0   538     6 1980 3661  1  1 99  0  0
 0  0      0  78232   2780 226576    0    0 17644    20 2510 4063  3  1 93  2  0
 3  0      0  93580    176 186012    0    0 34986    19 3329 4751 13  4 78  6  0
 0 29      0  82988    192 177628    0    0 127805    10 4930 6456  5  7 34 54  0
 0 30      0  85520    204 175124    0    0 120935     6 3768 6887  1  5  0 94  0
 3 37      0  89408    232 170836    0    0 122472    35 3876 7157  1  7  0 92  0
10 80      0  74004    220 186372    0    0 476674    36 4532 10212  0 35  0 64  0
11 89      0  71564    160 190284    0    0 388222     0 11098 27886  0 53  0 47  0
 0 100      0  73508    160 188484    0    0 209539     4 4726 11652  0 32  0 68  0

Я не эксперт в Linux, но разве процесс kswapd0 не отвечает за управление памятью и обменом страниц со свопом? Почему у него такая высокая загрузка CPU в колонке sy, когда в vmstat значения swpd, si и so равны 0? Я совершенно в замешательстве.

Очень подозрительно, что у вас есть 2 ГБ пространства подкачки, но при этом нет использования подкачки и никакой активности подкачки. Я бы заподозрил настройки ядра. Вот мои — покажите все свои, пожалуйста, не выбирайте только отдельные!

head /proc/sys/vm/*
==> /proc/sys/vm/admin_reserve_kbytes <==
8192

==> /proc/sys/vm/block_dump <==
0
head: невозможно открыть '/proc/sys/vm/compact_memory' для чтения: Отказано в доступе

==> /proc/sys/vm/compact_unevictable_allowed <==
1

==> /proc/sys/vm/dirty_background_bytes <==
0

==> /proc/sys/vm/dirty_background_ratio <==
10

==> /proc/sys/vm/dirty_bytes <==
0

==> /proc/sys/vm/dirty_expire_centisecs <==
3000

==> /proc/sys/vm/dirty_ratio <==
20

==> /proc/sys/vm/dirty_writeback_centisecs <==
500

==> /proc/sys/vm/dirtytime_expire_seconds <==
43200

==> /proc/sys/vm/drop_caches <==
0

==> /proc/sys/vm/extfrag_threshold <==
500

==> /proc/sys/vm/hugepages_treat_as_movable <==
0

==> /proc/sys/vm/hugetlb_shm_group <==
0

==> /proc/sys/vm/laptop_mode <==
0

==> /proc/sys/vm/legacy_va_layout <==
0

==> /proc/sys/vm/lowmem_reserve_ratio <==
256     256     32      1

==> /proc/sys/vm/max_map_count <==
65530

==> /proc/sys/vm/memory_failure_early_kill <==
0

==> /proc/sys/vm/memory_failure_recovery <==
1

==> /proc/sys/vm/min_free_kbytes <==
45056

==> /proc/sys/vm/min_slab_ratio <==
5

==> /proc/sys/vm/min_unmapped_ratio <==
1

==> /proc/sys/vm/mmap_min_addr <==
65536

==> /proc/sys/vm/mmap_rnd_bits <==
28

==> /proc/sys/vm/mmap_rnd_compat_bits <==
8

==> /proc/sys/vm/nr_hugepages <==
0

==> /proc/sys/vm/nr_hugepages_mempolicy <==
0

==> /proc/sys/vm/nr_overcommit_hugepages <==
0

==> /proc/sys/vm/numa_stat <==
1

==> /proc/sys/vm/numa_zonelist_order <==
Node

==> /proc/sys/vm/oom_dump_tasks <==
1

==> /proc/sys/vm/oom_kill_allocating_task <==
0

==> /proc/sys/vm/overcommit_kbytes <==
0

==> /proc/sys/vm/overcommit_memory <==
1

==> /proc/sys/vm/overcommit_ratio <==
50

==> /proc/sys/vm/page-cluster <==
3

==> /proc/sys/vm/panic_on_oom <==
0

==> /proc/sys/vm/percpu_pagelist_fraction <==
0

==> /proc/sys/vm/stat_interval <==
1

==> /proc/sys/vm/stat_refresh <==

==> /proc/sys/vm/swappiness <==
60

==> /proc/sys/vm/user_reserve_kbytes <==
29305

==> /proc/sys/vm/vfs_cache_pressure <==
100

==> /proc/sys/vm/watermark_scale_factor <==
10

==> /proc/sys/vm/zone_reclaim_mode <==
0

Редактирование: пожалуйста, выполните также эти команды и опубликуйте вывод

swapon
free
uname -a
df -T
root@iZj6cgi365ov99veqodfgnZ:~# head /proc/sys/vm/*
==> /proc/sys/vm/admin_reserve_kbytes <==
8192

==> /proc/sys/vm/compaction_proactiveness <==
20
head: невозможно открыть файл '/proc/sys/vm/compact_memory' для чтения: Отказано в доступе

==> /proc/sys/vm/compact_unevictable_allowed <==
1

==> /proc/sys/vm/dirty_background_bytes <==
0

==> /proc/sys/vm/dirty_background_ratio <==
10

==> /proc/sys/vm/dirty_bytes <==
0

==> /proc/sys/vm/dirty_expire_centisecs <==
3000

==> /proc/sys/vm/dirty_ratio <==
30

==> /proc/sys/vm/dirtytime_expire_seconds <==
43200

==> /proc/sys/vm/dirty_writeback_centisecs <==
500
head: невозможно открыть файл '/proc/sys/vm/drop_caches' для чтения: Отказано в доступе

==> /proc/sys/vm/extfrag_threshold <==
500

==> /proc/sys/vm/hugetlb_shm_group <==
0

==> /proc/sys/vm/laptop_mode <==
0

==> /proc/sys/vm/legacy_va_layout <==
0

==> /proc/sys/vm/lowmem_reserve_ratio <==
256     256     32      0       0

==> /proc/sys/vm/max_map_count <==
65530

==> /proc/sys/vm/memory_failure_early_kill <==
0

==> /proc/sys/vm/memory_failure_recovery <==
1

==> /proc/sys/vm/min_free_kbytes <==
45056

==> /proc/sys/vm/min_slab_ratio <==
5

==> /proc/sys/vm/min_unmapped_ratio <==
1

==> /proc/sys/vm/mmap_min_addr <==
65536

==> /proc/sys/vm/mmap_rnd_bits <==
28

==> /proc/sys/vm/mmap_rnd_compat_bits <==
8

==> /proc/sys/vm/nr_hugepages <==
0

==> /proc/sys/vm/nr_hugepages_mempolicy <==
0

==> /proc/sys/vm/nr_overcommit_hugepages <==
0

==> /proc/sys/vm/numa_stat <==
1

==> /proc/sys/vm/numa_zonelist_order <==
Node

==> /proc/sys/vm/oom_dump_tasks <==
1

==> /proc/sys/vm/oom_kill_allocating_task <==
0

==> /proc/sys/vm/overcommit_kbytes <==
0

==> /proc/sys/vm/overcommit_memory <==
0

==> /proc/sys/vm/overcommit_ratio <==
50

==> /proc/sys/vm/page-cluster <==
3

==> /proc/sys/vm/page_lock_unfairness <==
5

==> /proc/sys/vm/panic_on_oom <==
0

==> /proc/sys/vm/percpu_pagelist_high_fraction <==
0

==> /proc/sys/vm/stat_interval <==
1

==> /proc/sys/vm/stat_refresh <==

==> /proc/sys/vm/swappiness <==
0

==> /proc/sys/vm/unprivileged_userfaultfd <==
0

==> /proc/sys/vm/user_reserve_kbytes <==
50778

==> /proc/sys/vm/vfs_cache_pressure <==
100

==> /proc/sys/vm/watermark_boost_factor <==
15000

==> /proc/sys/vm/watermark_scale_factor <==
10

==> /proc/sys/vm/zone_reclaim_mode <==
0
root@iZj6cgi365ov99veqodfgnZ:~# swapon
ИМЯ       ТИП  РАЗМЕР ИСПОЛЬЗ. ПРИОРИТЕТ
/swapfile файл   2G     0B   -2
root@iZj6cgi365ov99veqodfgnZ:~# free
               всего       использовано     свободно    разделяемое   buff/cache   доступно
Mem:         1708636       984352       79376       38344      644908      490004
Swap:        2097148           0     2097148
root@iZj6cgi365ov99veqodfgnZ:~# uname -a
Linux iZj6cgi365ov99veqodfgnZ 5.15.0-86-generic #96-Ubuntu SMP Wed Sep 20 08:23:49 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
root@iZj6cgi365ov99veqodfgnZ:~# df -T
Файловая система  Тип     1K-блоков    Использовано Доступно  Использ%  Смонтировано на
tmpfs             tmpfs      170864         1164     169700      1%    /run
/dev/vda3         ext4     61540412    19791160    39020044     34%    /
tmpfs             tmpfs      854316            0     854316      0%    /dev/shm
tmpfs             tmpfs        5120            0       5120      0%    /run/lock
/dev/vda2         vfat       201615         6186     195429      4%    /boot/efi
tmpfs             tmpfs      170860            4     170856      1%    /run/user/0
overlay           overlay  61540412    19791160    39020044     34%    /var/lib/docker/overlay2/7754829d0ad68c8acc8b50ed96ae87d8d882a996b87fe0b6821827e527487b62/merged

Спасибо, это отлично. Похоже, у вас параметр swappiness установлен в ноль, что, скорее всего, и является основной проблемой.

Однако есть три настройки, которые важно правильно настроить: одна из них — swappiness, а две другие упомянуты в Мнении о конфигурации развёртывания Discourse от MKJ:
/proc/sys/vm/overcommit_memory
/sys/kernel/mm/transparent_hugepage/enabled
/proc/sys/vm/swappiness

Вы можете установить эти значения один раз, но также следует убедиться, что они сохраняются при загрузке системы — см. пост MJK и проверяйте эти файлы перед их перезаписью.

Я подозреваю, что при загрузке что-то устанавливает swappiness в ноль. Возможно, ваш хостинг-провайдер пытается предотвратить использование SSD для свопинга. Но у вас обязательно должен быть своп, либо вам нужно как минимум увеличить оперативную память до 4 ГБ.

Попробуйте выполнить команду
egrep -r swappiness /etc/
чтобы найти, где именно устанавливается это значение.

На этом форуме есть рекомендации установить swappiness в 10 — я же предпочитаю оставить его по умолчанию, то есть 60.

Извините… Я не очень хорошо разбираюсь в Linux. Не могли бы вы подробно объяснить, как это настроить?
Я никогда не менял системные настройки вручную. Однако, похоже, что хостинг-провайдер ограничивает swap, так как этот сервер, судя по максимальным 2k IOPS, работает на HDD.


Могут ли эти действия навсегда изменить указанные вами настройки?

Выполните:

echo 'sys.kernel.mm.transparent_hugepage.enabled=never' > /etc/sysctl.d/10-huge-pages.conf
echo 'vm.overcommit_memory=1' > /etc/sysctl.d/90-vm_overcommit_memory.conf

и измените vm.swappiness = 60 в файле /etc/sysctl.conf

Теперь (я перезагрузил систему после внесения всех изменений. Приведенные ниже команды выполнены после перезагрузки):

root@iZj6cgi365ov99veqodfgnZ:~# head /proc/sys/vm/*
===> /proc/sys/vm/admin_reserve_kbytes <==
8192

===> /proc/sys/vm/compaction_proactiveness <==
20
head: не удалось открыть для чтения '/proc/sys/vm/compact_memory': Отказано в доступе

===> /proc/sys/vm/compact_unevictable_allowed <==
1

===> /proc/sys/vm/dirty_background_bytes <==
0

===> /proc/sys/vm/dirty_background_ratio <==
10

===> /proc/sys/vm/dirty_bytes <==
0

===> /proc/sys/vm/dirty_expire_centisecs <==
3000

===> /proc/sys/vm/dirty_ratio <==
30

===> /proc/sys/vm/dirtytime_expire_seconds <==
43200

===> /proc/sys/vm/dirty_writeback_centisecs <==
500
head: не удалось открыть для чтения '/proc/sys/vm/drop_caches': Отказано в доступе

===> /proc/sys/vm/extfrag_threshold <==
500

===> /proc/sys/vm/hugetlb_shm_group <==
0

===> /proc/sys/vm/laptop_mode <==
0

===> /proc/sys/vm/legacy_va_layout <==
0

===> /proc/sys/vm/lowmem_reserve_ratio <==
256     256     32      0       0

===> /proc/sys/vm/max_map_count <==
65530

===> /proc/sys/vm/memory_failure_early_kill <==
0

===> /proc/sys/vm/memory_failure_recovery <==
1

===> /proc/sys/vm/min_free_kbytes <==
45056

===> /proc/sys/vm/min_slab_ratio <==
5

===> /proc/sys/vm/min_unmapped_ratio <==
1

===> /proc/sys/vm/mmap_min_addr <==
65536

===> /proc/sys/vm/mmap_rnd_bits <==
28

===> /proc/sys/vm/mmap_rnd_compat_bits <==
8

===> /proc/sys/vm/nr_hugepages <==
0

===> /proc/sys/vm/nr_hugepages_mempolicy <==
0

===> /proc/sys/vm/nr_overcommit_hugepages <==
0

===> /proc/sys/vm/numa_stat <==
1

===> /proc/sys/vm/numa_zonelist_order <==
Node

===> /proc/sys/vm/oom_dump_tasks <==
1

===> /proc/sys/vm/oom_kill_allocating_task <==
0

===> /proc/sys/vm/overcommit_kbytes <==
0

===> /proc/sys/vm/overcommit_memory <==
1

===> /proc/sys/vm/overcommit_ratio <==
50

===> /proc/sys/vm/page-cluster <==
3

===> /proc/sys/vm/page_lock_unfairness <==
5

===> /proc/sys/vm/panic_on_oom <==
0

===> /proc/sys/vm/percpu_pagelist_high_fraction <==
0

===> /proc/sys/vm/stat_interval <==
1

===> /proc/sys/vm/stat_refresh <==

===> /proc/sys/vm/swappiness <==
60

===> /proc/sys/vm/unprivileged_userfaultfd <==
0

===> /proc/sys/vm/user_reserve_kbytes <==
50778

===> /proc/sys/vm/vfs_cache_pressure <==
100

===> /proc/sys/vm/watermark_boost_factor <==
15000

===> /proc/sys/vm/watermark_scale_factor <==
10

===> /proc/sys/vm/zone_reclaim_mode <==
0
root@iZj6cgi365ov99veqodfgnZ:~# cat /sys/kernel/mm/transparent_hugepage/enabled
always [madvise] never

Похоже, всё работает отлично! Искренне благодарю всех за помощь!

Это хороший прогресс! Я рекомендую

# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]