Почему я часто получаю эту ошибку «Не удается выделить память»?

29

Я использую Ubuntu 12.10 с Gnome-Classic. Я получаю эту ошибку часто и почти со всеми программами, большими и маленькими. Когда я пытаюсь открыть их, они не запускаются, и вместо этого я получаю сообщение об ошибке с надписью Could not launch 'Program' - Failed to fork child process (Cannot allocate memory). Это не было проблемой, пока в течение последних нескольких недель.

не может выделить память

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

Единственный способ предотвратить эту ошибку - перезагрузить компьютер.

Почему я получаю эту ошибку и что мне делать, чтобы она не произошла?


Я запустил memtest, доступный из меню GRUB, и он не сообщает об ошибках, поэтому я не думаю, что это аппаратный сбой.

Я тоже побежал sudo apt-get check, и ошибок не было найдено.

Вот некоторые запрошенные выходные данные командной строки:

$ free -m
             total       used       free     shared    buffers     cached
Mem:          3945       3753        191          0        181        475
-/+ buffers/cache:       3096        848
Swap:         3813         60       3753

$ swapon -s
Filename                Type        Size    Used    Priority
/dev/sda6                               partition   3905532 61648   -1

$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 31421
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 31421
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

Это вывод ps --sort -rss -eo rss,pid,command | headпосле появления ошибки:

$ ps --sort -rss -eo rss,pid,command | head
  RSS   PID COMMAND
1963400 2953 gnome-panel
155496 4029 banshee /usr/lib/banshee/Banshee.exe --redirect-log --play-enqueued
104944 15765 /opt/google/chrome/chrome --type=renderer --lang=en-US --force-fieldtrials=ForceCompositingMode/disable/GlobalSdch/global_enable_sdch/InfiniteCache/No/OmniboxDisallowInlineHQP/Standard/OmniboxHUPCreateShorterMatch/Standard/OmniboxHUPCullRedirects/Standard/OmniboxSearchSuggestTrialStarted2012Q4/2/OneClickSignIn/Standard/Prerender/PrerenderEnabled/SBInterstitial/V2/SpdyCwnd/cwndMin10/SpeculativePrefetching/Disabled/Test0PercentDefault/group_01/UMA-Dynamic-Binary-Uniformity-Trial/default/UMA-Session-Randomized-Uniformity-Trial-5-Percent/default/UMA-Uniformity-Trial-1-Percent/group_09/UMA-Uniformity-Trial-10-Percent/group_08/UMA-Uniformity-Trial-20-Percent/group_03/UMA-Uniformity-Trial-5-Percent/group_06/UMA-Uniformity-Trial-50-Percent/group_01/WarmSocketImpact/last_accessed_socket/ --enable-crash-reporter=ECE9000094D279FD3B14B35A74BF72CC,Ubuntu 12.10 --renderer-print-preview --disable-accelerated-2d-canvas --disable-accelerated-video-decode --channel=15654.5.89177240
78164 15654 /opt/google/chrome/chrome       
74912 19890 /usr/bin/python /usr/share/oneconf/oneconf-service
65476 12419 /usr/bin/perl /usr/bin/shutter
61096 19626 /usr/bin/python3.2 /usr/sbin/aptd
57832 15708 /opt/google/chrome/chrome --type=renderer --lang=en-US --force-fieldtrials=ForceCompositingMode/disable/GlobalSdch/global_enable_sdch/InfiniteCache/No/OmniboxDisallowInlineHQP/Standard/OmniboxHUPCreateShorterMatch/Standard/OmniboxHUPCullRedirects/Standard/OmniboxSearchSuggestTrialStarted2012Q4/2/OneClickSignIn/Standard/Prerender/PrerenderEnabled/SBInterstitial/V2/SpdyCwnd/cwndMin10/SpeculativePrefetching/Disabled/Test0PercentDefault/group_01/UMA-Dynamic-Binary-Uniformity-Trial/default/UMA-Session-Randomized-Uniformity-Trial-5-Percent/default/UMA-Uniformity-Trial-1-Percent/group_09/UMA-Uniformity-Trial-10-Percent/group_08/UMA-Uniformity-Trial-20-Percent/group_03/UMA-Uniformity-Trial-5-Percent/group_06/UMA-Uniformity-Trial-50-Percent/group_01/WarmSocketImpact/last_accessed_socket/ --enable-crash-reporter=ECE9000094D279FD3B14B35A74BF72CC,Ubuntu 12.10 --extension-process --renderer-print-preview --disable-accelerated-2d-canvas --disable-accelerated-video-decode --channel=15654.2.1555888673
42108  3030 /var/lib/dropbox/.dropbox-dist/dropbox

