Äîêóìåíò âçÿò èç êýøà ïîèñêîâîé ìàøèíû. Àäðåñ îðèãèíàëüíîãî äîêóìåíòà : http://www.arcetri.astro.it/manual/ko/misc/perf-tuning.html
Äàòà èçìåíåíèÿ: Mon Jan 21 19:44:30 2013
Äàòà èíäåêñèðîâàíèÿ: Fri Feb 28 07:17:55 2014
Êîäèðîâêà: ISO8859-5

Ïîèñêîâûå ñëîâà: ï ï ï ï ï ï ï ï ï ï ï ï ð ï
ÎÖÖÔÔÅ ÌÊÄÙ×òË? - Apache HTTP Server
<-
Apache > HTTP Server > Documentation > Version 2.2 > Miscellaneous Documentation

ÎÖÖÔÔÅ ÌÊÄÙ×òË?

ÀÅÄÙ×á Î?Îþ:  en  |  ko  |  tr 

ÐÜ É?Ì-ÄÒ ÓæÍÕÖ× É?Ï?ÐÜ ÎÖÄåÄßÄé. ÓæÁéÏÅ Ê?ÀöÅØ ÃËÏûÐÊ ÏÅÎþ É?Ì-È? Ò?Àý×ßÌÌÏô.

ÎÖÖÔÔÅ 2.0ÐÊ ÁòÄÙÀ? Ö?ÖÓÀÅÄÙÌÊÀ? ÌÊÄÙÐ× Áå×?ÐÜ ÈÒÅÅÇß ÌÃÀø×á É?Ïû Ð?Ì-É?ÐÜÄé. Ê?ÔÅÈÆÕ? ÁòÇßÐË ÌÌÏüÁòÐ?×è ÌÃÀø×ßÑ? ÎÚÎâÑ?ÈÈ ÎÖÖÔÔÅ 2.0ÐÊ Í×Ñ? ÈÉÐÊ ÀöÏü Ã?ÐÊ ÌÊÄÙÐË ÃÍÄé.

ÎÖÖÔÔÅ 1.3À? ÊåÁÃ×èÌ- 2.0 É?Ð?ÐÊ ÓÃÈ?Ç?À? Ø?ÐõÌÊ(scalability)ÐË Ã?ÐÜÁòÐ?×è ÈÉÐÊ ÓæÐ?Ø-È? ×ïÄé. ÁòÊËÀ?ÐÈÇÞ ÄûÊÞÊà ÓæÐ?Ø-×á À?ÐË Ë÷Ïû×áÄé. ÁçÇ?Ã? ÔÔÖÔÐßÍÓ Ø?ÐÊ Í××ðÍÓ ÌÃÑ?ÐÜ ÌÊÄÙÏÅ Õ? ÏÅ×òÐË Ñé Ì? ÐæÄé. ÐÜ É?Ì-ÄÒ ÎÖÖÔÔÅ 2.0Ð× ÌÊÄÙÐË ×òË?×ßÁòÐ?×è Ì-É? À?È?ÐêÀÅ ÌÃÑ?×â Ì? ÐæÄÒ ÏÙÌ×ÐË ÌÃÈý×áÄé. ÎþÆ ÌÃÑ? ÏÙÌ×ÐÊ Ð?Ì-É?ÀÅ ×ßÅõÏ?ÎþÏÝ ÏþÏÅÓÌÑ?Ð× ÁòÄÙÐË Ä? Ðï ØÀÏû×ßÅÅÇß ×ßÄÒ ÉíÈù, ÎþÆ ÏÙÌ×ÐÊ ÌãÅÅÈ? Ð?×è ÁòÄÙÐË ØåË×áÄé.

top

×ßÅõÏ?ÎþÏÝ ÏþÏÅÓÌÑ?ÏÅ Äû×èÌ-

Ð?Ì-É? ÌÊÄÙÏÅ ÀÅÐõ Õ? ÏÅ×òÐË ÑæÄÒ ÀÝÐÊ ÈîÈ?È?Äé. ÍÊÏâÐÊ ÏôÓËÄ÷ Ñ?Ï?ÍÓÀ?ÐË Ë÷ÏûÐêÀÅ "ÓöÊàØ? Ê?È?ÄéÀý" ËÀ?×ßÑ? È?×ßÀä ÄÓÈ?ÁòÆ?É?ÏÅ Ð?Ì-É?ÄÒ ÍÊÏâÐË ×ßÈù ÎØÅØÄé. ÄÐÇÑÑ?Èù Ë÷ÏûÐêÄÒ Ñ?Ñ?×ßÀý ÄéÍÓ Ñ?Ìã×ßÏ? ÊÞ×ßÀÅ ÀøÌã Ñ?ÀÅ×áÄé. MaxClients Ñ?ÍÓÎþÈ? ÑÆÐ×ßÏ? Ð?Ì-É?ÀÅ ÍÊÏâÐË ×â Ñ?ÅÅÇÞ ÈÉÐÊ ÐêÍÔÐË ÈÈÅùÑ?ÎÚÅÅÇß ×èÎï ×áÄé. ÉöÉÐÊ À?Äì×ßÄé: topÀ? ÀÀÐÊ ÅÅÁÈÏÅÌ- ×ÑÇÞÌÌÍÊ ÈåÇßÐË ÊÈÀý ÎÖÖÔÔÅ ×ÑÇÞÌÌÍÊÐ× Ö?Áå ÈîÈ?È? Ë÷ÏûÇ?ÐË ÎÛÎÖÃÍØÔ, Ð?ÓÌ Ë÷ÏûÀÅÄÙ×á ÈîÈ?È?ÏÅÌ- ÄéÈ? ×ÑÇÞÌÌÍÊÅùÐÜ Ë÷Ïû×â À?À?ÐË Ë? À?ÏÅÌ- Ã?Ä?Äé.

Ã?ÈãÑ?ÄÒ Ö?É?×ßÄé: ÓöÊàØ? Ê?È? CPU, ÓöÊàØ? Ê?È? ÃçÖ?Ï?Ô?Åõ, ÓöÊàØ? Ê?È? Å?ÍÊÕ?, Ï?ÁòÌ- "ÓöÊàØ? Ê?È?"ÐÊ Í××øÐË ×èÌ- ÀñÑ?×èÎï ×áÄé.

ÏþÏÅÓÌÑ?ÄÒ ÊÈÕû À?Ðê ÎÛÎÖÌ- ÌÁÕÓ×â ÐßÐÜÄé. ÁçÇ?Ã? ÐßÉíÐ?ÐÈÇÞ Ð?Ïû×ßÄéÀý Ö×ÈýÅØ ÈþÀÅÑ? Ñ?Ô?ÐÜ ÐæÄé:

top

Í××ðÍÓ ÌÃÑ?ÏÅ Äû×èÌ-

HostnameLookupsÏÝ DNSÏÅ Äû×è ÀýÇÑ×â ÑÅÅù

ÎÖÖÔÔÅ 1.3 ÐÜÐ?ÏÅ HostnameLookupsÐ× ÁòÊËÀ?ÐÊ OnÐÜÏÄÄé. ÏôÓËÐË ÈÆÔÅÁòÐ?ÏÅ DNS ÀÛË?ÐÜ ÃÅÃ?Îï ×ßÉ×ÇÞ ÏôÓËÈÆÄé Ñ?Ï?ÐÜ ËÀõÄé. ÎÖÖÔÔÅ 1.3ÏÅÌ- ÐÜ ÌÃÑ?Ð× ÁòÊËÀ?ÐÜ OffÇÞ Ê?ÀöÅ×Î?Äé. ÇÞÁçÖÔÐßÐ× ÑæÌâÈ? Ø?ÍÊÖ?ÈýÐÈÇÞ Ê?Ø?×ßÇÑÈù Ï?Ç? ÇÞÁçÓÃÈ? ×ÑÇÞÁçÇ?Ñï ×ßÃ?ÐÞ, ÎÖÖÔÔÅÏÅ Ö?×äÅØ logresolve ×ÑÇÞÁçÇ?ÐË Ë÷Ïû×ßÆ?.

ÇÞÁçÓÃÈ? ÐëÎ?ÐÜ Ì-É? ÌÊÄÙÏÅ Î×ÏÅ×òÐË ÉÜÔÅÉ×ÇÞ Í×Ñ? Ë÷Ïû×ßÄÒ Ð?Ì-É?ÀÅ ÎÖÄá ÄéÈ? ÔÔ×ËÕÝÏÅÌ- ÇÞÁçÖÔÐßÐË ØÔÓÃÈ?×ßÁö ÉéÆ?Äé.

Allow from domainÐÜÃ? Deny from domain Ñ?ÍÓÎþÈ? Ë÷Ïû×áÄéÈù (Ñÿ, IP ÑæÌâÀÅ ÎÖÄá Ø?ÍÊÖ?ÈýÐÜÃ? ÅÅÈîÐÞÈýÐË Ë÷Ïû×áÄéÈù) ÊÞÅöÐÜ ÑïÊÉ-Ï? DNS ÀÛË?ÐË (Ï?ÀÛË?ÐË ×áØÔ Î×Ð×ÇÞ Ê?ÀöÅ×Î?ÄÒÑ? Ø?ÐÞ×ßÁòÐ?×è ÄéÍÓ ÀÛË?) ×èÎï ×áÄé. ÁçÇ?É×ÇÞ ÌÊÄÙÐË Ã?ÐÜÁòÐ?×è ÐÜÇÁ Ñ?ÍÓÎþÏÅÄÒ ÀÅÄÙ×ßÈù ÐÜÈ?ÄûÍÕ IP ÑæÌâÈ? Ë÷Ïû×áÄé.

<Location /server-status> ÌÍÌ× ÅþÐÈÇÞ Ñ?ÍÓÎþÐ× Ð?ÏûÉ?Ð?È? Ñ?×á×â Ì? ÐæÐÍÐË ÁòÎÿ×ßÆ?. ÐÜ ÀöÏü ÑÆÀ×ÏÅ ÈÒÄÒ ÏôÓËÏÅÈÈ DNS ÑÆØÈÈ? ×áÄé. ÄéÐÍÐÊ .htmlÀ? .cgi ÖÔÐßÈÈ DNS ÀÛË?ÐË ×ßÄÒ ÏÉÑ?Äé:

