# NAME

Plack::Middleware::SizeLimit - Terminate processes if they grow too large

# SYNOPSIS

    use Plack::Builder;

    builder {
        enable SizeLimit => (
            max_unshared_size_in_kb => '4096', # 4MB
            # min_shared_size_in_kb => '8192', # 8MB
            # max_process_size_in_kb => '16384', # 16MB
            check_every_n_requests => 2
        );
        $app;
    };

# DESCRIPTION

This middleware is a port of the excellent [Apache::SizeLimit](http://search.cpan.org/perldoc?Apache::SizeLimit) module
for multi-process Plack servers, such as [Starman](http://search.cpan.org/perldoc?Starman), [Starlet](http://search.cpan.org/perldoc?Starlet) and `uWSGI`.

This middleware only works when the environment `psgix.harakiri` is
set to a true value by the Plack server.  If it's set to false, then this
middleware simply does nothing.

# CONFIGURATIONS

- max\_unshared\_size\_in\_kb

The maximum amount of _unshared_ memory the process can use;
usually this option is all one needs.

Experience on one heavily trafficked [mod\_perl](http://search.cpan.org/perldoc?mod\_perl) site showed that
setting this option and leaving the others unset is the most effective
policy.

This is because it only kills off processes that are truly using too much
physical RAM, allowing most processes to live longer and reducing the
process churn rate.

- min\_shared\_size\_in\_kb

Sets the minimum amount of shared memory the process must have.

- max\_process\_size\_in\_kb

The maximum size of the process, including both shared and unshared memory.

- check\_every\_n\_requests

Since checking the process size can take a few system calls on some
platforms (e.g. linux), you may specify this option to check the process
size every _N_ requests.

# SEE ALSO

[Starman](http://search.cpan.org/perldoc?Starman), [Starlet](http://search.cpan.org/perldoc?Starlet)

# AUTHORS

唐鳳 <cpan@audreyt.org>

# CC0 1.0 Universal

To the extent possible under law, 唐鳳 has waived all copyright and related
or neighboring rights to [Plack::Middleware::SizeLimit](http://search.cpan.org/perldoc?Plack::Middleware::SizeLimit).

This work is published from Taiwan.

[http://creativecommons.org/publicdomain/zero/1.0](http://creativecommons.org/publicdomain/zero/1.0)
