Linux

軟限制與硬限制

  • November 9, 2016

我遇到了一個問題:

fork: Resource temporarily unavailable

我知道nproc是這個問題 有的建議增加軟限制,有的建議增加nproc硬限制。

我應該增加哪個?軟限制不是只是為了警告使用者而硬限制是最終真正限制的嗎?

它實際上是另一種方式。

軟限制的值實際上已實現,即在使用中,您可以將限制增加到相關硬限制的值(假設您不是超級使用者或沒有CAP_SYS_RESOURCE能力)。

將硬性限制和軟性限制分別視為強制性和酌情限制。硬限制由系統強加(通過適當的配置,例如limits.conf(5)),並且只能由超級使用者(即 root)增加,而使用者可以在相應的硬限制範圍內自行衡量軟限制。

getrlimits(2)手冊頁:

軟限制是核心對相應資源強制執行的值。硬限制充當軟限制的上限:非特權程序只能將其軟限制設置為從 0 到硬限制的範圍內的值,並且(不可逆地)降低其硬限制。

因此,如果您達到資源限制,則檢查是否可以增加相應的軟限制;如果不是,則需要增加硬限制。

回應評論

沒有隻有硬限制這樣的東西。限制由 設置setrlimit(2),它指的是struct rlimit。這反過來又具有軟限制和硬限制的成員(rlim_currlim_max,分別)。如果未明確定義軟限制,則預設為某個值;很可能是相應的硬限制,但這取決於設置限制的過程。(setrlimits(2)拒絕rlim_cur超過rlim_max,因此RLIM_INFINITY通常不是的有效預設值rlim_cur。)

引用自:https://unix.stackexchange.com/questions/322068