HostnameLookups off
<Files ~ "\.(html|cgi)$">
HostnameLookups on
</Files>

ÁçÇ?Ã? CGIÏÅÌ- DNSÈýÐÜ ×ÚÏô×â ËãÐÜÆ?Èù, ×ÚÏô×á Ö?Ñ? CGIÏÅÌ-ÈÈ gethostbyname Ø?ÓòÐË ×ßÅÅÇß ÀýÇÑ×èÊÌ Ì? ÐæÄé.

FollowSymLinksÏÝ SymLinksIfOwnerMatch

URL À?À?ÏÅÌ- Options FollowSymLinksÈ? Ë÷Ïû×ßÑ?ÎÚÀý Options SymLinksIfOwnerMatchÈ? Ë÷Ïû×ßÈù ÎÖÖÔÔÅÄÒ ÍÙÊÌÈÅÕ?È? ÀÛË÷×ßÁòÐ?×è ÍÓÍÊÕëØ?ÓòÐË ×áÉ? Ä? ×èÎï ×áÄé. ÖÔÐßÈýÐ× À? ÊÞÊàÈÆÄé ×áÉ?ÎÏ Ä? Ø?ÓòÐË ×áÄé. ÏÉÈ? ÅùÎþ, ÌÃÑ?ÐÜ ÄéÐÍÀ? ÀÀÀý:

DocumentRoot /www/htdocs
<Directory />
Options SymLinksIfOwnerMatch
</Directory>

/index.html URIÏÅ Äû×á ÏôÓËÐÜ ÐæÄéÀý ÀÅÑ?×ßÐê. ÁçÇ?Èù ÎÖÖÔÔÅÄÒ /www, /www/htdocs, /www/htdocs/index.html À?À?ÏÅ Äû×è lstat(2)È? Ø?Óò×áÄé. lstats ÀñÀ?È? ÔÃÍÜ×ßÑ? ÎÚÁòÆ?É?ÏÅ ÏôÓËÐÜ ÅùÎþÏÓ Æ?ÈÆÄé ÈÕÉ? ÀÀÐÊ ÐëÎ?ÐË ×áÄé. Ñ?Ò? ÍÙÊÌÈÅÕ? ÊÈÎØ ÀÛË÷È? Ï?×áÄéÈù ÄéÐÍÀ? ÀÀÐÜ ×â Ì? ÐæÄé:

DocumentRoot /www/htdocs
<Directory />
Options FollowSymLinks
</Directory>

<Directory /www/htdocs>
Options -FollowSymLinks +SymLinksIfOwnerMatch
</Directory>

ÐÜ ÀöÏü ÓæÌâ×á DocumentRoot ÀöÇÞÄÒ ÀÛË÷×ßÑ? ÎÚÄÒÄé. DocumentRoot ÉëÏÅ ÐæÄÒ ÀöÇÞÇÞ AliasÃ? RewriteRuleÐË Ë÷Ïû×á ÀöÏüÏÅÅÅ Ð?ÏÝ ÊåÍÑ×á ÌÍÌ×ÐÜ ×ÚÏô×ßÄé. ÍÙÊÌÈÅÕ? ÊÈÎØÐË ÀýÇÑ×ßÑ? ÎÚÀý ÓæÀýÐ× ÌÊÄÙÐË Î?ÐÈÇÑÈù, FollowSymLinksÈ? ÌÃÑ?×ßÀý, SymLinksIfOwnerMatchÄÒ ÐÄûÇÞ ÎØÅØÄé.

AllowOverride

URL À?À?ÏÅÌ- overridesÈ? ×óÏû×áÄéÈù (ÊÈÕû .htaccess ÖÔÐß) ÎÖÖÔÔÅÄÒ ÖÔÐßÈýÐ× À? ÊÞÊàÈÆÄé .htaccessÈ? Ï-Áö ÍÓÅÅ×áÄé. ÏÉÈ? ÅùÎþ,

DocumentRoot /www/htdocs
<Directory />
AllowOverride all
</Directory>

/index.html URIÏÅ Äû×á ÏôÓËÐÜ ÐæÄéÀý ÀÅÑ?×ßÐê. ÎÖÖÔÔÅÄÒ /.htaccess, /www/.htaccess, /www/htdocs/.htaccessÈ? Ï-ÇÑÀý ÍÓÅÅ×áÄé. ×èÀñÓ?ÐÊ ÎåÐ× Options FollowSymLinks ÀöÏüÏÝ ÊåÍÑ×ßÄé. ÓæÀýÐ× ÌÊÄÙÐË Î?ÐÈÇÑÈù ÖÔÐßÍÓÍÊÕëÏÅ Äû×èÌ- ×çË? AllowOverride NoneÐË Ë÷Ïû×áÄé.

ÃËÏû×?Ë?

ÀÅÄÙ×ßÀý Ñ?Ò? ÑÆÁíÐ× ÌÊÄÙ×òË?ÏÅÅÅ À?ÍÙÐÜ ÐæÄéÈù ÃËÏû×?Ë?ÐË ÈÇÄÒÄé. Í×Ñ?ÇÞ ×?Ë?Ð× ÐÜÅöÐÊ ÌÊÄÙÐ?×ßÊÈÄé ÐëÄé. Ì-É?È? Ê?È?Àä ×â Ì? ÐæÄé. ÄéÐÍÀ? ÀÀÐÜ ÏÝÐßÅõÔ?ÅõÈ? Ë÷Ïû×ßÄÒ ÄûÍÕ:

DirectoryIndex index

ÏßÐ?×á ÈåÇßÐË Ë÷Ïû×áÄé:

DirectoryIndex index.cgi index.pl index.shtml index.html

ÀÅÐõ Ø÷×á ÀÝÐË ÎåÏÅ ÅàÄé.

Æ×, Å?ÇÊÕôÈ?ÏÅÌ- ÖÔÐßÅùÐË Ó?ÄÒ MultiViews ÊÈÄéÄÒ, ×á ÖÔÐßÈÈ ÐàÐÈÈù ×ÚÏô×á Ñ?ÊÈÈ? Î?ÐË Ì? ÐæÄÒ type-map ÖÔÐßÐË Ñ?Ñ? ÈÈÅõÄÒ ÀÝÐÜ Ä? Ê?È?ÐË ÈýÍÙ×ßÆ?.

Ë÷ÐÜÖ?ÏÅ ÃËÏû×?Ë?ÐÜ ×ÚÏô×ßÄéÈù ×?Ë?ÐË Ð?×è Options MultiViews Ñ?ÍÓÎþÈ? Ë÷Ïû×ßÁòÊÈÄé type-map ÖÔÐßÐË ÀýÇÑ×ßÆ?. ×?Ë?ÉöÉÏÅ Äû×á ÐêÌÌ×á ÌÃÈýÀ? type-map ÖÔÐßÐË ÈÈÅõÄÒ ÉöÉÐÊ ÃËÏû×?Ë? É?Ì-È? Ò?Àý×ßÆ?.

ÈîÈ?È?ÄûÐÐ (memory-mapping)

ÏÉÈ? ÅùÎþ, server-side-includeÈ? ÓÃÈ?×ßÄÒ Åþ ÎÖÖÔÔÅ 2.0ÐÜ Ð?Ìë×â ÖÔÐßÐË ÐàÐËÆ? ÏþÏÅÓÌÑ?ÀÅ mmap(2) ÅþÐË Ñ?Ï?×áÄéÈù ÖÔÐßÐË ÈîÈ?È?ÄûÐÐ×áÄé.

Ï?Ç? ×ÓÇÅÖ?ÏÅÌ- ÈîÈ?È?ÄûÐÐÐË ÌÊÄÙÐË ×òË?×áÄé. ÁçÇ?Ã? ÈîÈ?È?ÄûÐÐÐÜ Ì-É?Ð× ÌÊÄÙÐË ÆÃÎþÖ?È?Àý ÍÙÑ?Îþ ÎØÑ?ÌÊÐË ×èÔÅÄÒ ÀöÏüÀÅ ÐæÄé:

Ð?Ð× ÑÆÀ×ÏÅ ×èÄ÷×ßÈù Ð?Ìë×ßÄÒ ÖÔÐßÐË ÈîÈ?È?ÄûÐÐ×ßÑ? ÎÚÅÅÇß EnableMMAP offÈ? Ë÷Ïû×èÎï ×áÄé. (ÑæÐ×: ÐÜ Ñ?ÍÓÎþÄÒ Å?ÇÊÕôÈ?ÊÀÇÞ Ê?Àö×â Ì? ÐæÄé.)

Sendfile

ÎÖÖÔÔÅÄÒ ÏþÏÅÓÌÑ?ÀÅ sendfile(2)ÐË Ñ?Ï?×ßÈù ÔÏÃÞ sendfileÐË Ë÷Ïû×ßÏ? -- ÏÉÈ? ÅùÎþ, Ñ?Ð? ÖÔÐßÐË Ì-ÊåÍÊ×âÆ? -- Ð?Ìë×â ÖÔÐßÐË Ñ?Ñ? ÐàÑ?ÎÚÐË Ì? ÐæÄé.

Ï?Ç? ×ÓÇÅÖ?ÏÅÌ- sendfileÐË Ë÷Ïû×ßÈù readÏÝ sendÈ? Å?ÇÞ ×â ×ÚÏôÀÅ Î?ÎþÌ- ËÅÆ?Ñ?Äé. ÁçÇ?Ã? sendfileÐË Ë÷Ïû×ßÈù Ð?Ì-É?Ð× ÎØÑ?ÌÊÐË ×èÔÅÀäÅ×ÄÒ ÀöÏüÀÅ ÐæÄé:

Ð?Ð× ÑÆÀ×ÏÅ ×èÄ÷×ßÈù ÖÔÐßÐË sendfile Ð?Ìë×ßÑ? ÎÚÅÅÇß EnableSendfile offÈ? Ë÷Ïû×èÎï ×áÄé. (ÑæÐ×: ÐÜ Ñ?ÍÓÎþÄÒ Å?ÇÊÕôÈ?ÊÀÇÞ Ê?Àö×â Ì? ÐæÄé.)

