이“메모리를 할당 할 수 없습니다”오류가 자주 발생하는 이유는 무엇입니까?


29

Gnome-Classic과 함께 Ubuntu 12.10을 사용하고 있습니다. 크고 작은 거의 모든 프로그램 에서이 오류가 자주 발생합니다. 열려고하면 시작되지 않고 대신 오류 메시지가 나타납니다 Could not launch 'Program' - Failed to fork child process (Cannot allocate memory). 지난 몇 주 동안 문제가되지 않았습니다.

메모리를 할당 할 수 없습니다

이 오류를 발생시키는 프로그램들 사이의 공통점을 식별 할 수 없습니다. 시간 문제인 것 같습니다. 하루 종일 며칠 내내 컴퓨터가 잠시 동안 실행 된 후에는 새 프로그램을 시작할 수 없습니다.

이 오류를 방지하는 유일한 방법은 컴퓨터를 재부팅하는 것입니다.

이 오류가 발생하는 이유와 발생을 중지하려면 어떻게해야합니까?


GRUB 메뉴에서 사용할 수있는 memtest를 실행했는데 오류가보고되지 않으므로 이것이 하드웨어 오류라고 생각하지 않습니다.

나도 실행했는데 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 Panel 또는 애플릿에 문제가있을 수 있습니다. 내가 실행중인 애플릿은 다음과 같습니다.

패널 애플릿

애플릿은 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화면 하단에 모든 테스트가 완료되었다는 메시지가 표시 될 때까지 실행했습니다.
Questioner

좋아, 나는 몇 가지 "다음 단계"와 함께 아래 답변을 다시 한번 추가했습니다.
Leland Kristie 2012

1
@AlistairBuxton : 흠 ... 7 시간 후, 패널에 시간 / 날짜 애플릿이 다시 표시되면 메모리가 증가하지 않는 것 같습니다. 그러나 다른 점은 날씨 표시가 없다는 것입니다. 시간 / 날짜 애플릿에는 날씨를 표시하는 옵션이 있지만 날씨를 선택하더라도 날씨 아이콘이 나타나지 않습니다. 이상하게 보이고 문제가 시간 / 날짜 / 날씨 앱의 날씨 기능과 관련이 있음을 확인할 수 있습니다.
Questioner

답변:


33

일부 프로세스에서 메모리가 누출되고 있습니다. 이것이 어떤 프로세스인지 알기 위해서는 다음을 실행하십시오.

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

내 질문에 명령의 출력을 추가했습니다. 오류가 발생하기 시작한 후에이 출력을 캡처했습니다.
Questioner

아마도 문제는 덜 자주 사용하는 지표 중 하나, 예를 들어 원형 톱날처럼 보이는 왼쪽 또는 날씨 지표와 관련이 있습니다. 문제를 해결하는지 확인하려면 각각을 차례로 제거하십시오.
jdthood

날씨 표시기였습니다. OP의 자체 답변을 참조하십시오.
jdthood

19

GRUB 부팅 메뉴에 제공된 내장 유틸리티를 사용하여 RAM을 테스트하여 문제 해결 프로세스를 시작하고 문제의 원인으로 "잘못된 RAM"을 제거하는 것이 좋습니다.

기억력 테스트 기억력 테스트

Memtest86 + Memtest86 +

다음으로 sudo apt-get check 를 사용하여 터미널에서 종속성이 손상되었는지 시스템을 확인 하고 오류가 발견되면 다음과 같이 명령을 다시 실행하십시오. sudo apt-get check -f 로 하여 수정하십시오.

원하는 경우 다음 단계를 시도하고 결과가있는 경우 여기에 다시보고하십시오.

릴랜드


안녕 데이브,

그렇다면 문제의 원인으로 하드웨어를 배제했습니다.

다음으로 컴퓨터의 메모리 사용량 및 프로세스 설정을 살펴 보겠습니다. 터미널 프롬프트에서 다음 명령을 실행하십시오.

사용 가능한 메모리 및 사용 된 메모리의 표시량

무료 -m

스왑 사용량 요약 표시

스왑 온 -s

사용자 프로세스 리소스 제한 표시

ulimit -a

아래 스크린 샷은 10.04LTS를 새로 설치 한 것입니다. 첫 번째 및 두 번째 노란색 원으로 표시된 항목에서 주목할 사항은 운영 체제에서 사용할 수있는 메모리 및 스왑 공간을 표시하는 "사용 된"열에 있습니다. 즉, 모두 사용되지는 않습니다.

아래쪽 노란색 원으로 표시된 항목은 gFTP 또는 기타 응용 프로그램과 같은 사용자 프로세스 수에 제한이 없으며 운영 체제에서 사용자가 실행할 수 있도록 허용합니다.

원하는 경우 다음 단계를 시도하고 결과가있는 경우 여기에 다시보고하십시오.

릴랜드

메모리 사용량 및 프로세스 리소스 제한


안녕 데이브,

