Adjust rlimit logic

Closes #5821
This commit is contained in:
Bjørn Erik Pedersen 2019-04-06 17:40:35 +02:00
parent ed65bda3b4
commit 708d4ceebd
1 changed files with 14 additions and 8 deletions

View File

@ -36,14 +36,17 @@ This is primarily to ensure that Hugo can watch enough files on some OSs`,
var rLimit syscall.Rlimit var rLimit syscall.Rlimit
err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLimit) err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLimit)
if err != nil { if err != nil {
return newSystemError("Error Getting Rlimit ", err) return newSystemError("Error Getting rlimit ", err)
} }
jww.FEEDBACK.Println("Current rLimit:", rLimit) jww.FEEDBACK.Println("Current rLimit:", rLimit)
if rLimit.Cur >= newRlimit {
return nil
}
jww.FEEDBACK.Println("Attempting to increase limit") jww.FEEDBACK.Println("Attempting to increase limit")
rLimit.Max = 999999 rLimit.Cur = newRlimit
rLimit.Cur = 999999
err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rLimit) err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rLimit)
if err != nil { if err != nil {
return newSystemError("Error Setting rLimit ", err) return newSystemError("Error Setting rLimit ", err)
@ -61,18 +64,21 @@ This is primarily to ensure that Hugo can watch enough files on some OSs`,
return &limitCmd{baseCmd: newBaseCmd(ccmd)} return &limitCmd{baseCmd: newBaseCmd(ccmd)}
} }
const newRlimit = 10240
func tweakLimit() { func tweakLimit() {
var rLimit syscall.Rlimit var rLimit syscall.Rlimit
err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLimit) err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLimit)
if err != nil { if err != nil {
jww.ERROR.Println("Unable to obtain rLimit", err) jww.WARN.Println("Unable to get rlimit:", err)
return
} }
if rLimit.Cur < rLimit.Max { if rLimit.Cur < newRlimit {
rLimit.Max = 64000 rLimit.Cur = newRlimit
rLimit.Cur = 64000
err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rLimit) err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rLimit)
if err != nil { if err != nil {
jww.WARN.Println("Unable to increase number of open files limit", err) // This may not succeed, see https://github.com/golang/go/issues/30401
jww.INFO.Println("Unable to increase number of open files limit:", err)
} }
} }
} }