×ÑÇÞÌÌÍÊ ËÌÊ

ÎÖÖÔÔÅ 1.3 ÐÜÐ?ÏÅÄÒ MinSpareServers, MaxSpareServers, StartServers ÌÃÑ?ÐÜ È?ÅÞ Ê?ÔÅÈÆÕ? ÀñÀ?ÏÅ Õ? ÏÅ×òÐË ÉÜÓÖÄé. Ö?Ø? ÎÖÖÔÔÅÄÒ ÐëÎ?ÐË Ì-ÊåÍÊ×ßÁòÐ?×è ÓöÊà×á ÐêÍÔÌ?ÏÅ ÄéÄéÈ? Æ?ÁþÑ? "ÅÅÄî" ÁòÀ?ÐÜ ×ÚÏô×ïÄé. ÓÃÐÍ StartServersÀà ÐêÍÔÐË ÈÈÅ÷ØÔ, MinSpareServers ÌÃÑ?À?ÁþÑ? ÓÚÄ÷ ÐêÍÔÐË ×ßÃ?ÎÏ ÈÈÅùÎ?Äé. ÁçÇÅÌ- StartServers ÁòÊËÀ?ÐÜ 5ÐÞ Ì-É?ÏÅ Õ?Æ?ÐÜÎ?Ö? 100ÀÃÀÅ ÅÏÍÓÏÅ Ñ?Ìã×ßÈù ÊÞ×ßÈ? ÓÃÈ?×ßÁòÏÅ ÓöÊà×á ÐêÍÔÐË ÈÈÅùÁòÁþÑ? 95ÓÚÀÅ ÀÙÇØÄé. ÐêÑæ Ð÷ÍÓÐë×ßÑ? ÎÚÄÒ Í×Ñ? Ì-É?ÏÅÌ-ÄÒ Ðï ÅÏÐë×ßÑ?ÈÈ, 10ÊàÀ?ÈÈ Í××ð×ßÄÒ Ê?ÔÅÈÆÕ? ÀñÀ?ÄÒ ÈÕÏü Ã?ËêÀä Ã?ÏÒÄé.

ÓÚÄ÷ ×áÀà ÁäÔ?ÐÊ ÐêÍÔÐË Ë?ÇÞ ÍÓÐë×ßÈùÌ- Ì-É?ÏÅ É?È?È? ÑæÑ? ÎÚÐÈÇÑÀý Ñ?×ïÄé. ÔÔ×ËÕÝÀÅ ÐêÍÔÐË ÍÓÐë×ßÄÐÆ? ÉéËêÈù ÏôÓËÐË Ì-ÊåÍÊ×â Ì? Î?Äé. ÁçÇ?Ã? ÐÜ ÁäÔ?ÐÜ ÎÖÖÔÔÅÐ× ÓÌÀ? ÌÊÄÙÏÅ Î×ÏÅ×òÐË ÑæÎþ Ê?Àö×ßÏÄÄé. ÎÖÖÔÔÅ 1.3ÏÅÌ- ÓÚÄ÷ ×áÀà ÁäÔ?ÐÊ ÏßØ-Å×Î?Äé. ÔêÅõÄÒ ÐêÍÔ ×áÀÃÈ? ÈÈÅùÀý, 1ÓÚ Í?Àý, ÅÞÀÃÈ? ÈÈÅùÀý, 1ÓÚ Í?Àý, ÃçÀÃÈ? ÈÈÅùÀý, ÐÜÇÁ ÍÔÐÈÇÞ ÓÚÄ÷ ÐêÍÔÐË 32Àà ÈÈÅùÆ?ÁþÑ? Ñ?Ì?ÇÞ Ñ?ÀÅ×áÄé. ÐêÍÔÌ?ÀÅ MinSpareServers ÌÃÑ?ÏÅ ÄéÄéÈ?Èù Ñ?ÀÅÈ? ÑïÄì×áÄé.

ÐÜ ÀöÏü ÉíÐÐÌãÅÅÀÅ ËÅÆ?Ñ?Ì- MinSpareServers, MaxSpareServers, StartServersÈ? ÀÕÐ× ÌÃÑ?×â ×ÚÏôÀÅ Î?Äé. ÐßÓÚÏÅ ÐêÍÔÐË 4Àà ÐÜË? ËÌÊ×ßÈù ErrorLogÏÅ ÁòÇß×áÄé. ÐÜÇÁ ÏÐÇ?É?ÐÜ ÈÉÐÜ ÊÈÐÜÈù ÐÜ ÌÃÑ?ÅùÐË ÑÆÐ×ßÁö ÉéÆ?Äé. mod_status ÀñÀ?ÀÅ ÅÅÏ?ÐÜ ÅÙ ÀÝÐÜÄé.

×ÑÇÞÌÌÍÊ ËÌÊÀ? À?ÇÓ×ßÏ? MaxRequestsPerChild ÌÃÑ?ÐÊ ×ÑÇÞÌÌÍÊÈ? ÑÎÇñ×áÄé. ÁòÊËÀ?ÐÊ ÐêÍÔÄ÷ ÓÃÈ?×â ÏôÓËÌ?ÏÅ Ñ?×áÐÜ Î?ÄéÄÒ 0ÐÜÄé. ×?Ð÷ ÌÃÑ?ÐÜ 30À? ÀÀÐÜ ÈÕÏü ÐëÐÊ À?ÐÈÇÞ ÌÃÑ?Å×ÐæÄéÈù, À?ÐË Ë?Ä÷Ø? Ã?Ø? ×ÚÏôÀÅ ÐæÄé. SunOSÃ? ÏÐÇÅÅØ Solaris É?Ð?ÐË Ë÷Ïû×áÄéÈù, ÈîÈ?È?Ð?ÓòÆ?É?ÏÅ ÐÜ À?ÐË 10000 Ñ?ÅÅÇÞ ÌÃÑ?×ßÆ?.

Ï?ÀñÐ?Ñ?(keep-alive)È? Ë÷Ïû×áÄéÈù ÐêÍÔÅùÐÊ ÐÜÉÜ Ï-ÈÀ Ï?ÀñÏÅÌ- ÓïÀÅ ÏôÓËÐË ÁòÄéÈ?È÷ ÎÖÉ?ÀÝÅÅ ×ßÑ?ÎÚÁòÆ?É?ÏÅ ÀøÌã ÉéËêÄé. KeepAliveTimeoutÐ× ÁòÊËÀ? 15 ÓÚÄÒ ÐÜÇÁ ×?Ë?ÐË ÓæÌâØ-×áÄé. ÃçÖ?Ï? ÄûÏ?Ö?À? Ì-É? ÐêÏ? À?Ð× Áå×?ÐÜ ÈÒÀä ÌÃÑ?×áÄé. Ï?ÀñÐ?Ñ?Ð× ÄûÊÞÊàÐ× ÐÜÑÅÐÜ Ë÷Æ?Ñ?ÁòÆ?É?ÏÅ ÎþÆ ÀöÏüÏÅÅÅ ÐÜ À?ÐË 60 ÓÚ ÐÜË?ÐÈÇÞ ÏÓÈ?Ñ? ÈÆÆ?.

top

ÔÔÖÔÐßÍÓ ÌÃÑ?ÏÅ Äû×èÌ-

MPM ÌÁÕÓ

ÎÖÖÔÔÅ 2.xÄÒ ÄéÑïÓÃÈ?È?Åò (MPMs)ÐÜÆ?ÄÒ ÁÃÓÌ×â Ì? ÐæÄÒ ÅÏÁòØ- È?Å?ÐË Ñ?Ï?×áÄé. ÎÖÖÔÔÅÈ? ÔÔÖÔÐß×âÆ? MPMÐË ÌÁÕÓ×èÎï ×áÄé. beos, mpm_netware, mpmt_os2, mpm_winntÏÝ ÀÀÐÜ Ö?Ñ? ×ÓÇÅÖ?ÏÅÌ-ÈÈ Ë÷Ïû×â Ì? ÐæÄÒ MPMÅÅ ÐæÄé. ÐßÉíÐ?ÐÞ Ð?ÄàÍÊÇ? ÍÓÍÊÕëÐÊ Ï?Ç? MPM ÑïÏÅ ×ßÃ?È? ÌÁÕÓ×â Ì? ÐæÄé. Ð?Ì-É?Ð× ÌãÅÅÏÝ Ø?ÐõÌÊ(scalability)ÐÊ ÎþÆ MPMÐË ÌÁÕÓ×ïÃÔÏÅ ÄîÇØÄé:

ÐÜ MPMÅùÀ? ÄéÈ? MPMÏÅ Äû×è Ä? ÐêÌÌ×á Ñ?ÊÈÄÒ MPM É?Ì-È? Ò?Àý×ßÁö ÉéÆ?Äé.

È?Åò

ÈîÈ?È? Ë÷ÏûÇ?ÐÜ ÌÊÄÙÏÅÌ- ÀÅÐõ ÑïÏô×á ÏôÐÞÐÜÁòÆ?É?ÏÅ Í×Ñ?ÇÞ Ë÷Ïû×ßÑ? ÎÚÄÒ È?ÅòÐË Ñ?ÀÕ×èÊÈÐê. È?ÅòÐË DSOÇÞ ÔÔÖÔÐß×ïÄéÈù À?ÄìØ? Áç È?ÅòÏÅ Äû×á LoadModule Ñ?ÍÓÎþÈ? ÑæÌ?ÓÃÈ?×ßÈù ÅØÄé. ÁçÇÅÌ- È?ÅòÐË Ñ?ÀÕ×ßÀý Í××ð×ßÏ? Ë÷ÐÜÖ?ÀÅ È?ÅòÎ?ÐÜÅÅ Ñ?Ë?Ð?ÐÈÇÞ ÅÏÐë×ßÄÒÑ? ËüÖüÊÌ Ì? ÐæÄé.