Судя по предложениям в комментариях и ответах, возможно, проблема в панели Gnome или ее апплетах. Вот апплеты, которые я запускаю:

Панельные апплеты

Апплеты Indicator Applet 12.10.1, System Monitor 3.5.92и «Область уведомлений». и «дата и время», для которых я не могу получить доступ к номеру версии.

Вот еще некоторые запрошенные выходные данные командной строки:

$ df -h
Filesystem                             Size  Used Avail Use% Mounted on
/dev/sda5                               19G   12G  6.4G  64% /
udev                                   2.0G  4.0K  2.0G   1% /dev
tmpfs                                  790M  1.1M  789M   1% /run
none                                   5.0M     0  5.0M   0% /run/lock
none                                   2.0G   84K  2.0G   1% /run/shm
none                                   100M     0  100M   0% /run/user
/dev/sda7                              384G  306G   59G  84% /home
mythbuntu@192.168.0.4:/home/mythbuntu  437G  360G   55G  87% /home/dave/Mythbuntu
$ sudo du -csh /var/log
15M /var/log
15M total
интервьюер
источник
Хорошо, я добавил свой ответ ниже с некоторыми "дальнейшими шагами".
Леланд Кристи,
Как долго ты бежал memtest? Ошибки часто обнаруживаются только в более поздних тестах.
Гюнтберт
@guntbert: я давал memtestбежать, пока внизу экрана не появилось сообщение о том, что все тесты завершены.
Вопрос
Хорошо, я добавил свой ответ еще раз с некоторыми "дальнейшими шагами".
Леланд Кристи,
1
@AlistairBuxton: Хммм ... через семь часов, когда апплет времени / даты вернулся на панель, похоже, что памяти не стало больше. Однако, одна вещь, которая отличается, - нет отображения погоды. В апплете время / дата есть возможность отображать погоду, но даже если она у меня выбрана, значок погоды не отображается. Что кажется странным и может подтвердить, что проблема связана именно с функциями погоды в приложении время / дата / погода.
Вопрос

Ответы:

33

Какой-то процесс утечки памяти. Чтобы понять, каким процессом это может быть, запустите

ps --sort -rss -eo rss,pid,command | head
jdthood
источник
Я добавил вывод команды в свой вопрос. Я захватил этот вывод после того, как начал получать ошибку.
Вопрос
Скорее всего, проблема заключается в одном из менее часто используемых индикаторов, которые вы используете, например, в левом, который выглядит как пильный диск, или в индикаторе погоды. Удалите каждый из них по очереди, чтобы увидеть, решит ли это проблему.
Jdthood
Оказывается, это был индикатор погоды. Смотрите собственный ответ ОП.
Jdthood
19

Я предлагаю вам начать процесс устранения неполадок, протестировав ОЗУ с помощью встроенной утилиты, представленной в загрузочном меню GRUB, и устранить «плохую ОЗУ» как источник проблемы.

Тест памяти Тест памяти

Memtest86 + Memtest86 +

Затем проверьте систему на наличие нарушенных зависимостей в терминале с помощью команды sudo apt-get check и, если обнаружены ошибки, еще раз введите команду sudo apt-get check -f, чтобы попытаться исправить их.

Пожалуйста, попробуйте эти шаги и сообщите здесь с любыми результатами.

Леланд


Привет дэйв,

Хорошо, тогда - мы исключили аппаратное обеспечение как источник проблемы.

Далее давайте рассмотрим использование памяти и параметры процесса на вашем компьютере; запустите эти команды из терминала:

Показать количество свободной и использованной памяти

бесплатно -m

Показать сводную информацию об использовании свопа

swapon -s

Отображение лимитов ресурсов пользовательского процесса

ulimit -a

Снимок экрана ниже из чистой установки 10.04LTS. Подробности, которые следует отметить из первого и второго элементов в желтых кружках, находятся в столбце «Используется», который отображает память и пространство подкачки, доступное для используемой операционной системы, то есть они не все израсходованы.

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