결과에서 반환 PS --sort -rss의 EO RSS, PID 명령 | 당신이 게시 한 헤드 는 약 1.8GB의 메모리를 사용하는 그놈 패널 프로세스를 보여줍니다. 이것은 조금 특이한 것으로 보입니다. 데스크톱 환경에서 사용하는 많은 메모리처럼 보입니다.

아래 스크린 샷에서 동그라미로 표시된 명령을 실행하여 그놈 패널 프로세스가 사용중인 메모리를 분석 할 수 있으며 모든 것이 진행되는 위치를 확인하면 눈에 띄는 무언가가 드러날 수 있습니다.

비교를 위해 내 가상 머신 의 그놈 패널 프로세스는 48MB의 RAM을 사용하고 있습니다. 그러나이 스크린 샷의 10.04 머신은 테스트 용으로 만 사용되며 가상 데스크탑은 아닙니다.

그놈 패널 프로세스의 pmap

다음 단계는 Gnome 데스크탑 환경에서 "무언가"로 문제를 격리시키는 것입니다.

이를 테스트하려면 Ubuntu Software Center에있는 KDE 플라즈마 작업 공간을 설치하십시오.

kde-plasma 데스크탑 환경

설치가 완료되면 컴퓨터를 재부팅하고 Gnome 대신 KDE 세션으로 로그인 한 후 응용 프로그램을 최대한 실행하여 (데스크톱이 완전히 다름) "메모리를 할당 할 수 없습니다"오류가 반복되는지 확인하십시오.

간단히 말해서, Gnome 환경에서했던 것과 동일한 KDE 환경에서 동일한 CLI "테스트"를 실행할 수 있으며 두 시스템 간의 컴퓨터 동작을 검사 한 결과를 비교할 수 있습니다.

KDE에서 찾고있는 콘솔 응용 프로그램은 xterm 이며 기본 메뉴의 검색 대화 상자에서 찾을 수 있습니다.

플라즈마 데스크탑 용 xterm pid 및 pmap

저는 여기에 약간의 확신을 갖고 문제를 해결하기 위해 우리가 공동으로 올바른 길을 가고 있다고 생각합니다.

릴랜드


답변 해 주셔서 감사합니다. memtest와 apt-get제안한 명령을 모두 실행했으며 오류가보고되지 않았습니다. 이에 따라 내 질문을 업데이트했습니다.
Questioner

내 질문에 요청한 명령의 출력을 추가했습니다. 내가 주목하는 것은 당신의 max user processesunlimited처럼 말하지 않는다는 것입니다. 내 번호는 31421입니다.
Questioner

1
Dave 안녕하세요, 주말까지 다시 연락을 드릴 수 있음을 알려주는 간단한 메모입니다. 하루 종일 일하면서 저녁 시간에 바쁘게 지내므로 내가 사라지지 않았다는 것을 알리기 위해 여기에 예의 메모를 남기겠다고 생각했습니다. Leland
Leland Kristie

어쨌든, 최대 사용자 프로세스 설정을 1024로 변경하려고 시도했지만이 방법으로 오류를 재현 할 수 없었습니다 ... 내가 그것을 시도했다고 언급했습니다.
Leland Kristie

KDE 데스크톱을 설치했지만 현재 오류가 다시 표시 될 때까지 기다리고 pmap있습니다. 그런 다음 명령 을 실행하고 해당 출력을 여기에 게시합니다. 또한 약간의 검색을 수행하고 그놈 패널에 메모리 누수가 언급되어 있음을 발견했습니다.
Questioner

3

지난 며칠 동안이 기능을 켜고 끄는 실험을 한 결과, 시간 및 날짜 애플릿의 날씨 표시기 부분에서 메모리 누수가 발생한 것으로 확신합니다. 날씨가 표시되면 시간이 지남에 따라 메모리 사용량이 증가합니다. 날씨가 표시되지 않으면 메모리가 증가하지 않습니다.

나는 이것이 날씨 표시 기가있는 버그라고 생각하지만 Launchpad의 버그를보고하는 것은 너무 복잡하여 내가 수행 할 수있는 프로세스입니다.


컴퓨터에서 터미널을 열고 "apport-bug"를 실행하면 정보를 요청하고 버그 보고서가 작성됩니다.
jdthood

2
@ jdthood : 그것이 얼마나 쉬운 지 이론입니다. 현실은 옵션의 첫 번째 화면이 내 문제를 설명하지 않으며 "other"옵션은 패키지 이름이 필요하다고 말한 다음 종료됩니다. 마찬가지로 .
Questioner

브라우저에서 bugs.launchpad.net/ubuntu/+source/indicator-weather 를 열고 "버그보고"를 클릭하고 지시를 따르십시오. 보고서에 할당 된 번호를 알고 있으면 "apport-collect <bugnumber>"를 실행하여 영향을받는 시스템에 대한 관련 정보를 업로드하십시오.
jdthood

1

Digital Ocean 과 함께 Ruby on Rails를 사용하여이 문제가 발생하는 경우 RAM이 너무 작기 때문일 수 있습니다. RAM을 512MB에서 1GB로 올리면 문제가 해결되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.