[server] Add support for limiting memory usage.
This commit is contained in:
parent
51b0d777ed
commit
66e4d0aef5
2 changed files with 34 additions and 8 deletions
|
@ -476,11 +476,13 @@ func main_0 () (error) {
|
||||||
var _quiet bool
|
var _quiet bool
|
||||||
var _dummy bool
|
var _dummy bool
|
||||||
var _delay time.Duration
|
var _delay time.Duration
|
||||||
|
var _profileCpu string
|
||||||
|
var _profileMem string
|
||||||
|
var _limitMemory uint
|
||||||
|
|
||||||
var _isFirst bool
|
var _isFirst bool
|
||||||
var _isMaster bool
|
var _isMaster bool
|
||||||
|
|
||||||
var _profileCpu string
|
|
||||||
var _profileMem string
|
|
||||||
|
|
||||||
{
|
{
|
||||||
_flags := flag.NewFlagSet ("kawipiko-server", flag.ContinueOnError)
|
_flags := flag.NewFlagSet ("kawipiko-server", flag.ContinueOnError)
|
||||||
|
@ -509,12 +511,13 @@ func main_0 () (error) {
|
||||||
_processes_0 := _flags.Uint ("processes", 0, "")
|
_processes_0 := _flags.Uint ("processes", 0, "")
|
||||||
_threads_0 := _flags.Uint ("threads", 0, "")
|
_threads_0 := _flags.Uint ("threads", 0, "")
|
||||||
_slave_0 := _flags.Uint ("slave", 0, "")
|
_slave_0 := _flags.Uint ("slave", 0, "")
|
||||||
_profileCpu_0 := _flags.String ("profile-cpu", "", "")
|
|
||||||
_profileMem_0 := _flags.String ("profile-mem", "", "")
|
|
||||||
_debug_0 := _flags.Bool ("debug", false, "")
|
_debug_0 := _flags.Bool ("debug", false, "")
|
||||||
_quiet_0 := _flags.Bool ("quiet", false, "")
|
_quiet_0 := _flags.Bool ("quiet", false, "")
|
||||||
_dummy_0 := _flags.Bool ("dummy", false, "")
|
_dummy_0 := _flags.Bool ("dummy", false, "")
|
||||||
_delay_0 := _flags.Duration ("delay", 0, "")
|
_delay_0 := _flags.Duration ("delay", 0, "")
|
||||||
|
_profileCpu_0 := _flags.String ("profile-cpu", "", "")
|
||||||
|
_profileMem_0 := _flags.String ("profile-mem", "", "")
|
||||||
|
_limitMemory_0 := _flags.Uint ("limit-memory", 0, "")
|
||||||
|
|
||||||
FlagsParse (_flags, 0, 0)
|
FlagsParse (_flags, 0, 0)
|
||||||
|
|
||||||
|
@ -539,9 +542,9 @@ func main_0 () (error) {
|
||||||
_quiet = *_quiet_0 && !_debug
|
_quiet = *_quiet_0 && !_debug
|
||||||
_dummy = *_dummy_0
|
_dummy = *_dummy_0
|
||||||
_delay = *_delay_0
|
_delay = *_delay_0
|
||||||
|
|
||||||
_profileCpu = *_profileCpu_0
|
_profileCpu = *_profileCpu_0
|
||||||
_profileMem = *_profileMem_0
|
_profileMem = *_profileMem_0
|
||||||
|
_limitMemory = *_limitMemory_0
|
||||||
|
|
||||||
if _slave == 0 {
|
if _slave == 0 {
|
||||||
_isMaster = true
|
_isMaster = true
|
||||||
|
@ -620,6 +623,10 @@ func main_0 () (error) {
|
||||||
if (_processes * _threads) > 1024 {
|
if (_processes * _threads) > 1024 {
|
||||||
AbortError (nil, "[b0177488] maximum number of allowed threads in total is 1024!")
|
AbortError (nil, "[b0177488] maximum number of allowed threads in total is 1024!")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_limitMemory > (16 * 1024)) || (_limitMemory < 128) {
|
||||||
|
AbortError (nil, "[2781f54c] maximum memory limit is between 128 and 16384 MiB!")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -632,9 +639,26 @@ func main_0 () (error) {
|
||||||
|
|
||||||
_httpServerReduceMemory := false
|
_httpServerReduceMemory := false
|
||||||
|
|
||||||
if false {
|
if _limitMemory > 0 {
|
||||||
if _error := syscall.Setrlimit (syscall.RLIMIT_DATA, & syscall.Rlimit { Max : 4 * 1024 * 1024 * 1024 }); _error != nil {
|
{
|
||||||
AbortError (_error, "[f661b4fe] failed to configure limits!")
|
_limitMb := (2 * _limitMemory) + (1 * 1024)
|
||||||
|
_limit := syscall.Rlimit {
|
||||||
|
Cur : uint64 (_limitMb) * 1024 * 1024,
|
||||||
|
Max : uint64 (_limitMb) * 1024 * 1024,
|
||||||
|
}
|
||||||
|
if _error := syscall.Setrlimit (syscall.RLIMIT_AS, &_limit); _error != nil {
|
||||||
|
AbortError (_error, "[4da96378] failed to configure memory limit!")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
_limitMb := _limitMemory
|
||||||
|
_limit := syscall.Rlimit {
|
||||||
|
Cur : uint64 (_limitMb) * 1024 * 1024,
|
||||||
|
Max : uint64 (_limitMb) * 1024 * 1024,
|
||||||
|
}
|
||||||
|
if _error := syscall.Setrlimit (syscall.RLIMIT_DATA, &_limit); _error != nil {
|
||||||
|
AbortError (_error, "[f661b4fe] failed to configure memory limit!")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -39,6 +39,8 @@
|
||||||
--profile-cpu <path>
|
--profile-cpu <path>
|
||||||
--profile-mem <path>
|
--profile-mem <path>
|
||||||
|
|
||||||
|
--limit-memory <MiB>
|
||||||
|
|
||||||
--debug
|
--debug
|
||||||
--dummy
|
--dummy
|
||||||
--delay <duration>
|
--delay <duration>
|
||||||
|
|
Loading…
Reference in a new issue