Tại sao tôi thường xuyên nhận được lỗi này Không thể phân bổ lỗi bộ nhớ?


29

Tôi đang sử dụng Ubuntu 12.10 với Gnome-Classic. Tôi nhận được lỗi này thường xuyên và với hầu hết các chương trình, lớn và nhỏ. Khi tôi cố mở chúng, chúng không khởi động và thay vào đó tôi nhận được thông báo lỗi Could not launch 'Program' - Failed to fork child process (Cannot allocate memory). Đây không phải là một vấn đề cho đến trong vài tuần qua.

Không thể cấp phát bộ nhớ

Tôi không thể nhận ra bất kỳ điểm chung nào giữa các chương trình gây ra lỗi này. Nó dường như là một vấn đề thời gian hơn. Sau khi máy tính của tôi chạy được một lúc, bất cứ nơi nào từ một ngày đến vài ngày, sau đó tôi dường như không thể bắt đầu bất kỳ chương trình mới nào.

Cách duy nhất tôi biết để ngăn chặn lỗi này là khởi động lại máy tính.

Tại sao tôi nhận được lỗi này và tôi phải làm gì để ngăn chặn nó xảy ra?


Tôi đã chạy memtest có sẵn từ menu GRUB và nó báo cáo không có lỗi, vì vậy tôi không nghĩ đây là lỗi phần cứng.

Tôi cũng đã chạy sudo apt-get check , và không có lỗi được tìm thấy.

Đây là một số đầu ra dòng lệnh được yêu cầu:

$ 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

Đây là đầu ra ps --sort -rss -eo rss,pid,command | headsau khi lỗi bắt đầu hiển thị:

$ 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

Dựa trên các đề xuất trong các nhận xét và câu trả lời, có vẻ như vấn đề có thể xảy ra với Bảng điều khiển Gnome hoặc các applet của nó. Dưới đây là các applet tôi đã chạy:

Bảng điều khiển

Các applet là Indicator Applet 12.10.1, System Monitor 3.5.92và một "thông báo Diện tích". và "ngày và giờ", không ai trong số đó tôi có thể truy cập số phiên bản cho.

Dưới đây là một số đầu ra dòng lệnh được yêu cầu:

$ 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

Ok, tôi đã nối câu trả lời của mình dưới đây với một số "bước tiếp theo".
Leland Kristie

Bạn đã chạy memtestbao lâu Lỗi thường chỉ xuất hiện trong các bài kiểm tra sau.
guntbert

@guntbert: Tôi để memtestchạy cho đến khi có một thông báo ở cuối màn hình cho biết tất cả các bài kiểm tra đã hoàn tất.
hỏi

Ok, tôi đã thêm câu trả lời của mình bên dưới một lần nữa với một số "bước tiếp theo".
Leland Kristie

1
@AlistairBuxton: Hmmm ... sau bảy giờ, với các applet thời gian / ngày trở lại trên bảng điều khiển, dường như không có sự gia tăng bộ nhớ. Tuy nhiên, có một điều khác biệt là không có màn hình hiển thị thời tiết. Trong applet thời gian / ngày, có một tùy chọn để hiển thị thời tiết, nhưng mặc dù tôi đã chọn nó, không có biểu tượng thời tiết nào xuất hiện. Điều này có vẻ kỳ lạ và có thể xác nhận sự cố liên quan cụ thể đến các chức năng thời tiết trong ứng dụng thời gian / ngày / thời tiết.
hỏi

Câu trả lời:


33

Một số quá trình bị rò rỉ bộ nhớ. Để có được ý tưởng về quá trình này có thể là gì, hãy chạy

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

Tôi đã thêm đầu ra cho lệnh vào câu hỏi của tôi. Tôi đã bắt được đầu ra này sau khi tôi bắt đầu nhận được lỗi.
hỏi

Rất có thể vấn đề nằm ở một trong những chỉ số ít được sử dụng mà bạn đang sử dụng, ví dụ: chỉ báo bên trái trông giống như lưỡi cưa tròn hoặc chỉ báo thời tiết. Lần lượt loại bỏ từng cái này để xem có khắc phục được sự cố không.
jdthood