Пожалуйста, попробуйте эти шаги и сообщите здесь с любыми результатами.

Леланд

Использование памяти и ограничения ресурсов процесса


Привет дэйв,

Результаты возвращаются из ps --sort -rss -eo rss, pid, command | В голове, которую вы опубликовали, показан процесс работы с панелью gnome, использующий примерно 1,8 ГБ памяти, что выглядит немного необычно - это похоже на большой объем памяти, который будет использовать среда рабочего стола.

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

Для сравнения, процесс gnome-panel на моей виртуальной машине использует 48 МБ ОЗУ - хотя на этих скриншотах машина 10,04 является виртуальной машиной, которую я использую только для тестов, а не мой собственный рабочий стол.

pmap из процесса панели gnome

Учитывая это, я предложу следующий шаг - изолировать проблему от «чего-то» в среде рабочего стола Gnome.

Чтобы проверить это, попробуйте установить рабочую область плазмы KDE, которую вы найдете в Центре программного обеспечения Ubuntu.

среда рабочего стола kde-plasma

После установки перезагрузите компьютер и войдите в систему с сеансом KDE вместо Gnome, запустите приложения как можно лучше (рабочий стол совершенно другой), чтобы увидеть, повторяется ли здесь ошибка «Не удается выделить память».

Проще говоря, вы сможете запускать те же «CLI-тесты» в среде KDE, что и в среде Gnome, и сможете сравнивать результаты при проверке поведения компьютера между ними.

В KDE консольное приложение, которое вы будете искать, это xterm, которое вы можете найти в диалоге поиска в главном меню.

xterm pid и pmap для плазменного рабочего стола

Я собираюсь добавить немного уверенности здесь и сказать, что я думаю, что мы коллективно на правильном пути, чтобы изолировать проблему.

Леланд

Леланд Кристи
источник
Спасибо, что ответили. Я выполнил как memtest, так и apt-getкоманды, которые вы предложили, и обе не сообщили об ошибках. Я обновил свой вопрос соответственно.
Вопрос
Я добавил к моему вопросу вывод команд, которые вы запрашивали. Единственное, что я отмечаю, это то, что под max user processesним не сказано, unlimitedкак у вас. У меня есть номер 31421.
Вопрос
1
Привет, Дейв, короткая записка, чтобы я знал, что к выходным я смогу снова с тобой связаться. Моя дневная работа заставляет меня быть занятой по вечерам, поэтому я подумала, что просто добавлю вам вежливую записку, чтобы вы знали, что я не исчезла. Леланд
Леланд Кристи
Да, и между прочим, я попытался изменить максимальное значение пользовательских процессов до 1024 и не смог воспроизвести ошибку таким образом ... подумал, что упомянул, что пытался это сделать.
Леланд Кристи,
Я установил рабочий стол KDE, но в настоящее время я жду, пока снова не увижу ошибку, а затем я выполню pmapкоманду и опубликую этот вывод здесь. Я также провел небольшой поиск и обнаружил некоторые упоминания об утечках памяти в gnome-panel, так что это кажется вероятным подозрением.
Вопрос
3

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

Я предполагаю, что это ошибка в индикаторе погоды, о которой следует сообщать, но сообщение об ошибках на Launchpad слишком сложный процесс, чтобы я мог его выполнить.

интервьюер
источник
Откройте терминал на вашем компьютере и запустите «apport-bug», который запросит информацию и отправит вам отчет об ошибке.
Jdthood
2
@jdthood: Это теория о том, как легко это должно быть. Реальность такова, что первый экран опций не описывает мою проблему, а опция «другие» просто говорит мне, что мне нужно имя пакета, а затем завершает работу. Похоже на это .
Вопрос
Откройте в браузере bugs.launchpad.net/ubuntu/+source/indicator-weather , нажмите «Сообщить об ошибке» и следуйте инструкциям. Как только вы узнаете номер, назначенный отчету, запустите apport-collect <bugnumber>, чтобы загрузить соответствующую информацию об уязвимом компьютере.
Jdthood
1

Если у вас возникла эта проблема при использовании Ruby on Rails с Digital Ocean , скорее всего, у вас слишком мало оперативной памяти. Попробуйте увеличить объем оперативной памяти с 512 МБ до 1 ГБ , это исправило это для меня.

Гленн Дейтон
источник