ÉíÄûÇÞ È?ÅòÐÜ ÎÖÖÔÔÅ Í××ðÖÔÐßÏÅ Ñ?Ð?ÐÈÇÞ ÈÅÕ?Å×ÐæÄéÈù Ï?×ßÑ? ÎÚÄÒ È?ÅòÐË Ñ?ÀÕ×ßÁòÐ?×è ÎÖÖÔÔÅÈ? Ð÷ÔÔÖÔÐß×èÎï ×áÄé.

Ï?ÁòÌ- Ä÷Ï?Ø? ÎþÆ È?ÅòÐË Ë÷Ïû×ßÀý Ë÷Ïû×ßÑ? ÈËÑ? Ð×É?ÐÜ ËÁôÄé. Ñ?ÄôÐÊ Ð?Ë÷ÐÜÖ?ÈÆÄé ÄéÈ?Äé. ÁçÇ?Ã? ÎÖÈÆÅÅ ÓæÌâ×á mod_mime, mod_dir, mod_log_config È?ÅòÐÊ Ë÷Ïû×â ÀÝÐÜÄé. ÉÀÇà Ð?Ë÷ÐÜÖ?ÏÅ ÇÞÁçÖÔÐßÐÜ ×ÚÏôÎ?ÄéÈù mod_log_configÄÒ Î?ÎþÅÅ ÅØÄé. ÁçÇ?Ã? ÓïÓÅ×ßÑ? ÎÚÄÒÄé.

Atomic ÈýÇÙ

mod_cache ÀÀÐÊ È?ÅòÀ? ÓæÁé ÀÃÉïÑïÐÞ worker MPMÐÊ APRÐ× atomic APIÈ? Ë÷Ïû×áÄé. ÐÜ APIÄÒ ÀöÇ?Áî ÎÂÇÉÅõ ÅÏÁòØ-È? Ð?×â atomic ÈýÇÙÐË Ñ?À?×áÄé.

ÁòÊËÐ?ÐÈÇÞ APRÐÊ À? ÏþÏÅÓÌÑ?/CPU ×ÓÇÅÖ?ÏÅÌ- ÀÅÐõ ØÏÐÂÐ?ÐÞ ÉöÉÐË Ë÷Ïû×ßÏ? ÐÜ ÈýÇÙÐË ÁÈ×?×áÄé. ÏÉÈ? ÅùÎþ, Ï?Ç? ÓæÍÕ CPUÏÅÄÒ ×ßÅõÏ?ÎþÇÞ atomic compare-and-swap (CAS) Ï?ËúÐË ×ßÄÒ ÈýÇÙÎþÀÅ ÐæÄé. ÁçÇ?Ã? ÎþÆ ×ÓÇÅÖ?ÏÅÌ- APRÐÊ ÐÜÇÁ ÈýÇÙÎþÀÅ Î?ÄÒ ÏÐÇÅÅØ CPUÏÝ Ø?Ø?ÌÊÐË Ð?×è Ä? ÄÐÈÀ mutexÁòÉí ÁÈ×?ÐË ÁòÊËÐ?ÐÈÇÞ Ë÷Ïû×áÄé. ÐÜÇÁ ×ÓÇÅÖ?ÏÅÌ- ÎÖÖÔÔÅÈ? ÔÔÖÔÐß×âÆ? ÎÖÖÔÔÅÈ? ÓæÍÕ CPUÏÅÌ-ÈÈ Í××ð×â ÀøØÉÐÜÆ?Èù, ÎÖÖÔÔÅÈ? ÁÈÌÊ×âÆ? --enable-nonportable-atomics ÏÙÌ×ÐË Ë÷Ïû×ßÏ? Ä? Ê?È? atomic ÁÈ×?ÐË ÌÁÕÓ×â Ì? ÐæÄé:

./buildconf
./configure --with-mpm=worker --enable-nonportable-atomics=yes

--enable-nonportable-atomics ÏÙÌ×ÐÊ ÄéÐÍÀ? ÀÀÐÊ ×ÓÇÅÖ?ÏÅ ÏÅ×òÐÜ ÐæÄé:

mod_statusÏÝ ExtendedStatus On

ÎÖÖÔÔÅÈ? ÔÔÖÔÐß×âÆ? mod_statusÈ? Ö?×ä×ßÀý Í××ð×âÆ? ExtendedStatus OnÐË ÌÃÑ?×ßÈù ÎÖÖÔÔÅÄÒ ÏôÓËÐË ÉîÐËÆ?ÈÆÄé gettimeofday(2)(Ø?ÐÊ ÏþÏÅÓÌÑ?ÏÅ Å?Æ? times(2))È? ÅÞÉ? Ø?Óò×ßÀý (1.3 ÐÜÐ?ÏÅÄÒ) time(2)ÅÅ ÓïÀÅÇÞ Ï?Ç?É? Ø?Óò×áÄé. Ë?ÕÒ ÊÈÀýÌ-ÏÅ ÅÏÐëÍÓÀ?ÐÜ ×ÚÏô×ßÁò Æ?É?ÐÜÄé. ÓæË?Ð× ÌÊÄÙÐË Î?ÐÈÇÑÈù (ÁòÊËÀ?ÐÞ) ExtendedStatus offÈ? ÌÃÑ?×áÄé.

accept Ñ?ÇÔØ- - Ï?Ç? ÌâÔß

ÑæÐ×:

ÎÖÇÅ É?Ì-ÄÒ ÎÖÖÔÔÅ Ð?Ì-É? 2.0 É?Ð?ÏÅÌ- Ê?ÀöÅØ ÃËÏûÐË ÄóÀý ÐæÑ? ÎÚÄé. ÎÖÑ?ÅÅ Ð?ØÏ×á Ñ?ÊÈÀÅ ÐæÑ?ÈÈ, ÑæÐ××èÌ- Ë÷Ïû×ßÁö ÉéÆ?Äé.

Ð?ÄàÍÊ ÌâÔß APIÐ× ÄìÑÅÐË ÌÃÈý×áÄé. Ð?Ì-É?ÀÅ Ï?Ç? Ö?Ö? Ø?ÐÊ Ï?Ç? ÑæÌâÈ? ÁòÄéÈ?ÁòÐ?×è Ï?Ç? ListenÐË Ë÷Ïû×áÄéÀý ÀÅÑ?×ßÐê. Ï?ÀñÐÜ ÀÅÄÙ×áÑ? À? ÌâÔßÐË ÀÛË÷×ßÁòÐ?×è ÎÖÖÔÔÅÄÒ select(2)È? Ë÷Ïû×áÄé. select(2)ÄÒ ÌâÔßÏÅ ÁòÄéÈ?Àý ÐæÄÒ Ï?ÀñÐÜ Î?ÄÒÑ? Ø?ÐÊ ÓæÌâ×á ×áÀà ÐæÄÒÑ? ÎÛÇÑÑèÄé. ÎÖÖÔÔÅÏÅÄÒ Ï?Ç? ÐêÍÔÐÜ ÐæÀý, Í?Àý ÐæÄÒ È?Å÷ ÐêÍÔÐÊ ÅÏÍÓÏÅ Ë?ÇÞÏþ Ï?ÀñÐË ÀÛË÷×áÄé. Ï?ÇÅ ÁÈ×?ÐÊ ÄéÐÍÀ? ÊåÍÑ×ßÄé (ÐÜ ÏÉÄÒ ÔêÅõÏÅÌ- ÀÅÑ?ÏÐÑ? ÎÚÎâÄé. ÄìÑ? ÌÃÈý×ßÁòÐ?×á ÏûÅÅÇÞ ÈÈÅùÎ?Äé.):

for (;;) {
for (;;) {
fd_set accept_fds;

FD_ZERO (&accept_fds);
for (i = first_socket; i <= last_socket; ++i) {
FD_SET (i, &accept_fds);
}
rc = select (last_socket+1, &accept_fds, NULL, NULL, NULL);
if (rc < 1) continue;
new_connection = -1;
for (i = first_socket; i <= last_socket; ++i) {
if (FD_ISSET (i, &accept_fds)) {
new_connection = accept (i, NULL, NULL);
if (new_connection != -1) break;
}
}
if (new_connection != -1) break;
}
process the new_connection;
}

ÁçÇ?Ã? Ð?Ð× ÄìÌ?×á ÁÈ×?ÏÅÄÒ ÍÙÀ?×á ÀýÀ?(starvation) É?Ñ?ÀÅ ÐæÄé. Ï?Ç? ÐêÍÔÐÜ ÅÏÍÓÏÅ ÐÜ ÉíÊÉÉ?ÐË Í××ð×ßÈù, ÏôÓËÐË ÁòÄéÈ?È÷ È?ÅÞ selectÏÅÌ- ÈèÓñÄé. ÐÜÆ? ÎþÆ ÌâÔßÏÅ ÏôÓËÐÜ ×ßÃ?Æ?ÅÅ ÅùÎþÏÐÈù È?Å÷ ÐêÍÔÐÜ Á?ÎþÃ-Äé (Á?ÎþÃ?ÄÒ ÐêÍÔÐ× ÀÃÌ?ÄÒ ÏþÏÅÓÌÑ?ÏÝ ÕÈÐÜÉæÏÅ Å?Æ? ÄéÈ?Äé). ÐÜÅùÐÊ È?ÅÞ Ï?ÀñÐË accept×ßÁö ÍÓÅÅ×áÄé. ÁçÇ?Ã? (ÎÖÑ?ÅÅ ×á Ï?ÀñÈÈ ÄûÁòÑïÐÜÆ?Èù) ×á ÐêÍÔÈÈ ÌÊÀ?×ßÀý, Ã?ÈãÑ?ÄÒ acceptÏÅÌ- ÈèÓñÄé. ÁçÇ?Èù ÐÜ ÐêÍÔÅùÐÊ ×á ÌâÔßÐ× ÏôÓËÈÈÐË Ì-ÊåÍÊ×ßÅÅÇß É-Ï?Ì-, Áç ÌâÔßÐÈÇÞ Ë?ÇÞÏþ ÏôÓËÐÜ ÓöÊàØ? ÅùÎþÏÝÌ- È?Å÷ ÐêÍÔÐË Á?ÏÿÆ?ÁþÑ? Ñ?Ñ?×èÐæÄé. ÐÜÇÁ ÀýÀ? É?Ñ?ÄÒ PR#467ÏÅ ÓÃÐÍ ÊÈÀýÅ×Î?Äé. ÓæÌâ×á ÅÞÀÅÑ? ×èÀñÓ?ÐÜ ÐæÄé.

