È»¶ø£¬¼´±ãÊÇ×׳µÄϵͳ£¬ÔÚÃæ¶ÔÎÞÏÞÖÆµÄ×ÊÔ´ÏûºÄʱҲ¿ÉÄÜ»á±äµÃ´àÈõ
Òò´Ë£¬ºÏÀíÅäÖÃLinuxϵͳ×ÊÔ´ÏÞÖÆ£¨limits£©£¬²»½öÄܹ»ÏÔÖøÌáÉýϵͳÐÔÄÜ£¬»¹ÄÜÓÐЧÔöǿϵͳµÄ°²È«ÐÔÓëÎȶ¨ÐÔ
±¾ÎĽ«ÉîÈë̽ÌÖLinuxÖÐÉèÖÃ×ÊÔ´ÏÞÖÆµÄÖØÒªÐÔ¡¢·½·¨ÒÔ¼°Êµ¼ÊÓ¦Óó¡¾°£¬°ïÖúÄúÕÆÎÕÕâÒ»ÌáÉýϵͳÔËάÄÜÁ¦µÄ¹Ø¼ü¼¼ÇÉ
Ò»¡¢ÎªºÎÐèÒªÉèÖÃ×ÊÔ´ÏÞÖÆ£¿ 1. ·ÀÖ¹×ÊÔ´ÀÄÓà ÔÚ¹²Ïí·þÎñÆ÷»ò¶àÓû§»·¾³ÖУ¬µ¥¸öÓû§»ò½ø³Ì¿ÉÄÜ»áÎÞÒâʶµØ£¨»ò¶ñÒâµØ£©ÏûºÄ´óÁ¿CPUʱ¼ä¡¢ÄÚ´æ¡¢ÎļþÃèÊö·ûµÈ×ÊÔ´£¬µ¼ÖÂÆäËûÓû§»ò·þÎñÎÞ·¨Õý³£ÔË×÷
ͨ¹ýÉèÖúÏÀíµÄ×ÊÔ´ÏÞÖÆ£¬¿ÉÒÔÈ·±£Ã¿¸öÓû§»ò½ø³ÌÖ»ÄÜʹÓÃÆä±»·ÖÅäµÄ×ÊÔ´·Ý¶î£¬±ÜÃâ×ÊÔ´¿Ý½ß
2. ÌáÉýϵͳÎȶ¨ÐÔ µ±ÏµÍ³×ÊÔ´±»¹ý¶ÈÕ¼ÓÃʱ£¬²»½ö»áµ¼ÖÂÐÔÄÜϽµ£¬»¹¿ÉÄÜ´¥·¢OOM£¨Out of Memory£©É±ÊÖ£¬×Ô¶¯ÖÕֹһЩ½ø³ÌÒÔÊÍ·ÅÄڴ棬ÕâÍùÍù»áÔì³É²»¿ÉÔ¤²âµÄ·þÎñÖжÏ
ͨ¹ýÔ¤Éè×ÊÔ´ÏÞÖÆ£¬¿ÉÒÔÔÚ×ÊÔ´½ôÕÅʱÌáǰ¸ÉÔ¤£¬¼õÉÙϵͳ±ÀÀ£µÄ·çÏÕ
3. ¼ÓÇ¿°²È«ÐÔ ×ÊÔ´ÏÞÖÆÒ²ÊÇÒ»ÖÖ»ù±¾µÄ°²È«´ëÊ©
ͨ¹ýÏÞÖÆÄ³Ð©Ãô¸Ð»ò¸ß·çÏÕ½ø³ÌµÄȨÏÞºÍ×ÊԴʹÓ㬿ÉÒÔÓÐЧ·ÀֹDZÔڵĹ¥»÷ÐÐΪ£¬Èç¾Ü¾ø·þÎñ¹¥»÷£¨DoS£©ºÍ×ÊÔ´ºÄ¾¡¹¥»÷
¶þ¡¢LinuxÖÐÉèÖÃ×ÊÔ´ÏÞÖÆµÄ·½·¨ LinuxÌṩÁ˶àÖÖ»úÖÆÀ´ÉèÖú͹ÜÀí×ÊÔ´ÏÞÖÆ£¬Ö÷Òª°üÀ¨`ulimit`ÃüÁî¡¢`/etc/security/limits.conf`ÅäÖÃÎļþ¡¢cgroups£¨¿ØÖÆ×飩ÒÔ¼°PAM£¨¿É²å°ÎÈÏ֤ģ¿é£©µÈ
1. ʹÓÃulimitÃüÁî `ulimit`ÊÇÒ»¸öshellÄÚÖÃÃüÁÓÃÓÚ¿ØÖÆshell½ø³Ì¼°ÆäÆô¶¯µÄ×Ó½ø³Ì¿ÉÒÔʹÓõÄ×ÊÔ´ÊýÁ¿
ËüÖ§³Ö¶àÖÖ×ÊÔ´ÀàÐ͵ÄÏÞÖÆ£¬ÈçCPUʱ¼ä¡¢Îļþ´óС¡¢ÄÚ´æÊ¹Óá¢ÎļþÃèÊö·ûÊýÁ¿µÈ
²é¿´µ±Ç°ÏÞÖÆ£ºulimit -a - ÉèÖÃCPUʱ¼äÏÞÖÆ£ºulimit -t 60£¨µ¥Î»£ºÃ룩 - ÉèÖÃ×î´óÄÚ´æÊ¹ÓÃÁ¿£º`ulimit -v 512000`£¨µ¥Î»£ºKB£© - ÉèÖÃÎļþÃèÊö·ûÉÏÏÞ£º`ulimit -n 4096` `ulimit`µÄÉèÖýö¶Ôµ±Ç°shell»á»°ÓÐЧ£¬ÒªÓÀ¾ÃÉúЧ£¬ÐèÐÞ¸ÄshellÆô¶¯½Å±¾£¨Èç`.bashrc`»ò`.profile`£©
2. /etc/security/limits.confÅäÖÃÎļþ `/etc/security/limits.conf`ÊÇPAMÄ£¿éʹÓõÄÅäÖÃÎļþ£¬ÓÃÓÚÉèÖÃϵͳ¼¶±ðµÄ×ÊÔ´ÏÞÖÆ
ËüÔÊÐíÎªÌØ¶¨Óû§»òÓû§×éÖ¸¶¨×ÊÔ´ÏÞÖÆ
ʾÀýÅäÖ㺠ÏÞÖÆÓû§johnµÄÄÚ´æÊ¹Óò»³¬¹ý1GB£¬ÎļþÃèÊö·û²»³¬¹ý2048 john soft memlock 1048576 john hard memlock 1048576 john soft nofile 2048 john hard nofile 2048 ÕâÀïµÄ`soft`±íʾ¾¯¸æÏÞÖÆ£¬´ïµ½´ËÏÞÖÆÊ±»á¸ø³ö¾¯¸æ£¬µ«ÈÔÔÊÐí¶Ìʱ¼ä³¬¹ý£»`hard`±íʾӲÏÞÖÆ£¬Ò»µ©´ïµ½£¬ÏµÍ³½«¾Ü¾ø½øÒ»²½ÇëÇó
3. ʹÓÃcgroups cgroupsÊÇLinuxÄÚºËÌṩµÄÒ»ÏÄÜ£¬ÔÊÐí½«½ø³Ì·Ö×飬²¢ÎªÃ¿¸ö×é·ÖÅä×ÊÔ´ÏÞÖÆ
ËüÌṩÁ˱È`ulimit`ºÍ`limits.conf`¸üϸÁ£¶ÈµÄ¿ØÖÆ£¬ÊʺÏÔÚ¶à×â»§»·¾³»òÈÝÆ÷»¯²¿ÊðÖÐʹÓÃ
- ´´½¨cgroup£º`cgcreate -g memory:/mygroup` - ÉèÖÃÄÚ´æÏÞÖÆ£º`echo 500M | sudo tee /sys/fs/cgroup/memory/mygroup/memory.limit_in_bytes` - ½«½ø³Ì¼ÓÈëcgroup£º`cgclassify -g memory:mygroup PID` 4. PAMÄ£¿é PAMÄ£¿é¿ÉÒÔÓëÆäËûÏÞÖÆ»úÖÆ½áºÏʹÓã¬ÎªµÇ¼»á»°Ìṩ¶îÍâµÄ°²È«²ã
ͨ¹ý±à¼`/etc/pam.d/`Ŀ¼ÏµÄÅäÖÃÎļþ£¬¿ÉÒÔÖ¸¶¨ÔڵǼʱӦÓÃÄÄЩ×ÊÔ´ÏÞÖÆ
Èý¡¢Êµ¼ÊÓ¦Óó¡¾°Óë²ßÂÔ 1. Web·þÎñÆ÷ÓÅ»¯ ÔÚWeb·þÎñÆ÷»·¾³ÖУ¬ÏÞÖÆÃ¿¸öWebÓ¦ÓõÄÄÚ´æÊ¹ÓúÍCPUʱ¼ä£¬¿ÉÒÔ·ÀÖ¹µ¥¸öÓ¦ÓÃÕ¼Óùý¶à×ÊÔ´£¬Ó°ÏìÆäËûÓ¦ÓõıíÏÖ
½áºÏcgroups£¬¿ÉÒÔΪÿ¸öÈÝÆ÷»¯µÄWebÓ¦ÓÃÉèÖöÀÁ¢µÄ×ÊÔ´Åä¶î£¬ÊµÏÖ×ÊÔ´µÄÁé»î·ÖÅäÓë¸ôÀë
2. Êý¾Ý¿â·þÎñÆ÷¹ÜÀí Êý¾Ý¿â·þÎñÆ÷ͨ³£ÐèÒªÑϸñ¿ØÖÆÄÚ´æºÍI/O×ÊÔ´µÄʹÓã¬ÒÔ·ÀÖ¹Òò×ÊÔ´¾ºÕùµ¼ÖµÄÐÔÄÜϽµ
ͨ¹ý`limits.conf`ÉèÖÃÊý¾Ý¿âÓû§µÄ×ÊÔ´ÏÞÖÆ£¬¿ÉÒÔÈ·±£Êý¾Ý¿â½ø³ÌÔÚÔ¤É跶ΧÄÚÔËÐУ¬Í¬Ê±ÀûÓÃcgroups¼à¿ØºÍµ÷Õû×ÊԴʹÓã¬Ìá¸ß×ÊÔ´ÀûÓÃÂÊ
3. ¿ª·¢»·¾³ÅäÖà ÔÚ¶àÓû§¿ª·¢»·¾³ÖУ¬ÏÞÖÆÃ¿¸öÓû§µÄ×ÊԴʹÓ㬿ÉÒÔÓÐЧ±ÜÃ⿪·¢¹ý³ÌÖеÄ×ÊÔ´ÀÄÓÃ
ÀýÈ磬ͨ¹ý`ulimit`ÏÞÖÆ±àÒëÈÎÎñµÄ×î´óÄÚ´æÊ¹Ó㬷ÀÖ¹±àÒë´óÏîĿʱºÄ¾¡ÏµÍ³×ÊÔ´
4. °²È«¼Ó¹Ì ¶ÔÓڸ߷çÏÕ·þÎñ£¬ÈçSSHµÇ¼¡¢Web·þÎñµÈ£¬¿ÉÒÔͨ¹ýPAMÄ£¿éºÍ`limits.conf`ÉèÖÃÑϸñµÄ×ÊÔ´ÏÞÖÆ£¬ÈçÏÞÖÆ×î´ó»á»°Ê±¼ä¡¢×î´ó²¢·¢Á¬½ÓÊýµÈ£¬ÔöǿϵͳµÄ°²È«ÐÔ
ËÄ¡¢½áÂÛ ºÏÀíÅäÖÃLinuxϵͳµÄ×ÊÔ´ÏÞÖÆ£¬ÊÇÌáÉýϵͳÐÔÄÜ¡¢ÔöÇ¿Îȶ¨ÐԺͰ²È«ÐÔµÄÖØÒªÊÖ¶Î
´Ó¼òµ¥µÄ`ulimit`ÃüÁîµ½¸´ÔÓµÄcgroupsÅäÖã¬LinuxÌṩÁ˷ḻµÄ¹¤¾ßºÍ·½·¨À´Âú×㲻ͬ³¡¾°ÏµÄÐèÇó
×÷Ϊϵͳ¹ÜÀíÔ±»ò¿ª·¢Õߣ¬ÉîÈëÀí½â²¢Áé»îÔËÓÃÕâЩ¼¼Êõ£¬²»½öÄܹ»ÓÅ»¯ÏµÍ³×ÊÔ´µÄʹÓÃЧÂÊ£¬»¹ÄÜÓÐЧ·À·¶Ç±ÔڵݲȫÍþв£¬ÎªÏµÍ³µÄÎȶ¨ÔËÐÐÌṩ¼áʵ±£ÕÏ
Ëæ×ÅLinuxÉú̬ϵͳµÄ²»¶Ï·¢Õ¹ºÍÍêÉÆ£¬³ÖÐøÌ½Ë÷ºÍʵ¼ùÕâЩ×ÊÔ´¹ÜÀí¼¼Êõ£¬½«ÊÇÎÒÃDz»¶ÏÌáÉýϵͳÔËάÄÜÁ¦ºÍ±£ÕÏÒµÎñÁ¬ÐøÐԵĹؼü