… | |
… | |
8 | |
8 | |
9 | our $STAT_FH; |
9 | our $STAT_FH; |
10 | our $TIMER; |
10 | our $TIMER; |
11 | |
11 | |
12 | cf::post_init { |
12 | cf::post_init { |
|
|
13 | cf::async_ext { |
13 | $STAT_FH = Coro::AIO::aio_open "/proc/self/stat", IO::AIO::O_RDONLY, 0 |
14 | $STAT_FH = Coro::AIO::aio_open "/proc/self/stat", IO::AIO::O_RDONLY, 0 |
14 | or return; |
15 | or return; |
15 | |
16 | |
16 | $TIMER = cf::periodic 10, sub { |
17 | $TIMER = cf::periodic 10, sub { |
17 | sysseek $STAT_FH, 0, 0; |
18 | sysseek $STAT_FH, 0, 0; |
18 | sysread $STAT_FH, my $stat, 4096; # only a single line |
19 | sysread $STAT_FH, my $stat, 4096; # only a single line |
19 | my $vmsize = (split / /, $stat)[22]; |
20 | my $vmsize = (split / /, $stat)[22]; |
20 | |
21 | |
21 | cf::cleanup "memory usage growing high, server would run out of memory soon", 0 |
22 | cf::cleanup "memory usage growing high, server would run out of memory soon", 0 |
22 | if $vmsize >= $MAX_VMSIZE; |
23 | if $vmsize >= $MAX_VMSIZE; |
|
|
24 | }; |
23 | }; |
25 | }; |
24 | }; |
26 | }; |