Hóa ra đó là chỉ báo thời tiết. Xem câu trả lời của chính OP.
jdthood

19

Tôi khuyên bạn nên bắt đầu quá trình xử lý sự cố bằng cách kiểm tra RAM bằng tiện ích tích hợp được cung cấp trong menu khởi động GRUB và loại bỏ "RAM xấu" là nguồn gốc của sự cố.

Kiểm tra bộ nhớ Kiểm tra bộ nhớ

Memtest86 + Memtest86 +

Tiếp theo, hãy kiểm tra hệ thống của bạn xem có phụ thuộc bị hỏng từ thiết bị đầu cuối với sudo apt-get check không , và nếu có lỗi, hãy chạy lại lệnh dưới dạng sudo apt-get check -f để thử và sửa chúng.

Nếu bạn vui lòng, hãy thử các bước này và báo cáo lại ở đây với bất kỳ kết quả nào.

Leland


Chào Dave,

Được rồi - chúng tôi đã loại trừ phần cứng là nguồn gốc của vấn đề.

Tiếp theo, hãy kiểm tra việc sử dụng bộ nhớ và xử lý cài đặt trên máy tính của bạn; chạy các lệnh này từ dấu nhắc thiết bị đầu cuối:

Hiển thị dung lượng bộ nhớ trống và đã sử dụng

miễn phí

Hiển thị tóm tắt sử dụng trao đổi

hoán đổi -s

Hiển thị giới hạn tài nguyên quy trình người dùng

ulimit -a

Ảnh chụp màn hình bên dưới là từ bản cài đặt sạch 10.04LTS. Các chi tiết cần lưu ý từ các mục được khoanh tròn màu vàng thứ nhất và thứ hai nằm trong cột "đã sử dụng", hiển thị bộ nhớ và không gian trao đổi có sẵn cho hệ điều hành để sử dụng, tức là chúng không được sử dụng hết.

Mục được khoanh tròn màu vàng phía dưới hiển thị không có giới hạn về số lượng quy trình người dùng, ví dụ như gFTP hoặc ứng dụng khác, hệ điều hành sẽ cho phép người dùng chạy.

Nếu bạn vui lòng, hãy thử các bước này và báo cáo lại ở đây với bất kỳ kết quả nào.

Leland

Sử dụng bộ nhớ và xử lý giới hạn tài nguyên


Chào Dave,

Kết quả trả về từ ps --sort -rss -eo rss, pid, lệnh | phần đầu bạn đã đăng cho thấy quá trình bảng điều khiển gnome sử dụng khoảng 1,8 GB bộ nhớ có vẻ hơi bất thường - có vẻ như rất nhiều bộ nhớ cho Môi trường máy tính để bàn đang sử dụng.

Bạn có thể phân tích bộ nhớ của bảng gnome quy trình đang sử dụng bằng cách chạy các lệnh được khoanh tròn trong ảnh chụp màn hình bên dưới và xem mọi thứ sẽ diễn ra ở đâu - điều đó có thể tiết lộ điều gì đó nổi bật.

Để so sánh, quy trình bảng gnome trên máy ảo của tôi đang sử dụng 48 MB RAM - mặc dù vậy, máy 10.04 trong các ảnh chụp màn hình này là máy ảo tôi chỉ sử dụng để kiểm tra chứ không phải máy tính để bàn của riêng tôi.

pmap từ quá trình bảng gnome

Do đó, tôi sẽ đưa ra bước tiếp theo là tách biệt vấn đề thành "một cái gì đó" trong môi trường máy tính để bàn Gnome.

Để kiểm tra điều này, hãy thử cài đặt không gian làm việc plasma KDE mà bạn sẽ tìm thấy trong Trung tâm phần mềm Ubuntu.

môi trường máy tính để bàn kde-plasma

Sau khi cài đặt, hãy khởi động lại máy tính của bạn và đăng nhập bằng phiên KDE thay vì Gnome, chạy các ứng dụng của bạn một cách tốt nhất có thể (máy tính để bàn hoàn toàn khác) để xem lỗi "Không thể phân bổ bộ nhớ" có lặp lại ở đây không.