×áÀÅÑ?ÄÒ ÌâÔßÐË ÄûÁò×ßÑ? ÎÚÅÅÇß (non-blocking) ÈÈÅõÄÒ ÉöÉÐÜÄé. ÐÜ ÀöÏü ÐêÍÔÐÜ acceptÈ? ×èÅÅ ÈèÓïÑ? ÎÚÀý, ÑÿÍÓ Ñ?×ð×â Ì? ÐæÄé. ÁçÇ?Ã? CPU ÍÓÀ?ÐË ÃÆÊå×áÄé. selectÏÅÌ- Í?ÄÒ ÐêÍÔÐÜ 10Àà ÐæÀý, Ë?ÇÞ Ï?ÀñÐÜ ×áÀà ÅùÎþÏäÄéÀý ÀÅÑ?×ßÐê. ÁçÇ?Èù ÐÜ ÐêÍÔÑï 9ÀÃÄÒ Á?ÎþÃ?Ì- Ï?ÀñÐË accept×ßÁö ÍÓÅÅ×ßÀý Í×Öà×ßÈù ÎÖÉ? ÐßÅÅ ×ßÑ? ÎÚÀý ÄéÍÓ selectÈ? ÉíÊÉ×áÄé. ÄéÍÓ selectÇÞ ÅÉÎÖÏÓ Æ?ÁþÑ? ÎþÆ ÐêÍÔÅÅ ÄéÈ? ÌâÔßÏÅ ÅùÎþÏÒ ÏôÓËÐË Ì-ÊåÍÊ×ßÑ? ÎÚÄÒÄé. (ÄéÑï×ÑÇÞÌÌÌ- ÔÔ×ËÕÝÏÅÌ-) Í?ÄÒ ÐêÍÔ ÀÃÌ?ÈÈÕ- CPU ÀÃÌ?ÀÅ ÐæÄÒ ÅõÉ? ÀöÏüÀÅ ÎÖÄßÆ?Èù ÐÜ ×èÀñÓ?ÐÊ ÊÀÇÞ ÑÑÎÖÊÈÐÜÑ? ÎÚÄÒÄé.

ÄéÈ? ÉöÉÐÊ ÎÖÖÔÔÅÀÅ Ë÷Ïû×ßÄÒ ÉöÉÐÈÇÞ ÃËÊÞ ÉíÊÉÉ?ÏÅ ×á ÐêÍÔÈÈÐË ÅùÏ?ÊÈÃÍÄé. ÉíÊÉÉ?ÐÊ ÄéÐÍÀ? ÀÀÄé (Ò?ÐÜÈ? À-ÑÆ×ïÐÍ):

for (;;) {
accept_mutex_on ();
for (;;) {
fd_set accept_fds;

FD_ZERO (&accept_fds);
for (i = first_socket; i <= last_socket; ++i) {
FD_SET (i, &accept_fds);
}
rc = select (last_socket+1, &accept_fds, NULL, NULL, NULL);
if (rc < 1) continue;
new_connection = -1;
for (i = first_socket; i <= last_socket; ++i) {
if (FD_ISSET (i, &accept_fds)) {
new_connection = accept (i, NULL, NULL);
if (new_connection != -1) break;
}
}
if (new_connection != -1) break;
}
accept_mutex_off ();
process the new_connection;
}

accept_mutex_onÀ? accept_mutex_off ×äÌ?ÄÒ mutex ÌÌÈÆÖ?ÎþÈ? ÁÈ×?×áÄé. ×áÉ?ÏÅ ÏÐÑ? ×á ÐêÍÔÈÈÐÜ mutexÈ? ÀÅÑ? Ì? ÐæÄé. mutexÈ? ÁÈ×?×ßÄÒ ÉöÉÐÊ Ï?Ç?ÀÅÑ?ÐÜÄé. ÁÈ×? ÉöÉÐÊ (1.3 ÐÜÐ?) src/conf.hÃ? (1.3À? Áç ÐÜØÔ) src/include/ap_config.hÏÅ Ñ?Ð×Å×ÐæÄé. ÎþÆ ÎÖÕÀÕèÓÔÄÒ ÐñÁí(locking) ÉöÉÐË ÌÁÕÓ×ßÑ? ÎÚÁòÆ?É?ÏÅ, ÐÜÇÁ ÎÖÕÀÕèÓÔÏÅÌ- Ï?Ç? Listen Ñ?ÍÓÎþÈ? Ë÷Ïû×ßÈù Ð?×ø×ßÄé.

Í××ðÍÓ AcceptMutex Ñ?ÍÓÎþÈ? Ë÷Ïû×ßÏ? mutex ÁÈ×?ÐË Ê?Àö×â Ì? ÐæÄé.

AcceptMutex flock

ÐÜ ÉöÉÐÊ ÐñÁíÖÔÐßÐË ÐñÁçÁòÐ?×è flock(2) ÍÓÍÊÕëØ?ÓòÐË Ë÷Ïû×áÄé (ÐñÁíÖÔÐß Ð?ÔÅÄÒ LockFile Ñ?ÍÓÎþÇÞ Ñ?Ñ?).

AcceptMutex fcntl

ÐÜ ÉöÉÐÊ ÐñÁíÖÔÐßÐË ÐñÁçÁòÐ?×è fcntl(2) ÍÓÍÊÕëØ?ÓòÐË Ë÷Ïû×áÄé (ÐñÁíÖÔÐß Ð?ÔÅÄÒ LockFile Ñ?ÍÓÎþÇÞ Ñ?Ñ?).

AcceptMutex sysvsem

(1.3À? Áç ÐÜØÔ) ÐÜ ÉöÉÐË SysVÍÔ ÌÌÈÆÖ?ÎþÈ? Ë÷Ïû×ßÏ? mutexÈ? ÁÈ×?×áÄé. Êâ×ðØ?ÅÅ SysVÍÔ ÌÌÈÆÖ?ÎþÄÒ Ã?Ëë ÊÞÐëÏûÐÜ ÐæÄé. ×ßÃ?ÄÒ ÎÖÖÔÔÅÀÅ ÌÌÈÆÖ?ÎþÈ? Ñ?È?×ßÑ? ÎÚÀý ÑçÐË Ì? ÐæÄÒ ÑÅÐÜÄé (ipcs(8) manpage Ò?Àý). ÄéÈ? ×ßÃ?ÄÒ Ð?Ì-É?ÏÝ ÅÏÐß×á uidÇÞ Í××ð×ßÄÒ CGIÀÅ (Ñÿ, suexecÃ? cgiwrapperÈ? Ë÷Ïû×ßÑ?ÎÚÄÒ ×á È?Å÷ CGI) ÌÌÈÆÖ?Îþ APIÈ? Ë÷Ïû×ßÏ? Ì-ÊåÍÊÀÕÊÞÀ?ÀíÐË ×â Ì? ÐæÄÒ ÑÅÐÜÄé. ÐÜÇÁ ÐÜÐ?Æ?É?ÏÅ IRIXÈ? Ñ?Ïì×á ÎÖÕÀÕèÓÔÏÅÌ- ÐÜ ÉöÉÐË Ë÷Ïû×ßÑ? ÎÚÄÒÄé (ÄûÊÞÊàÐ× IRIX ÔÔ×ËÕÝÏÅÌ- ÎåÐ× ÅÞ ÉöÉÐÊ Ñ?Ã?ÔÅÀä É?ÀÜÄé).

AcceptMutex pthread

(1.3À? Áç ÐÜØÔ) ÐÜ ÉöÉÐÊ POSIX mutexÈ? Ë÷Ïû×ßÁòÆ?É?ÏÅ POSIX ÎÂÇÉÅõ ÁäÎðÐË ÏßÐ?Ø? ÁÈ×?×á ÎÖÕÀÕèÓÔÆ?Èù È?ÅÞ Ë÷ÏûÀÅÄÙ×ßÑ?ÈÈ, (2.5 ÐÜØÔ) SolarisÏÅÌ-ÈÈ ÁçÀÝÅÅ Ö?Ñ? ÁÈÌÊÏÅÌ-ÈÈ ÅÏÐë×ßÄÒ Åý×ßÄé. ÐÜ ÉöÉÐË ÍÓÅÅ×èÊËÄéÈù Ì-É?ÀÅ ÈèÓ÷Ì- ÐÐÄôÐË ÎØ×ßÄÒÑ? ËüÖüÊÑÎï ×áÄé. Ñ?Ð? ÃËÏûÈÈ Ì-ÊåÍÊ×ßÄÒ Ì-É?ÄÒ Ðï ÅÏÐë×ßÄÒ ÀÝ ÀÀÄé.

AcceptMutex posixsem

(2.0À? Áç ÐÜØÔ) ÐÜ ÉöÉÐÊ POSIX ÌÌÈÆÖ?ÎþÈ? Ë÷Ïû×áÄé. mutexÈ? ÀÅÑ? ×ÑÇÞÌÌÍÊÐ× ÎÂÇÉÅõÀÅ ÑçÄÒÄéÈù(segfault) ÌÌÈÆÖ?Îþ ÌâÐ?Á×ÐÜ ØÈÊÉÅ×Ñ? ÎÚÎÖÌ- Ð?Ì-É?ÀÅ ÈèÓñÄé.

ÍÓÍÊÕëÏÅ Ð? ÈåÇßÏÅ Î?ÄÒ Ñ?ÇÔØ-(serialization) ÉöÉÐÜ ÐæÄéÈù Áç ÉöÉÐË Ë÷Ïû×ßÄÒ ÔêÅõÈ? APRÏÅ ÓïÀÅ×â ÀÅÔÅÀÅ ÐæÄé.

