fork: retry: Tài nguyên tạm thời không khả dụng [đã đóng]


80

Tôi đã thử cài đặt Intel MPI Benchmark trên máy tính của mình và gặp lỗi này:

fork: retry: Resource temporarily unavailable

Sau đó, tôi lại nhận được lỗi này khi tôi chạy lstoplệnh.

Điều gì gây ra lỗi này?

Cấu hình máy của tôi:

Dell precision T7500
Scientific Linux release 6.2 (Carbon)

Kiểm tra tài liệu Linux của bạn về cách tăng số lượng quy trình.
theglauber

2
Có lẽ điều này sẽ giúp: stackoverflow.com/questions/344203/...
theglauber

Câu trả lời:


82

Điều này thường xảy ra do hết bộ mô tả tệp.

Có giới hạn tổng bộ mô tả tệp của hệ thống, bạn nhận được gì từ lệnh:

sysctl fs.file-nr

Điều này trả về số lượng bộ mô tả tệp:

<in_use> <unused_but_allocated> <maximum>

Để tìm ra giới hạn của bộ mô tả tệp người dùng, hãy chạy các lệnh:

sudo su - <username>
ulimit -Hn

Để biết có bao nhiêu bộ mô tả tệp được người dùng sử dụng, hãy chạy lệnh:

sudo lsof -u <username> 2>/dev/null | wc -l

Vì vậy, bây giờ nếu bạn đang gặp vấn đề về giới hạn bộ mô tả tệp hệ thống, bạn sẽ cần phải chỉnh sửa tệp /etc/sysctl.conf của mình và thêm hoặc sửa đổi nó đã tồn tại, một dòng có fs.file-max và đặt nó thành giá trị lớn. đủ để đối phó với số lượng bộ mô tả tệp bạn cần và khởi động lại.

fs.file-max = 204708

15
FYI, bạn có thể sử dụng "sysctl -p" để áp dụng cài đặt hiện tại trong /etc/sysctl.conf lưu khởi động lại.
EmmEff

2
Ngoài ra, nếu bạn chỉ đọc / etc, bạn có thể sử dụng 'sysctl -w fs.file-max = 204708' trong thời gian chạy.
Ondrej Galbavý

bạn cũng có thể thêm nó trực tiếp đến hạt nhân mà không cần khởi động lại nhưng không vĩnh viễn 'echo 999999> / proc / sys / fs / file-max'
Matson kepson

50

Một khả năng khác là quá nhiều chủ đề. Chúng tôi vừa gặp phải thông báo lỗi này khi chạy thử nghiệm khai thác đối với một ứng dụng sử dụng nhóm luồng. Chúng tôi đã sử dụng

watch -n 5 -d "ps -eL <java_pid> | wc -l"

để xem số lượng chuỗi gốc Linux đang chạy trong ID quy trình Java nhất định. Sau khi con số này đạt khoảng 1.000 (đối với chúng tôi - YMMV), chúng tôi bắt đầu nhận được thông báo lỗi mà bạn đề cập.


2
Khi tôi kiểm tra, ps -eLđã làm việc để hiển thị tất cả các quy trình và ps -L <pid>làm việc để hiển thị các quy trình liên quan đến <pid>. ps -eL <pid>chỉ hiển thị tất cả các quy trình bất kể <pid>.
Sanghyun Lee

1
@Willie Wheeler Bạn đã làm gì để vượt qua giới hạn luồng? Tôi đã tìm kiếm và thử nghiệm nhiều giải pháp được tìm thấy trực tuyến, nhưng không có kết quả, trong DAYS. Không có gì sẽ cho phép nhiều hơn 1k luồng, ngoại trừ việc khởi động lại systemd-logind, kéo dài khoảng một giờ trước khi lỗi bắt đầu lại!
Brandon Elliott

Máy móc có tài nguyên hữu hạn. Nếu bạn đang đạt đến một giới hạn, hãy sử dụng ít chủ đề hơn (ví dụ: được kiểm soát bằng nhóm chủ đề) hoặc nhiều máy hơn.

Tôi đã khởi động lại máy chủ rails của mình
thedanotto

2
1000 chủ đề không phải là nhiều
Frankster
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.