Nói một cách đơn giản, bạn sẽ có thể chạy các "bài kiểm tra" CLI tương tự trong môi trường KDE như chúng tôi đã thực hiện trong môi trường Gnome và có thể so sánh kết quả trong việc kiểm tra hành vi của máy tính giữa hai người.

Trong KDE, ứng dụng bảng điều khiển bạn sẽ tìm kiếm là xterm mà bạn có thể tìm thấy từ hộp thoại Tìm kiếm trên menu chính.

xterm pid và pmap cho máy tính để bàn plasma

Tôi sẽ tự tin một chút ở đây và nói rằng tôi nghĩ chúng ta đang đi đúng hướng để cô lập vấn đề.

Leland


Cảm ơn bạn đã trả lời. Tôi đã chạy cả memtest và các apt-getlệnh bạn đề xuất, và cả hai đều báo cáo không có lỗi. Tôi đã cập nhật câu hỏi của tôi cho phù hợp.
hỏi

Tôi đã thêm vào câu hỏi của tôi đầu ra của các lệnh bạn yêu cầu. Điều duy nhất tôi lưu ý là bên dưới max user processesnó không nói unlimitednhư của bạn. Của tôi có số 31421.
hỏi

1
Xin chào Dave, Một lưu ý ngắn để cho bạn biết rằng tôi sẽ có thể theo dõi lại với bạn vào cuối tuần. Công việc hàng ngày của tôi khiến tôi bận rộn vào các buổi tối và vì vậy tôi nghĩ rằng tôi chỉ cần gửi một ghi chú lịch sự cho bạn ở đây để cho bạn biết tôi đã không biến mất. Leland
Leland Kristie

Ồ và nhân tiện, tôi đã thử thay đổi các quy trình người dùng tối đa cài đặt xuống 1024 và không thể tái tạo lỗi theo cách này ... nghĩ rằng tôi đã đề cập đến việc tôi đã thử điều đó.
Leland Kristie

Tôi đã cài đặt máy tính để bàn KDE, nhưng hiện tại tôi đang đợi cho đến khi tôi bắt đầu gặp lại lỗi và sau đó tôi sẽ chạy pmaplệnh và đăng kết quả đầu ra ở đây. Tôi cũng đã thực hiện một chút tìm kiếm và nhận thấy có một số đề cập về rò rỉ bộ nhớ trong bảng điều khiển gnome, do đó có vẻ như là một nghi ngờ.
hỏi

3

Sau khi thử nghiệm bật và tắt trong vài ngày qua, tôi tự tin bây giờ nói rằng vấn đề là rò rỉ bộ nhớ trong phần chỉ báo thời tiết của applet thời gian và ngày. Khi thời tiết hiển thị, việc sử dụng bộ nhớ tăng theo thời gian. Khi thời tiết không hiển thị, bộ nhớ không tăng.

Tôi đoán đây là một lỗi với chỉ báo thời tiết nên được báo cáo, nhưng báo cáo lỗi trên Launchpad là một quá trình quá phức tạp để tôi thực hiện.


Mở một thiết bị đầu cuối trên máy của bạn và chạy "apport-bug", nó sẽ thu hút thông tin và gửi báo cáo lỗi cho bạn.
jdthood

2
@jdthood: Đó là lý thuyết về việc nó nên dễ dàng như thế nào. Thực tế là màn hình đầu tiên của các tùy chọn không mô tả vấn đề của tôi và tùy chọn "khác" chỉ cho tôi biết tôi cần một tên gói và sau đó thoát. Tương tự như thế này .
hỏi

Mở bug.launchpad.net/ubfox/+source/indicator-weather trong trình duyệt, nhấp vào "Báo cáo lỗi" và làm theo hướng dẫn. Khi bạn biết số được gán cho báo cáo, hãy chạy "apport-coll <bugnumber>" để tải lên thông tin liên quan về máy bị ảnh hưởng.
jdthood

1

Nếu bạn gặp sự cố này khi sử dụng Ruby on Rails với Digital Ocean thì có thể là do bạn có quá ít RAM. Hãy thử tăng RAM từ 512MB lên 1GB , điều đó đã cố định nó cho tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.