ÀýÇÑÄÒ ×èÊÓÑ?ÈÈ ÁÈ×?×ßÑ?ÎÚÐÊ ÄéÈ? ÉöÉÐÊ ÊÞÊàÐ?ÐÈÇÞ ÉíÊÉÉ?ÐË Ñ?ÇÔØ-×ßÄÒ ÉöÉÐÜÄé. Ñÿ, ×ÑÇÞÌÌÌ-È? ÈþÀÃÈÈ ÅùÏ?ÊÈÃËÄÒ ÀÝÐÜÄé. ÐÜ ÉöÉÐÊ Ï?Ç? ÐêÍÔÐË ÅÏÍÓÏÅ Í××ð×â Ì? ÐæÎþÌ- Ñ?ÇÔØ-Æ?É?ÏÅ Ð?ÓÌ ÄûÏ?Ö?ÐË ØÀÏû×ßÑ? È?×ßÄÒ ÄéÑï×ÑÇÞÌÌÌ- ÔÔ×ËÕÝÏÅÌ-ÈÈ À?ÍÙÐË ÀÅÑ?ÊÌ Ì? ÐæÄé. ÎåÐÈÇÞ ËüÖüÊÌ ÊÞÊàÐÜÑ?ÈÈ, ÈÕÏü ÊÄÇÔØ-ÅØ Ð?Ì-É?ÀÅ Ø÷×ßÑ? ÎÚÎÖÌ- ÏüÌÁÌ?Ð?ÀÅ ÃÇÄé.

ÓæË?Ð× ÌÊÄÙÐË Î?ÁòÐ?×èÌ-ÄÒ Ï?Ç? Listen É?ÐË Ë÷Ïû×ßÑ? ÎÚÄÒ ÀÝÐÜ ÐÜË?Ð?ÐÜÄé. ÁçÇ?Ã? ÀøÌã ÌÃÈý×áÄé.

accept Ñ?ÇÔØ- - ÌâÔß ×áÀÃ

ÎåÐ× ÌÃÈýÐÊ ÄéÑïÌâÔß Ì-É?ÏÅÄÒ ÑÑÑ?ÈÈ, ÌâÔßÐÜ ×áÀÃÐÞ Ì-É?ÄÒ ÎþÆÂÀÅ? Ï?ÀñÐÜ ÅÅÒ?×âÆ?ÁþÑ? È?Å÷ ÐêÍÔÐÜ accept(2)ÏÅÌ- ÈèÓ÷ÐæÁòÆ?É?ÏÅ ÐÜÇàË? ÀÀÐÊ É?Ñ?ÀÅ ÉïË×ßÑ? ÎÚÀý, ÀýÀ? É?Ñ?ÅÅ Î?Äé. ÁçÇ?Ã? Í×Ñ?ÇÞÄÒ ÎåÏÅÌ- ÈË×á ÄûÁò×ßÑ? ÎÚÄÒ (non-blocking) ÉöÉÏÅÌ- ÉïË×ßÄÒ "À?ØÈÐ?(spinning)" ×?Ë?ÐË À?ÓïÀý ÐæÄé. ÄûÊÞÊàÐ× TCP ÍÊÕÓÐÊ Ï?ÀñÐÜ ÅÅÒ?×ßÈù ÔÏÃÞÐÜ acceptÏÅÌ- ÈèÓ÷ÐæÄÒ È?Å÷ ÐêÍÔÐË Á?ÏüÅÅÇß ÁÈ×?Å×ÐæÄé. ×ÑÇÞÌÌÍÊÑï ×áÀÃÀÅ Ï?ÀñÐË Î?Àý Ë÷ÏûÐêÏÅÏ?ÐÈÇÞ ÅÉÎÖÀÅÀý, Ã?ÈãÑ?ÄÒ ÔÏÃÞÏÅÌ- À?ØÈÐ?×ßÏ? Ï?ÀñÐÜ Î?ÐÍÐË ÉïÀï×ßÈù ÄéÍÓ ÐñÐË ÐìÄé. Ë÷ÏûÐêÏÅÏ? ÔêÅõÏÅÌ-ÄÒ ÐÜÇÁ À?ØÈÐ?ÐË ÎÛ Ì? Î?Ñ?ÈÈ, ÊàÈýØ? ÑÈÐ÷×áÄé. ÁçÇÅÌ- ÄéÑïÌâÔßÐ× ÄûÁò×ßÑ? ÎÚÄÒ ÉöÉÀ? ÅÏÐß×ßÀä ÊÞ×ßÈ? Ã?ÐÜÄÒ Êâ×ÚÏô×á ×ðÅÏÐÜ ÐßÎþÃ-Äé.

ÁçÇÅÌ- ÏüÈ?ÄÒ Ï?Ç? ÎÖÕÀÕèÓÔÏÅÌ- ÌâÔßÐÜ ×áÀÃÐÞ ÀöÏüÏÅÅÅ Ñ?ÇÔØ-×ßÈù Ä? "Ðï" ÅÏÐë×äÐË ÉïÀï×ïÄé. ÁçÇÅÌ- ÀÕÐ× ÄûÊÞÊàÐ× ÀöÏü ÁòÊËÐ?ÐÈÇÞ Ñ?ÇÔØ-È? Ë÷Ïû×áÄé. È?Ä?ÍÊÏÅÌ- (ÔÏÃÞ 2.0.30, 128Mb ÈîÈ?È?ÏÅ ÅðÎ? Pentium pro) Í××ø×á ÀñÀ? ÌâÔß ×áÀÃÈ? Ñ?ÇÔØ-×ßÈù ×ßÑ? ÎÚÐÊ ÀöÏüÏÅ Êå×è ÓÚÄ÷ ÏôÓËÐÜ 3% ÉÜÈÈ ÑéÎþÅùÎ?Äé. ÁçÇ?Ã? Ñ?ÇÔØ-È? ×ßÑ? ÎÚÐÊ ÀöÏü ÏôÓËÄ÷ 100ms Ñ?Ï?ÐÜ ÉïË×ïÄé. ÐÜ Ñ?Ï?ÐÊ ÎÖÈÆÅÅ LANÏÅÌ- ÉïË×ßÄÒ Áô Ï?ÀñÌÁÆ?É?Ðß ÀÝÐÜÄé. ÌâÔßÐÜ ×áÀÃÐÞ ÀöÏü Ñ?ÇÔØ-È? Ë÷Ïû×ßÑ? ÎÚÐÈÇÑÈù SINGLE_LISTEN_UNSERIALIZED_ACCEPTÈ? Ñ?Ð××áÄé.

Close Ñ?Ï?(lingering)

draft-ietf-http-connection-00.txt 8ÐÏÅÌ- ÌÃÈý×ßÅýÐÜ ÎØÑ?Ð?ÐÞ Ð?Ì-É?ÀÅ Å×ÇÑÈù, ÕûÍÕÐ× Î÷ Éö×òÐË ÅÆÈÃÐ?ÐÈÇÞ ÄíÐË Ì? ÐæÎþÎï ×áÄé (TCP Ï?ÀñÐÊ ÍæÉö×òÐÜÀý, Éö×òÐÊ Ì-ÇÞ ÅÆÈÃÐ?ÐÜÄé). ÐÜÑÅÐË ÄéÈ? Ì-É?ÏÅÌ-ÄÒ ÐêÑæ À?À?×ßÑ?ÈÈ, ÎÖÖÔÔÅÄÒ 1.2ÊÞÕÝ Ñ?Ø?Ø? ÁÈ×?×èÏäÄé.

ÐÜ ÁòÄÙÐË ÊÞÑæÐ××ßÀä ÎÖÖÔÔÅÏÅ ÓïÀÅ×ïÐËÆ? Ï?Ç? Ð?ÄàÍÊ É?Ð?ÏÅÌ- ÈÉÐÊ É?Ñ?ÀÅ ÉïË×ïÄé. TCP ÁäÎðÐÊ FIN_WAIT_2ÏÅ ÕÈÐãÎÖÏ?ÐÜ ÐæÄéÀý Ñ?×ßÑ? ÎÚÎâÑ?ÈÈ, ÁíÑ?×ßÑ?ÅÅ ÎÚÎâÄé. ÕÈÐãÎÖÏ?ÐÜ Î?ÄÒ ÍÓÍÊÕëÏÅÌ- ÎÖÖÔÔÅ 1.2ÄÒ ÈÉÐÊ ÌâÔßÐË ÏÅÏ?Ø? FIN_WAIT_2 Ë?ÕÒÇÞ ÈÈÅùÎ?Äé. ÈÉÐÊ ÀöÏü ÐÜ É?Ñ?ÄÒ Ñ?ÐëË÷ÀÅ Ñ?À?×ßÄÒ ÓæÍÕ TCP/IP ÖàÔÅÈ? Ð?Ïû×ßÏ? ×èÀñ×â Ì? ÐæÄé. ÁçÇ?Ã? Ñ?ÐëË÷ÀÅ ÖàÔÅÈ? Éï×?×ßÑ? ÎÚÄÒ ÀöÏüÀÅ (Ñÿ, SunOS4 -- ÌâÍÊ Æ?ÐÜÌÁÍÊÀÅ ÐæÄÒ Ë÷Æ?ÐÊ Ñ?Ñ? ÖàÔÅ×â Ì? ÐæÑ?ÈÈ) ÐæÁòÆ?É?ÏÅ ÐÜ ÁòÄÙÐË Ë÷Ïû×ßÑ? ÎÚÁòÇÞ ÀñÑ?×ïÄé.

ÉöÉÐÊ ÅÞÀÅÑ?Äé. ×ßÃ?ÄÒ ÌâÔß ÏÙÌ× SO_LINGERÈ? Ë÷Ïû×ßÄÒ ÉöÉÐÜÄé. ÁçÇ?Ã? Êâ×ðØ?ÅÅ ÄûÊÞÊàÐ× TCP/IP ÍÊÕÓÐÊ ÐÜ ÏÙÌ×ÐË ÏÓÉéÇÞ ÁÈ×?×ßÑ? ÎÚÎâÄé. ÏÓÉéÇÞ ÁÈ×?×á ÍÊÕÓÏÅÌ- ÑÆÒ?ÅÅ (Ñÿ, È?Ä?ÍÊ 2.0.31) ÐÜ ÉöÉÐÊ ÄéÐÍ ÉöÉÊÈÄé Ä? cpuÈ? ÐòÎÖÈäÄÒÄé.

ÎÖÖÔÔÅÄÒ ÊÈÕû (http_main.cÏÅ ÐæÄÒ) lingering_closeÆ?ÄÒ ×äÌ?È? Ë÷Ïû×áÄé. ÐÜ ×äÌ?ÄÒ ÄûÓö ÄéÐÍÀ? ÀÀÄé:

void lingering_close (int s)
{
char junk_buffer[2048];

/* shutdown the sending side */
shutdown (s, 1);

signal (SIGALRM, lingering_death);
alarm (30);

for (;;) {
select (s for reading, 2 second timeout);
if (error) break;
if (s is ready for reading) {
if (read (s, junk_buffer, sizeof (junk_buffer)) <= 0) {
break;
}
/* just toss away whatever is here */
}
}

close (s);
}

ÐÜ ÔêÅõÄÒ Ï?ÀñÐË ÄíÐËÆ? Ä? CPUÈ? Ë÷Ïû×ßÑ?ÈÈ, ÎØÑ?Ð?ÐÞ ÁÈ×?ÐË Ð?×è ×ÚÏô×ßÄé. HTTP/1.1ÐÜ Ä? ÃÞÈ? ÖëÑ?Àý È?Å÷ Ï?ÀñÐË Ð?Ñ?×áÄéÈù(persistent), Ï?ÀñÐË ÉîÄÒ ÊåÏûÐÊ Ï?Ç? ÏôÓËÐË ÓÃÈ?×ßÈùÌ- Ë?ÌòÅÙ ÀÝÐÜÄé. Ð?×ø×ßÀäÅÅ NO_LINGCLOSEÈ? Ñ?Ð××ßÏ? ÐÜ ÁòÄÙÐË Ë÷Ïû×ßÑ? ÎÚÐË Ì? ÐæÑ?ÈÈ, ÐÄûÇÞ Á××ßÑ? ÎÚÄÒÄé. Ö?Ø? HTTP/1.1 ÖÔÐÜ×ÑÆ?ÐÞ (Ï?Ñæ; Ï?ÀñÐ?Ñ? Ë?ÕÒÏÅÌ- ÐÐÄôÐË ÁòÄéÈ?Ñ? ÎÚÀý Ï?Ç? ÏôÓËÐË ÊÈÃËÄÒ ÁòÌ?) Ï?ÀñÐ?Ñ?ÏÅÄÒ lingering_closeÀÅ ×ÚÌ?Ð?ÐÜÄé (ÁçÈ?Àý ÖÔÐÜ×ÑÆ?ÐÞ Ï?ÀñÐÜ Ä? Ê?È?ÁòÆ?É?ÏÅ Ë÷Ïû×ßÁö ÉéÆ? ÀÝÐÜÄé).

Scoreboard ÖÔÐß

ÎÖÖÔÔÅÐ× ÊÞÈ?ÏÝ ÐêÍÔÐÊ scoreboardÆ?ÄÒ ÀÝÐË Õû×è Ì-ÇÞ ÕûÍÕ×áÄé. ÐÜË?Ð?ÐÈÇÞÄÒ scoreboardÈ? À?Ð?ÈîÈ?È?ÇÞ ÁÈ×?×èÎï ×áÄé. ÏüÈ? ÀÃÉïÐêÀÅ ×èÄ÷ ÏþÏÅÓÌÑ?ÏÅ Ñ?Áé×â Ì? ÐæÀÕÃ? Ë?ÌÌ×á Ö?ÖÓ ÀñÀ?È? ÉîÐÊ ÀöÏü ÊÈÕû À?Ð?ÈîÈ?È?È? Ë÷Ïû×ßÏ? ÁÈ×?×áÄé. Ã?ÈãÑ?ÄÒ Å?ÍÊÕ?ÏÅ ÐæÄÒ ÖÔÐßÐË Ë÷Ïû×ßÏ? ÁÈ×?×áÄé. Å?ÍÊÕ?ÏÅ ÐæÄÒ ÖÔÐßÐÊ ÄÐÈ?Àý ÍÕÇêÅÅÀÅ ÆÃÎþÑ?Äé (ÁòÄÙÅÅ Ä? Ð?Äé). src/main/conf.h ÖÔÐßÏÅÌ- Ë÷Ïû×ßÄÒ ÎÖÕÀÕèÓÔÈ? Ó?ÎÖÌ- USE_MMAP_SCOREBOARD Ø?ÐÊ USE_SHMGET_SCOREBOARDÐÞÑ? Ø?ÐÞ×áÄé. ÅáÑï ×ßÃ?È? (À?À? ×ä Ë÷Ïû×â HAVE_MMAPÐÜÃ? HAVE_SHMGETÅÅ ÀÀÐÜ) Ñ?Ð××ßÈù À?Ð?ÈîÈ?È? ÔêÅõÈ? Ë÷Ïû×áÄé. ÍÓÍÊÕëÐÜ ÄéÈ? ÑÎÇ?Ð× À?Ð?ÈîÈ?È?È? Ë÷Ïû×áÄéÈù src/main/http_main.c ÖÔÐßÐË Ì?Ñ?×ßÏ? ÎÖÖÔÔÅÏÅÌ- À?Ð?ÈîÈ?È?È? Ë÷Ïû×â Ì? ÐæÅÅÇß ØÕ(hook)ÐË ÓïÀÅ×ßÆ?. (Æ××á ÖàÔÅÈ? ÏüÈ?ÏÅÀä ÊÈÃËÑæÁö ÉéÆ?Äé.)

Ï?Ë÷Ð? ÌÃÈý: ÎÖÖÔÔÅÐ× È?Ä?ÍÊ É?Ð?ÐÊ ÎÖÖÔÔÅ 1.2 É?Ð?ÊÞÕÝ À?Ð?ÈîÈ?È?È? Ë÷Ïû×ßÁò ÍÓÐë×ïÄé. È?Ä?ÍÊÏÅÌ- ÓÚÁò ÎÖÖÔÔÅ É?Ð?ÐÜ ÄÐÈ?Àý ÍÕÇêÅÅÀÅ ÆÃÎþÑÃÁò Æ?É?ÐÜÄé.

DYNAMIC_MODULE_LIMIT

È?ÅòÐË ÅÏÐ?ÐÈÇÞ ÐàÎþÅùÐÜÑ? ÎÚÄÒÄéÈù (ÀÅÄÙ×á ÑÆÁíÐÜÆ?ÅÅ ÌÊÄÙÐË Ã?ÐÜÁòÐ?×è ÐÜ ÁëÐË ÐàÄÒÄéÈù ÎÖÈÆÅÅ È?ÅòÐË ÅÏÐ?ÐÈÇÞ ÐàÎþÅùÐÜÑ? ÎÚÐË ÀÝÐÜÄé), Ì-É?È? ÔÔÖÔÐß×âÆ? -DDYNAMIC_MODULE_LIMIT=0ÐË ÓïÀÅ×áÄé. ÁçÇ?Èù È?ÅòÐË ÅÏÐ?ÐÈÇÞ ÐàÎþÅùÐÜÁòÐ?×è ×âÄ÷×ßÄÒ ÈîÈ?È?È? ÐÎð×áÄé.

top

ÊÞÇß: ÍÓÍÊÕëØ?Óò ÁòÇßÐË ÐêÌÌØ? ÊàÌ?×ßÁò

ÄéÐÍÐÊ Solaris 8ÏÅÌ- worker MPMÐË Ë÷Ïû×á ÎÖÖÔÔÅ 2.0.38Ð× ÍÓÍÊÕëØ?Óò ÁòÇß(trace)ÐÜÄé. ÎÖÇÅ ÈýÇÙÎþÈ? Ë÷Ïû×ßÏ? ÁòÇßÐË Î?Î?Äé:

truss -l -p httpd_child_pid.

-l ÏÙÌ×ÐË Ë÷Ïû×ßÈù trussÄÒ ÍÓÍÊÕëØ?ÓòÐË ×ßÄÒ LWP (lightweight process, ÀöÇ?Áî ×ÑÇÞÌÌÍÊ--SolarisÐ× ÔÏÃÞÌ?Ñè ÎÂÇÉÅõ) IDÈ? ÀÀÐÜ ÁòÇß×áÄé.

ÄéÈ? ÍÓÍÊÕëÏÅÄÒ strace, ktrace, par ÀÀÐÊ ÍÓÍÊÕëØ?Óò ÓïÐ? ÅÅÁÈÀÅ ÐæÄé. ÀñÀ?ÄÒ ÊåÍÑ×ßÄé.

Õ?Æ?ÐÜÎ?Ö?ÄÒ Ð?Ì-É?ÏÅÀä Õ?ÁòÀÅ 10KBÐÞ Ñ?Ð? ÖÔÐßÐË ÏôÓË×áÄé. Ñ?Ð?ÐÞ ÖÔÐßÐË ÏôÓË×ßÑ? ÎÚÀÕÃ? ÃËÏû×?Ë?×ßÄÒ ÏôÓËÐË ×á ÀöÏü ÁòÇßÐÜ ÈÕÏü ÄéÈ?Äé (Æ?ÇÞÄÒ ÈÕÏü ÎÛÎÖÊÈÁò Ø?ÅùÄé).

/67:    accept(3, 0x00200BEC, 0x00200C0C, 1) (sleeping...)
/67:    accept(3, 0x00200BEC, 0x00200C0C, 1)            = 9

Ð?ÏÅÌ- Ï?ÀñÄûÁò(listener) ÎÂÇÉÅõÀÅ LWP #67ÏÅÌ- Í××ðÅÚÐË ÎÛ Ì? ÐæÄé.

