in reply to How to minimize memory footprint

It highly depends on the complexity of the ads system.

For example, if you only deliver some static content, something like HTTP::Server::Simple::CGI::PreFork should suffice. Just preload your content before you run() the server will give you a fast, relatively memory efficient system.

You might also try to run memcached with enough memory to hold some of the most recent used data. Then, you do a two-way fetch: First, try memcached (with Cache::Memcached::Fast). If found, deliver. If not found then read from disk, put into memcached and deliver. Since you are not holding the data in multiple threads/instances but in a central place (the filesystem) the memory footprint is quite low. Yet, you are caching the most recently used data in RAM in a central location - this might also be important, since there's a good chance you will deliver some ads more often than others (memcached normally flushed out the oldest data and keeps the most recently used in RAM).

Don't use '#ff0000':
use Acme::AutoColor; my $redcolor = RED();
All colors subject to change without notice.

Replies are listed 'Best First'.
Re^2: How to minimize memory footprint
by AlfaProject (Beadle) on Oct 24, 2011 at 17:16 UTC
    The system runs on 3 servers - back, front(apache) and images(nginx).
    I think of something like nginx does with static files.
    To load only once the script and run it from few workers, so the memory footprint will never increase.
    If it's possible ? Stable ? Production ready?
    For now the server serves about 150 request per second, the cpu is low and IO is ok... seems that only memory is a bottleneck.
    (I will read about memcache)
    Thanks.