Чому я часто отримую цю помилку "Не можу виділити пам'ять"?


29

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

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

Я не можу розрізнити спільності між програмами, які спричиняють цю помилку. Здається, це більше питання часу. Після того, як мій комп'ютер працює деякий час, від дня до кількох днів, я не можу, здається, запускати нові програми.

Єдиний спосіб, який я знаю, щоб запобігти цій помилці - це перезавантажити комп'ютер.

Чому я отримую цю помилку і що я роблю, щоб зупинити її?


Я запустив запит, доступний у меню 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

Гаразд, я додав свою відповідь нижче деякими "наступними кроками".
Leland Kristie

Як довго ти бігав memtest? Помилки часто виявляються лише в пізніших тестах.
guntbert

@guntbert: Я відпустив, memtestпоки внизу екрана не з’явилося повідомлення про те, що всі тести завершені.
Запитувач

Гаразд, я знову додав свою відповідь ще раз «наступними кроками».
Leland Kristie

1
@AlistairBuxton: Гммм ... після семи годин, коли аплет часу / дати повернеться на панель, схоже, що немає пам’яті. Однак одна річ - це відсутність погоди. У аплеті часу / дати є можливість відображення погоди, але, хоч я і вибрав її, піктограма погоди не з’являється. Що здається дивним і може підтвердити проблему, специфічно пов’язане з функціями погоди в додатку час / дата / погода.
Запитувач

Відповіді:


33

Деякий процес просочується пам'яттю. Щоб зрозуміти, який процес це може бути, запустіть

ps --sort -rss -eo rss,pid,command | head

Я додав вихід до команди до мого питання. Я захопив цей вихід після того, як почав отримувати помилку.
Запитувач

Найімовірніше, проблема полягає в одному з менш часто використовуваних індикаторів, які ви використовуєте, наприклад, або лівому, який виглядає як дискова пилка, або індикаторі погоди. Видаліть кожне з них по черзі, щоб побачити, чи це вирішує проблему.
jdthood

Виявляється, це був показник погоди. Дивіться власну відповідь ОП.
jdthood

19

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

Тест пам'яті Тест пам'яті

Memtest86 + Memtest86 +

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

Якщо вам подобається, спробуйте виконати ці кроки та повідомте про це з будь-якими результатами.

Леланд


Привіт Дейв,

Добре тоді - ми виключили обладнання як джерело проблеми.

Далі вивчимо використання пам'яті та налаштування процесу на вашому комп’ютері; запустіть ці команди з підказки терміналу:

Показати кількість вільної та використаної пам'яті

вільний -м

Відображення підсумків використання свопів

swapon -s

Відображення лімітів ресурсів користувачів

уліміть -а

Скріншот нижче - із чистої установки 10.04LTS. Відомості про перший та другий жовті обведені елементи знаходяться у стовпці "використано", де відображаються пам'ять та обмінні місця, доступні для використання операційною системою, тобто вони не всі використані.

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

Якщо вам подобається, спробуйте виконати ці кроки та повідомте про це з будь-якими результатами.

Леланд

Обмеження обсягу використання пам’яті та обмеження ресурсів процесу


Привіт Дейв,

Результати повернулися з ps --sort -rss -eo rss, pid, команда | голова, яку ви опублікували, показує процес gnome-панелі, використовуючи приблизно 1,8 Гб оперативної пам'яті, що здається трохи незвичним - це, здається, багато пам’яті, яке використовує Desktop Environment.

Ви можете отримати розбиття пам’яті, який використовує процес на панелі gnome, виконавши кружені команди на скріншоті нижче і побачити, куди все йде - це може виявити щось, що виділяється.

Для порівняння, процес gnome-панелі на моїй віртуальній машині використовує 48 Мб оперативної пам’яті, однак, машина 10,04 на цих скріншотах - це віртуальна машина, яку я використовую лише для тестів, а не власний робочий стіл.

pmap від gnome-панельного процесу

Враховуючи це, я висуну наступний крок - виділити проблему на "щось" у середовищі робочого столу Gnome.

Щоб перевірити це, спробуйте встановити робочу область плазми KDE, яку ви знайдете в програмному центрі Ubuntu.

kde-плазмове робоче середовище

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

Щоб було зрозуміло, ви зможете запускати ті самі «тести» CLI у середовищі KDE, що й у середовищі Gnome, і зможете порівнювати результати, вивчаючи поведінку комп'ютера між ними.

У KDE консольна програма, яку ви шукаєте, це xterm, яку ви можете знайти в діалоговому вікні пошуку в головному меню.

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

Я збираюся трохи довіритися тут і сказати, що думаю, що ми спільно на правильному шляху до вирішення проблеми.

Леланд


Дякую за відгук. Я виконував і запит, і apt-getзапропоновані вами команди, і обидва повідомили про помилки. Я відповідно оновив своє запитання.
Запитувач

Я додав до мого запитання висновок запитуваних вами команд. Єдине, що я зауважу, це те, що під max user processesним не сказано так, unlimitedяк це роблять ваші. Міна має номер 31421.
Запитувач

1
Привіт, Дейв, коротка записка, яка допоможе вам повідомити, що я зможу знову з вами продовжити вікенди. Моя щоденна робота тримає мене зайнятою вечорами, і тому я подумав, що я просто кину вам тут ввічливу ноту, щоб повідомити, що я не зник. Leland
Leland Kristie

О, і до речі, я спробував змінити максимальний користувальницький процес, встановивши його аж до 1024, і не міг таким чином відтворити помилку ... подумав, я зазначив, що я спробував це.
Leland Kristie

Я встановив робочий стіл KDE, але наразі я чекаю, поки я знову не побачу помилку, і тоді я запускаю pmapкоманду та розміщую тут вихід. Я також трохи здійснив пошук і виявив, що на панелі gnome є згадки про витоки пам'яті, так що це, мабуть, є підозрюваним.
Запитувач

3

Після експериментів із включенням та вимкненням протягом останніх кількох днів я впевнений у тому, що зараз говорив, що проблема полягала у витоку пам’яті в частині індикатора погоди аплету часу та дати. Коли відображається погода, з часом збільшується використання пам'яті. Коли погода не відображається, пам'ять не збільшується.

Я думаю, що це помилка з індикатором погоди, про яку слід повідомляти, але повідомлення про помилки на Launchpad - це занадто перекручений процес для мене.


Відкрийте термінал на своїй машині та запустіть "apport-bug", який вимагатиме інформації та подасть звіт про помилку.
jdthood

2
@jdthood: Це теорія того, наскільки вона повинна бути простою. Реальність полягає в тому, що перший екран опцій не описує мою проблему, а параметр "інший" просто говорить мені, що мені потрібно ім'я пакета, а потім закриває. Подібно до цього .
Запитувач

Відкрийте bugs.launchpad.net/ubuntu/+source/indicator-weather у браузері, натисніть «Повідомити про помилку» та дотримуйтесь вказівок. Як тільки ви дізнаєтесь номер, присвоєний звіту, запустіть "apport-collection <bugnumber>", щоб завантажити відповідну інформацію про уражену машину.
jdthood

1

Якщо у вас виникла ця проблема, використовуючи Ruby on Rails з Digital Ocean , швидше за все, у вас занадто мало оперативної пам’яті. Спробуйте підвищити оперативну пам’ять з 512 Мб до 1 Гб , що мені це виправили.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.