ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/ext/checkrusage.ext
(Generate patch)

Comparing deliantra/server/ext/checkrusage.ext (file contents):
Revision 1.3 by root, Thu Jan 25 03:56:48 2007 UTC vs.
Revision 1.6 by root, Tue May 4 21:45:42 2010 UTC

1#! perl 1#! perl
2 2
3# restart server when certain resource limits are exceeded 3# restart server when certain resource limits are exceeded
4
5use Unix::Getrusage;
6 4
7our $MAX_VMSIZE = $cf::CFG{checkrusage}{vmsize} || 1_000_000_000; 5our $MAX_VMSIZE = $cf::CFG{checkrusage}{vmsize} || 1_000_000_000;
8 6
9$^O eq "linux" or die "only linux supported right now.\n"; 7$^O eq "linux" or die "only linux supported right now.\n";
10 8
11Event->timer ( 9our $STAT_FH;
12 reentrant => 0, 10our $TIMER;
13 data => cf::WF_AUTOCANCEL,
14 interval => 10,
15 after => 10,
16 cb => sub {
17 open my $fh, "</proc/self/stat"
18 or return;
19 11
12cf::post_init {
13 $STAT_FH = Coro::AIO::aio_open "/proc/self/stat", IO::AIO::O_RDONLY, 0
14 or return;
15
16 $TIMER = cf::periodic 10, sub {
17 sysseek $STAT_FH, 0, 0;
20 sysread $fh, my $stat, 4096; # only a single line 18 sysread $STAT_FH, my $stat, 4096; # only a single line
21 my $vmsize = (split / /, $stat)[22]; 19 my $vmsize = (split / /, $stat)[22];
22 20
23 cf::cleanup "memory usage growing high, server would run out of memory soon", 0 21 cf::cleanup "memory usage growing high, server would run out of memory soon", 0
24 if $vmsize >= $MAX_VMSIZE; 22 if $vmsize >= $MAX_VMSIZE;
25 }, 23 };
26); 24};

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines