Рейтинг:0

Ограничение ЦП и советы по kswapd0 пойманы

флаг cn

В течение нескольких часов тестирования я обнаружил, что клиент синхронизации рабочего стола nextcloud для Ubuntu 20.04 (appimage или ppa), похоже, имеет ошибку, из-за которой ... если происходит обычная ошибка синхронизации файла nextcloud, файл подкачки на сервере Debian 10.5 становится полностью заполненным. (clamscan также увеличивает нагрузку от 45% до 100%, когда kswapd0 поднимается до 100% загрузки процессора). Другие мои клиенты синхронизации не вызывают этой проблемы (мобильные, собственные «онлайн-аккаунты» Ubuntu).

верхний вывод команды

топ - 16:08:59 вверх 22 мин, 2 пользователя, средняя загрузка: 89,42, 84,04, 55,66
Задания: 378 всего, 12 бегущих, 359 спящих, 0 остановленных, 7 зомби
%Cpu(s): 3,4 мкс, 57,0 си, 0,0 ни, 0,1 ид, 39,5 ва, 0,0 привет, 0,0 си, 0,0 ст
МБ памяти: всего 3946,8, 90,2 бесплатно, 3766,4 использовано, 90,1 бафф/кэш
Обмен МиБ: всего 6144,0, 0,0 бесплатно, 6144,0 использовано. 4.9 использовать память 

  PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND           
   36 корень 30 10 0 0 0 R 98,3 0,0 12:43,68 kswapd0           
 1691 mysql 20 0 1739540 2376 0 S 3,9 0,1 0:34,59 mysqld            
 1300 корень 10 -10 116752 3400 0 Д 3,3 0,1 0:41,96 АлиЮнДун         
 1544 корень 20 0 806108 640 0 Д 2.4 0.0 0:09.45 алиюн-сервис    
  161 корень 20 0 4556 1904 1844 S 0,9 0,0 0:10,60 plymouthd         
 2746 git 20 0 1374728 6020 0 S 0.7 0.1 0:07.23 gitea             
 1114 корень 20 0 24312 284 0 S 0.5 0.0 0:03.74 AliYunDunUpdate   
 5805 web2 20 0 292472 215456 920 D 0,4 5,3 0:05,43 clamscan          
  155 корень 0 -20 0 0 0 I 0.3 0.0 0:07.11 kworker/0:1H-kbl+ 
  232 root 20 0 70888 284 88 D 0.3 0.0 0:03.74 systemd-journal   
  936 memcache 20 0 408168 0 0 S 0,3 0,0 0:02.19 memcached         
 3492 корень 20 0 11380 756 556 Ч 0,3 0,0 0:03,28 верх               
    1 корень 20 0 170192 2972 ​​0 D 0,3 0,1 0:11,03 systemd           
 1041 redis 20 0 54244 428 0 D 0.3 0.0 0:03.28 redis-сервер      
 4029 www-данные 20 0 339376 2436 16 D 0,3 0,1 0:00,85 /usr/sbin/apach

Я пытался использовать nice и cpulimit, чтобы предотвратить достижение kswapd0 100% и полное потребление памяти подкачки... но kswapd0, кажется, просто выполняет обе команды независимо от того, выполняются ли они по отдельности или одновременно, и потребляет 100% процессора и подкачки, не оставляя мне другого выбора, кроме перезагрузить сервер, чтобы очистить кеш подкачки.

Я уже уменьшил swapiness до нуля. И я пробовал:

Чтобы освободить кеш страниц:
    эхо 1 > /proc/sys/vm/drop_caches
Чтобы освободить восстанавливаемые объекты плиты (включая дентри и иноды):
    эхо 2 > /proc/sys/vm/drop_caches
Чтобы освободить slab-объекты и кэш страниц:
    эхо 3 > /proc/sys/vm/drop_caches

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

ОБНОВИТЬ

После некоторого дополнительного тестирования и чтения... кажется, что ClamAV запускает clamscan при каждой загрузке и электронной почте, что увеличивает использование ЦП до 100%. Отношение к nextcloud в том, что у меня активирован антивирус для файлов. Поэтому мои загрузки синхронизации файлов также запускают clamscan, а затем перегружают сервер.

Решение, по-видимому, состоит в том, чтобы прекратить использование clamscan, а вместо этого внедрить clamav-daemon. Я сейчас изучаю проблему, но если кто-нибудь подскажет, как переключиться с clamscan на clamav-daemon. Буду премного благодарен.

Martin avatar
флаг kz
просто мысль: я бы подумал о том, чтобы полностью отключить пространство подкачки для ваших тестов: ```swapoff -a``` - таким образом, жнец ядра OOM уничтожит процесс, пожирающий всю память, прежде чем дело дойдет до подкачки... И ```kswapd``` - это процесс ядра, вы можете только cpulimit / nice процесс в пространстве пользователя!
Maestro223 avatar
флаг cn
Я взломал его ... только что опубликовал ответ.
Рейтинг:0
флаг cn

Описанная выше проблема была по сути «иллюзией», созданной clamscan. Вот как я решил это:

Вышеупомянутая проблема была двоякой: amavis запускал clamscan вместо clamd (в течение нескольких месяцев проблем не было, я полагаю, что обновление что-то изменило), в то время как антивирус nextcloud по умолчанию использовал clamscan вместо clamd. Поэтому всякий раз, когда я подключался к клиенту Nextcloud и видел «ошибку синхронизации», он скрывал тот факт, что clamscan перегружает сервер, поскольку clamscans для пользователя nextcloud весили около 29% ЦП / синхронизации файлов.

Я обнаружил проблему с amavis/clamscan, полностью отключив синхронизацию nextcloud и просто просматривая команду top.

Решение:

1.) #dpkg-reconfigure clamav-daemon #замените amavis на запуск clamd (см. документацию) <- По какой-то причине эта конфигурация не была постоянной, и система возвращалась после перезагрузки. Для постоянного средства ограничения ЦП на clamscan на машинах Debian/Ubuntu добавьте:
CPUAccounting=true CPUQuota=X% к:
#nano /etc/systemd/system/clamav-daemon.service.d/extend.conf
2.) Измените настройки антивируса nextcloud по умолчанию. от моллюск к clamav демон (сокет)

Это решит ваши проблемы.

Кое-что полезное, но необязательное здесь. Для тех, кто использует среду общего хостинга с debian/ubuntu, в которой по умолчанию установлены systemd/cgroups. Я нашел отличный учебник о том, как ограничить использование ЦП пользователем:

https://www.webhostingtalk.com/showthread.php?t=1832382

При этом вы можете ограничить общее использование ЦП пользователем, чтобы избежать сбоев сервера клиентами из-за неправильных настроек приложения.

Эта проблема стоила мне 4 дней .. надеюсь, что ответ поможет кому-то еще.

Ответить или комментировать

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