Вопрос или проблема
У моего ноутбука есть SSD и 16 ГБ ОЗУ, поэтому я знаю, что проблема не в характеристиках.
Этот ноутбук раньше работал на Windows, и у меня никогда не было проблем с производительностью, но это изменилось с тех пор, как я перешел на Ubuntu.
Я сделал это, потому что работаю с Docker, а он работает быстрее на Linux.
Проблема в том, что иногда система просто полностью зависает, и мне приходится ждать несколько минут, пока она снова заработает. Бывает, что это занимает так много времени, что быстрее перезагрузить его кнопкой питания.
У кого-нибудь есть идеи, что может вызывать это? Это происходит как минимум 3 раза в день, и я в ярости.
Я обычно использую Docker, Firefox, Discord и VSCode одновременно. Я использовал все это на Windows и никогда не имел проблем (за исключением того, что Docker работает гораздо лучше на Linux).
Есть какие-либо мысли?
Я сообщаю, что наблюдаю такую же проблему на более старом ноутбуке с SSD и всего 3 ГБ ОЗУ. Я следил за использованием ОЗУ и свопа, и временно увеличивал ОЗУ, но это не повлияло на проблему. У меня работал Docker с Portainer, но ничего не делал. Зависание происходило очень быстро в любой сессии Firefox или Vivaldi, но не в сессии Dillo. Зависание также происходило в Thunderbird в тот момент, когда Thunderbird, возможно, пытался выйти в интернет.
Когда начинается зависание, браузер и большинство операций на рабочем столе становятся неотзывчивыми, но мышь все еще перемещает указатель. Клавиатура со временем окончательно становится неактивной. Например, индикатор Caps Lock работает до какого-то момента. Время от времени возникают краткие моменты жизни, пока не произойдет еще одно зависание, как неотзывчивое всплывающее сообщение. Если я достаточно быстр и подготовлен, я могу переключиться в режим TTY и завершить браузер в HTOP. Жизнь восстанавливается после этого. Если я ничего не делаю, вся система в конечном итоге становится неотзывчивой. Неважно, используем ли мы рабочий стол Ubuntu или Kubuntu. Я сейчас использую Kubuntu 22 с “nomodeset” и без Docker. Это более старый ноутбук. “Nomodeset” принес другие улучшения. Пока зависаний не было без запущенного Docker (я бы никогда не смог бы опубликовать это сообщение), но я пока его не запускал. Я хотел бы больше информации для устранения неполадок и также больше времени без зависаний в текущем состоянии, прежде чем снова начать работать с Docker. Во всех моих тестах я запускал только браузер и уделял внимание использованию ОЗУ. Я также увеличил доступное пространство для свопа, но это тоже не помогло.
Я смотрел разные журналы, но не заметил ничего. Во-первых, я не уверен, что смогу что-то заметить, и, во-вторых, мне интересно, препятствует ли зависание ведению журнала. Я много раз пытался подключиться к ноутбуку через SSH, когда он зависает. Всегда нет улик о том, что ноутбук подключен к LAN.
Не помню, было ли избыточное тепло или работали ли вентиляторы, или даже ощущение тепла после того, как оставлял ноутбук в покое. Я бы сказал, что он, скорее всего, был холодным.
У меня есть такая же модель, переработанный ноутбук, работающий на Ubuntu 20.4 в режиме постоянной работы над задачами Docker. Я никогда не видел этой проблемы с ним. Единственное физическое различие между ними, кроме ОЗУ, заключается в том, что в этом, у которого есть проблемы, нет аккумулятора. Я не помню, тестировал ли я его с батареей другого ноутбука.
Я вижу много случаев этой проблемы, т.е. зависание в браузере или почтовом приложении, которые сообщаются в интернете. Некоторые из них уходят далеко в прошлое. Я никогда не вижу никаких определенных объяснений того, что происходит или что именно диагностически проверить. Я думаю, что мой пост может быть полезным. Мой личный опыт с этой проблемой, должно быть, поможет. Это противоречит тому, что Ask Ubuntu говорит о том, что должно быть в “ответе”. Думаю, мне стоит извиниться за такое мнение.
Это довольно неясно, но в случае, если это связано с чрезмерным использованием ОЗУ, вы можете ограничить размер сегмента данных процессов по вашему выбору. Один из простых способов сделать это — открыть окно терминала bash
, ввести, скажем, ulimit -d 4194304
(размер сегмента данных ограничен до 4 ГБ). Все, что запускается из этого окна (не из меню менеджера сессий или другого окна терминала), будет иметь ограниченный размер сегмента данных, а значит, и использование ОЗУ. Если запросы на выделение памяти выйдут из-под контроля по какой-то причине, запросы brk()
в какой-то момент будут отклонены, что может либо заставить процесс адаптироваться к этой ограниченной среде, либо (более вероятно) завершиться с ошибкой.
Я систематически использую это для своих сессий Firefox с тех пор, как у меня был плохой опыт, посещая сомнительный сайт, из-за которого вся моя система замерзла несколько лет назад. Я настроил эквивалентный скрипт на Windows, используя Job Objects.
Ответ или решение
Причины зависания Ubuntu и их решение
Зависания операционной системы Ubuntu, как у вас, могут быть вызваны многими факторами, несмотря на достаточные аппаратные характеристики (SSD и 16 ГБ ОЗУ). Ниже приведены основные возможные причины и способы их устранения.
1. Программные конфликты
Ваш случай использования включает Docker, Firefox, Discord и VSCode. Эти приложения могут конфликты между собой или с драйверами. Рекомендуется:
- Отключите Docker: Поскольку вы отметили, что система не зависает без его работы, попробуйте запускать Docker только тогда, когда это необходимо, минимизировав его влияние на систему.
- Проверьте расширения браузера: Иногда плагины могут вызывать зависания. Отключите их и проверьте на наличие улучшений.
- Обновите ПО: Убедитесь, что вы используете последние версии всех приложений и самой системы Ubuntu. Это может устранить известные ошибки.
2. Использование ресурсов
Хотя 16 ГБ ОЗУ достаточно для большинства задач, одновременное использование ресурсов может привести к замедлению системы. Учтите следующее:
- Статистика ресурсов: Используйте команды
htop
илиtop
, чтобы проверить использование ресурсов системой. Возможно, какие-то процессы потребляют много ОЗУ или ЦП, что приводит к зависаниям. - Ограничение использования ОЗУ: Установка лимитов для процессов, как вы уже обсуждали, может помочь. Выполнив
ulimit -d 4194304
в терминале перед запуском Firefox, вы сможете ограничить его потребление ОЗУ, что может снизить вероятность зависания.
3. Проблемы с драйверами
Недостаточно совместимые или устаревшие драйверы могут быть причиной зависаний. Чтобы предотвратить это:
- Установите драйвера из PPA: Попробуйте установить обновленные драйверы для графической карты через PPA, такие как
ppa:graphics-drivers/ppa
. Это может улучшить работу системы.
4. Логи и диагностика системы
Вы упомянули, что просматривали логи, но не находили никаких признаков проблем. Рекомендуется:
- Распределение журналов: Посмотрите в
/var/log/syslog
и/var/log/kern.log
. В них могут содержаться ошибки, которые произошли до или во время зависания. - DNS или сеть: Возможно, зависания связаны с сетевыми проблемами. Проверьте настройки сети и попробуйте использовать другой DNS (например, Google DNS – 8.8.8.8).
5. Температурные проблемы
Хотя вы говорите, что система, скорее всего, не перегревается, стоит проверить:
- Мониторинг температуры: Установите утилиты, такие как
lm-sensors
, чтобы контролировать температуры компонентов системы и убедитесь, что они находятся в пределах нормы. - Очистка вентиляции: Убедитесь, что воздухозаборники и вентиляторы ноутбука не забиты пылью, так как это может вызвать перегрев.
Заключение
Зависания в Ubuntu могут быть вызваны сочетанием программных и аппаратных проблем, начиная от конфликтов программ до неправильной конфигурации драйверов. Следите за использованием ресурсов, протестируйте приложения поочередно, поддерживайте систему в актуальном состоянии и контролируйте закрытые процессы и логи для лучшей диагностики. Если проблемы продолжатся, рассмотрите возможность обращения на специализированные форумы или в техподдержку для дальнейшей диагностики.