Skip to content

Commit d407622

Browse files
committed
[core] Ensure the soft open file limit is raised 1024->[8192-65536]
1 parent 90d871a commit d407622

1 file changed

Lines changed: 43 additions & 0 deletions

File tree

core/core.go

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import (
2828
"context"
2929
"fmt"
3030
"net"
31+
"syscall"
3132

3233
"github.com/AliceO2Group/Control/common/logger/infologger"
3334
"github.com/AliceO2Group/Control/core/the"
@@ -41,6 +42,9 @@ import (
4142

4243
var log = logger.New(logrus.StandardLogger(),"core")
4344

45+
const fileLimitWant = 65536
46+
const fileLimitMin = 8192
47+
4448
// Run is the entry point for this scheduler.
4549
// TODO: refactor Config to reflect our specific requirements
4650
func Run() error {
@@ -71,6 +75,12 @@ func Run() error {
7175
// Set up channel to receive Unix Signals.
7276
signals(state)
7377

78+
// Raise soft file limit
79+
err = setLimits()
80+
if err != nil {
81+
return err
82+
}
83+
7484
// Start the Repo Manager instance
7585
log.WithField("level", infologger.IL_Support).Infof("Starting the Control Workflows repo manager")
7686
_ = the.RepoManager()
@@ -99,4 +109,37 @@ func Run() error {
99109
return err
100110
}
101111

112+
func setLimits() error {
113+
var rLimit syscall.Rlimit
114+
115+
err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLimit)
116+
if err != nil {
117+
return err
118+
}
119+
if rLimit.Cur > fileLimitWant {
120+
return nil
121+
}
122+
if rLimit.Max < fileLimitMin {
123+
err = fmt.Errorf("need at least %v file descriptors",
124+
fileLimitMin)
125+
return err
126+
}
127+
if rLimit.Max < fileLimitWant {
128+
rLimit.Cur = rLimit.Max
129+
} else {
130+
rLimit.Cur = fileLimitWant
131+
}
132+
err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rLimit)
133+
if err != nil {
134+
// try min value
135+
rLimit.Cur = fileLimitMin
136+
err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rLimit)
137+
if err != nil {
138+
return err
139+
}
140+
}
141+
142+
return nil
143+
}
144+
102145
// end Run

0 commit comments

Comments
 (0)