accept(2) Ñ?ÇÔØ-È? Ë÷Ïû×ßÑ? ÎÚÐÍÐË ÑæÈå×ßÆ?. Ï?Ç? Ö?Ö?È? ÁòÄéÈ?Ñ?ÎÚÄÒ ÀöÏü ÐÜ ×ÓÇÅÖ?Ð× worker MPMÐÊ ÁòÊËÐ?ÐÈÇÞ Ñ?ÇÔØ-×ßÑ? ÎÚÐÊ acceptÈ? Ë÷Ïû×áÄé.
/65:    lwp_park(0x00000000, 0)                         = 0
/67:    lwp_unpark(65, 1)                               = 0

Ï?ÀñÐÊ ÉîÎÖÅùÐÜÀý(accept) Ï?ÀñÄûÁò ÎÂÇÉÅõÄÒ worker ÎÂÇÉÅõÈ? Á?Ï?Ì- ÏôÓËÐË ÓÃÈ?×ßÀä ×áÄé. ÎÖÇÅ ÁòÇßÏÅÌ- ÏôÓËÐË ÓÃÈ?×ßÄÒ worker ÎÂÇÉÅõÀÅ LWP #65ÐãÐË ÎÛ Ì? ÐæÄé.

/65:    getsockname(9, 0x00200BA4, 0x00200BC4, 1)       = 0

ÀÅË?Ø?ÍÊÖ?È? ÁÈ×?×ßÁòÐ?×è ÎÖÖÔÔÅÄÒ Ï?ÀñÐË ÉîÎÖÅùÐÞ Ñ?Ï?(local) ÌâÔß ÑæÌâÈ? ÎÛÎÖÎï ×áÄé. (ÀÅË?Ø?ÍÊÖ?È? Ë÷Ïû×ßÑ? ÎÚÀÕÃ? Listen Ñ?ÍÓÎþÏÅ ÏÝÐßÅõÔ?Åõ ÑæÌâÈ? Ë÷Ïû×ßÑ? ÎÚÐÊ ÀöÏü Åþ) ÈÉÐÊ ÀöÏü ÐÜ Ø?ÓòÐË Î?Îé Ì? ÐæÄé. ÁçÇ?Ã? ÎÖÑ? ÐÜÇÁ ÓæÐ?Ø- ÐëÎ?ÐÜ ÎØÅ×ÐæÄé.

/65:    brk(0x002170E8)                                 = 0
/65:    brk(0x002190E8)                                 = 0

brk(2) Ø?ÓòÐÊ Ø?(heap)ÏÅÌ- ÈîÈ?È?È? ×âÄ÷×áÄé. Ð?Ì-É?ÄÒ ÄûÊÞÊàÐ× ÏôÓË ÓÃÈ?ÍÓ ÐêÓÌ ÈîÈ?È? ×âÄ÷Ðê(apr_poolÀ? apr_bucket_alloc)È? Ë÷Ïû×ßÁòÆ?É?ÏÅ ÍÓÍÊÕëØ?Óò ÁòÇßÏÅÌ- ÐÜ ÍÓÍÊÕëØ?ÓòÐË ÊÈÁòÀÅ ÅõÉÀÄé. ÐÜ ÁòÇßÏÅÌ- Ð?Ì-É?ÄÒ ÍÓÐë×ßÐêÈÆÐê ÐêÓÌ ÈîÈ?È? ×âÄ÷ÐêÀÅ Ë÷Ïû×â ÈîÈ?È?ÊýÇßÐË Î?ÁòÐ?×è malloc(3)ÐË Ø?Óò×áÄé.

/65:    fcntl(9, F_GETFL, 0x00000000)                   = 2
/65:    fstat64(9, 0xFAF7B818)                          = 0
/65:    getsockopt(9, 65535, 8192, 0xFAF7B918, 0xFAF7B910, 2190656) = 0
/65:    fstat64(9, 0xFAF7B818)                          = 0
/65:    getsockopt(9, 65535, 8192, 0xFAF7B918, 0xFAF7B914, 2190656) = 0
/65:    setsockopt(9, 65535, 8192, 0xFAF7B918, 4, 2190656) = 0
/65:    fcntl(9, F_SETFL, 0x00000082)                   = 0

ÄéÐÍ worker ÎÂÇÉÅõÄÒ Õ?Æ?ÐÜÎ?Ö?Ð× Ï?Àñ(ÖÔÐßÁòÌ?Ðê 9)ÐË ÄûÁòÎØ×ä(non-blocking) Ë?ÕÒÇÞ ÉéÂëÄé. setsockopt(2)ÏÝ getsockopt(2) Ø?ÓòÐÊ SolarisÐ× libcÀÅ ÌâÔßÏÅ Äû×á fcntl(2)ÐË ÎþÆËÀä ÓÃÈ?×ßÄÒÑ? ÊÈÏ?ÑèÄé.

/65:    read(9, " G E T   / 1 0 k . h t m".., 8000)     = 97

worker ÎÂÇÉÅõÄÒ Õ?Æ?ÐÜÎ?Ö?ÇÞ ÊÞÕÝ ÏôÓËÐË ÐàÄÒÄé.

/65:    stat("/var/httpd/apache/httpd-8999/htdocs/10k.html", 0xFAF7B978) = 0
/65:    open("/var/httpd/apache/httpd-8999/htdocs/10k.html", O_RDONLY) = 10

Ð?Ì-É? ÌÃÑ?ÐÊ Options FollowSymLinksÏÝ AllowOverride NoneÐÜÄé. ÁçÇÅÌ- ÏôÓË×á ÖÔÐßÀöÇÞÐ× À? Å?ÇÊÕôÈ?ÏÅ Äû×è lstat(2)×ßÀÕÃ? .htaccess ÖÔÐßÐË ÀÛË÷×â ×ÚÏôÀÅ Î?Äé. ÖÔÐßÐË ÀÛË÷×ßÁòÐ?×è, 1) ÖÔÐßÐÜ ÐæÄÒÑ?, 2) Å?ÇÊÕôÈ?ÀÅ ÎÖÄá ÐßÉíÖÔÐßÐÞÑ?, stat(2) Ø?ÓòÈÈ ×ßÈù ÅØÄé.

/65:    sendfilev(0, 9, 0x00200F90, 2, 0xFAF7B53C)      = 10269

ÐÜ ÀöÏü Ð?Ì-É?ÄÒ ×áÉ?Ð× sendfilev(2) ÍÓÍÊÕëØ?ÓòÇÞ HTTP ÐÐÄô×üÄ?ÏÝ ÏôÓË×á ÖÔÐßÐË Ð?Ìë×â Ì? ÐæÄé. Sendfile Ñ?Ï?Ï?ÊÞÄÒ ÏþÏÅÓÌÑ?ÈÆÄé ÄéÈ?Äé. ÄéÈ? ÍÓÍÊÕëÐÜÆ?Èù sendfile(2)ÐË Ø?Óò×ßÁò Ð?ÏÅ ×üÄ?È? ÊÈÃËÁòÐ?×è write(2)Ã? writev(2) Ø?ÓòÐË ×áÄé.

/65:    write(4, " 1 2 7 . 0 . 0 . 1   -  ".., 78)      = 78

write(2) Ø?ÓòÐÊ Ñ?ÁéÇÞÁç(access log)ÏÅ ÏôÓËÐË ÁòÇß×áÄé. ÐÜ ÁòÇßÏÅ time(2) Ø?ÓòÐÜ Î?ÐÍÐË ÑæÈå×ßÆ?. ÎÖÖÔÔÅ 1.3À? ÄîÈ? ÎÖÖÔÔÅ 2.0ÐÊ ÍÓÀ?ÐË ÎÛÁòÐ?×è gettimeofday(3)È? Ë÷Ïû×áÄé. gettimeofdayÈ? ÓæÐ?Ø-×á È?Ä?ÍÊÏÝ Solaris ÀÀÐÊ ÈþÈþ ÏþÏÅÓÌÑ?ÏÅÌ-ÄÒ ÐßÉíÐ?ÐÞ ÍÓÍÊÕëØ?Óò ÊÞÄóÐÜ Î?Äé.

/65:    shutdown(9, 1, 1)                               = 0
/65:    poll(0xFAF7B980, 1, 2000)                       = 1
/65:    read(9, 0xFAF7BC20, 512)                        = 0
/65:    close(9)                                        = 0

worker ÎÂÇÉÅõÄÒ Ï?ÀñÐË Ñ?Ï?ÄíÁò(lingering close)×áÄé.

/65:    close(10)                                       = 0
/65:    lwp_park(0x00000000, 0)         (sleeping...)

ÈÆÑ?ÈÇÐÈÇÞ worker ÎÂÇÉÅõÄÒ ÉöÁí Ð?Ìë×á ÖÔÐßÐË ÄíÀý, Ï?ÀñÄûÁò(listener) ÎÂÇÉÅõÀÅ ÄéÈ? Ï?ÀñÐË ×âÄ÷×â Æ?ÁþÑ? Ñ?Ñ?×áÄé.

/67:    accept(3, 0x001FEB74, 0x001FEB94, 1) (sleeping...)

ÁçÅÏÎØ Ï?ÀñÄûÁò ÎÂÇÉÅõÄÒ Ï?ÀñÐË (È?Å÷ workerÀÅ ÐëÎ?ÑïÐÜÈù Ï?ÀñÄûÁò ÎÂÇÉÅõÈ? ÈèÓïÄÒ worker MPMÐ× ØõÈ?Ñ?Îþ ÁòÄÙÏÅ Å?Æ?) worker ÎÂÇÉÅõÏÅ ×âÄ÷×ßÐêÈÆÐê ÄéÈ? Ï?ÀñÐË ÉîÎÖÅùÐß Ì? ÐæÄé. ÐÜ ÁòÇßÏÅÄÒ Ã?ÏÐÑ? ÎÚÑ?ÈÈ, worker ÎÂÇÉÅõÀÅ ÉöÁí ÉîÐÊ Ï?ÀñÐË ÓÃÈ?×ßÄÒ ÅÏÎØ ÄéÐÍ accept(2)ÀÅ (ÏôÓËÐÜ ÈÕÏü ÈÉÐÊ ÀöÏü ×çË?) ÐßÎþÃ? Ì? ÐæÄé.

ÀÅÄÙ×á Î?Îþ:  en  |  ko  |  tr 

top

Comments

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.