Здравейте,

Искам да попитам ви попитам за начин да наложа total memory limit на даден
процес
(в случая daemon) под Linux. limits.conf и ulimit не вършат работа защотото
се ограниченията
влизат в действие след като user-а се логне но не и когато се пусне като
root и си дропне привилегиите. Пробвах да стартирам daemon-а със softlimit
на DJB но пак не е решение ограниченията са за max memory per process а не
за total memory която може да се използва от parent процеса. В общи линии
една fork() и malloc() бомба могат да забият сървъра. Във freebsd например
този проблем е решен елегантно в /etc/login.conf се задава ограничение
vmemoryuse на daemon login class-a и това важи за всичко което се стартира
от rc. Пак за пример ако със софтлимит зададеме лимит от 150 процеса с
максимум 10MB памет и стартираме така apache (нормален лимит за аpache с
mod_perl & mod_php) лесно може да се напише нещо като това което може да се
изпълни през web и да забие сървъра:

 while (1)
 {
   fork();
   malloc(512);
 }

Ако може някой да сподели опит ще съм му благодарен. 10x


============================================================================
A mail-list of Linux Users Group - Bulgaria (bulgarian linuxers).
http://www.linux-bulgaria.org - Hosted by Internet Group Ltd. - Stara Zagora
To unsubscribe: http://www.linux-bulgaria.org/public/mail_list.html
============================================================================


Reply via email to