monit のデッドロックを追っていた件ããæ´¾çãã¦ã pthread å ¨ç¶ç¥ãããªã¼ã¨ãããã¨ã§è¡¨ç´ãããã¡ããããã¨ã§æåãª(?) ãPthreadsããã°ã©ãã³ã°ããèªãã§ã¾ããã

- ä½è : Bradford Nichols,Dick Buttlar,Jacqueline Proulx Farrel,æ¦æ£æ²
- åºç社/ã¡ã¼ã«ã¼: ãªã©ã¤ãªã¼ã»ã¸ã£ãã³
- çºå£²æ¥: 1998/05/01
- ã¡ãã£ã¢: 大忬
- è³¼å ¥: 4人 ã¯ãªãã¯: 52å
- ãã®ååãå«ãããã° (21ä»¶) ãè¦ã
ã5.5.1 ã¹ã¬ããã®ããã®forkã®å¼ã³åºããã®ç« ã§ãã¹ã¬ãããã fork ããéã®æ³¨æç¹ãæ¸ããã¦ãã¾ãããã®ä¸ã§ 代ç親ã¢ãã« surrogate parent model ã¨ããç¨èªãæ°ã«ãªã£ãã®ã§ããã¯ã¢ããã
代ç親ã¢ãã« surrogate parent model
代ç親ã¢ãã«ãæ¤è¨ãã 代ç親ã¢ãã« ( surrogate parent model) ã§ã¯ãããã°ã©ã ã¯åæåã®æç¹ã§ã²ã¨ã¤ã®åããã»ã¹ããã©ã¼ã¯ãããåã®å¯ä¸ã®ç®çã¯ããªãªã¸ãã«ããã»ã¹ãå¥ã®åããã©ã¼ã¯ããå¿ è¦ãããæã«ããã種ã®ã代ç親ãã¨ãã¦åããã¨ã§ãã ãPthreadsããã°ã©ãã³ã°ãP214 ããå¼ç¨
ããã ãã ã¨æ½è±¡çã§ããããããªãã®ã§ããã身è¿ãªã¨ããã 㨠Apache ã® MPM worker ã§ CGI ãå®è¡ããéã«ä½¿ã mod_cgid ã¨ããã¢ã¸ã¥ã¼ã«ããã®ã¢ãã«ã«ã®ã£ã¨ã£ã¦å®è£
ããã¦ãã¾ãã
ããã§ CGI ã®è©±ãããã
ãã ãã¨ããã ãããªã CGI ã®è©±ã§ãã ã ãããã¯ããªãããããããã¹ãã£ã³ã°ãã£ã¦ãä¼ç¤¾ã«å¤ãã¦ããããã§ããã ãããã½ã£ã·ï¼ã¸ã¦ããï¼ããã½ã£ã·ï¼ã¸ã¦ããï¼ã
Apache ã® mod_cgid
mod_cgid ãå³è§£ããã¨ä¸è¨ã®æ§ãªã¢ãã«ã«ãªã£ã¦ãã¾ã
- Apache èµ·åæã« cgidãã¼ã¢ã³ã fork ããã
- worker 㨠cgidãã¼ã¢ã³ã¯ UNIXãã¡ã¤ã³ã½ã±ããã§ããã»ã¹ééä¿¡ãã
- ãããã³ã«ã¯mod_cgidã®ç¬èªå®è£
- ãã«ãã¹ã¬ãã㪠worker ã«å¤ãã£ã¦ cgidãã¼ã¢ã³ã fork + exec ãæ
ã
- cgid ã åããã»ã¹ãæ±ãã = surrogate parent
CGIãå®è¡ä¸ã«ããã»ã¹ããªã¼ãåã£ã¦ã¿ã㨠â ã®ããã«ãªãã¾ãã
root 23330 0.0 0.4 173684 3928 ? Ss 17:42 0:00 /usr/sbin/httpd.worker apache 23332 0.0 0.2 173532 2584 ? S 17:42 0:00 \_ /usr/sbin/httpd.worker apache 23531 0.0 0.1 25568 1416 ? S 17:42 0:00 | \_ /usr/bin/perl /var/www/html/index.pl apache 23533 0.0 0.1 25568 1416 ? S 17:42 0:00 | \_ /usr/bin/perl /var/www/html/index.pl apache 23536 0.0 0.1 25568 1420 ? S 17:42 0:00 | \_ /usr/bin/perl /var/www/html/index.pl apache 23538 0.0 0.1 25568 1424 ? S 17:42 0:00 | \_ /usr/bin/perl /var/www/html/index.pl apache 23541 0.0 0.1 25568 1420 ? S 17:42 0:00 | \_ /usr/bin/perl /var/www/html/index.pl apache 23333 0.0 0.6 714552 5816 ? Sl 17:42 0:00 \_ /usr/sbin/httpd.worker apache 23334 0.0 0.6 714552 5860 ? Sl 17:42 0:00 \_ /usr/sbin/httpd.worker
ããã»ã¹åãã¿ãªåããªã®ã§åºå¥ãã¤ãã«ããã§ãããperl ã®åããã»ã¹ãçããã¦ããã®ã cgid = surrogate parent ãªããã»ã¹ã§ãããcgid 㯠Apacheãèµ·åãã¦ãã«ãã¹ã¬ããåããåã«fork ãããã®ã§åããã»ã¹ã®ä¸ã§ä¸çªè¥ã pid ãåå¾ãã¾ãã
surrogate parent
surrogate parent model ã§æ¤ç´¢ããã¨ããªã¢ã«ãªåè²ã¦çãªãããã¯( 代çã®è¦ªãåè²ã¦ããã¨ãã¼ã ã®ãã¼ã ã®...) ã°ã£ããã¿ã¤ãã£ã¦ã¹ã¬ããã®ãè©±ã®æ¹ã¯ããã¾ãã§ã¦ãã¾ãã ...
ä¸å¿ openldap (slapd) ã® ML ãè¦ã¤ãã£ããã¯ãã¾ããããã©ããåºã使ããã¦ãããããªç¨èªã§ã¯ãªãããã§ãã
ååã¯ã¨ãããããã®ãããªã¢ãã«ãããã®ã ãªã¼ã¨ããã®ã大äºã§ããã
mod_cgi 㨠mod_cgid
ããããCGIã£ã¦ãªã¯ã¨ã¹ããåãã¦ãã Aapcheããã»ã¹èªèº«ã fork ããããããªãã£ãã? ãã¨ããããªãããã㯠MPM prefork + mod_cgi ã§ãããmod_cgid ã¨ã¯å¥å®è£
ãªã®ã§ããã
ã¾ã¨ã
ãã«ãã¹ã¬ããã®å¶ç´ããããã mod_cgid ã¯ããã«è¤éãªå®è£ ã«ãªã£ã¦ãããã ãããªã¼ãã¨åã ããæ°ã«ãªã£ã¦ã¯ããã®ã§ãããå ·ä½çãªçç±ãããåãã£ã¦ ã¾ããã§ããã æ¬ãèªãã§ ã¹ã¬ãã + fork æã®è½ã¨ãç©´ãé¿ããããã§ãããã¨ãæç¢ºã«ãªããã£ããã