]> granicus.if.org Git - apache/blob - docs/manual/misc/perf-tuning.xml.ko
Quote path/URL arguments to Proxy* directives.
[apache] / docs / manual / misc / perf-tuning.xml.ko
1 <?xml version="1.0" encoding="EUC-KR" ?>
2 <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.ko.xsl"?>
4 <!-- English Revision: 105989:1673917 (outdated) -->
5
6 <!--
7  Licensed to the Apache Software Foundation (ASF) under one or more
8  contributor license agreements.  See the NOTICE file distributed with
9  this work for additional information regarding copyright ownership.
10  The ASF licenses this file to You under the Apache License, Version 2.0
11  (the "License"); you may not use this file except in compliance with
12  the License.  You may obtain a copy of the License at
13
14      http://www.apache.org/licenses/LICENSE-2.0
15
16  Unless required by applicable law or agreed to in writing, software
17  distributed under the License is distributed on an "AS IS" BASIS,
18  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19  See the License for the specific language governing permissions and
20  limitations under the License.
21 -->
22
23 <manualpage metafile="perf-tuning.xml.meta">
24   <parentdocument href="./">Miscellaneous Documentation</parentdocument>
25
26   <title>¾ÆÆÄÄ¡ ¼º´ÉÇâ»ó</title>
27
28   <summary>
29
30     <p>¾ÆÆÄÄ¡ 2.0Àº ±â´É°ú Æ÷Æð¡´É¼º°ú ¼º´ÉÀÇ ±ÕÇüÀÌ ¸Âµµ·Ï
31     ¼³°èÇÑ ¹ü¿ë À¥¼­¹öÀÌ´Ù. º¥Ä¡¸¶Å© ±â·ÏÀ» ¼¼¿ì±âÀ§ÇØ ¼³°èÇÏÁö
32     ¾Ê¾ÒÁö¸¸ ¾ÆÆÄÄ¡ 2.0Àº ½ÇÁ¦ ¸¹Àº °æ¿ì ³ôÀº ¼º´ÉÀ» ³½´Ù.</p>
33
34     <p>¾ÆÆÄÄ¡ 1.3°ú ºñ±³Çؼ­ 2.0 ¹öÀüÀº Ã³¸®·®°ú È®À强(scalability)À»
35     ³ôÀ̱âÀ§ÇØ ¸¹Àº ÃÖÀûÈ­¸¦ Çß´Ù. ±âº»°ªÀ¸·Î ´ëºÎºÐ ÃÖÀûÈ­ÇÑ
36     °ªÀ» »ç¿ëÇÑ´Ù. ±×·¯³ª ÄÄÆÄÀϽàȤÀº ½ÇÇà½Ã ¼³Á¤ÀÌ ¼º´É¿¡
37     Å« ¿µÇâÀ» ÁÙ ¼ö ÀÖ´Ù. ÀÌ ¹®¼­´Â ¾ÆÆÄÄ¡ 2.0ÀÇ ¼º´ÉÀ» Çâ»óÇϱâÀ§ÇØ
38     ¼­¹ö °ü¸®ÀÚ°¡ ¼³Á¤ÇÒ ¼ö Àִ ¿É¼ÇÀ» ¼³¸íÇÑ´Ù. ¾î¶² ¼³Á¤
39     ¿É¼ÇÀº À¥¼­¹ö°¡ Çϵå¿þ¾î¿Í ¿î¿µÃ¼Á¦ÀÇ ±â´ÉÀ» ´õ Àß È°¿ëÇϵµ·Ï
40     Çϴ ¹Ý¸é, ¾î¶² ¿É¼ÇÀº ¼Óµµ¸¦ À§ÇØ ±â´ÉÀ» Èñ»ýÇÑ´Ù.</p>
41
42   </summary>
43
44   <section id="hardware">
45
46     <title>Çϵå¿þ¾î¿Í ¿î¿µÃ¼Á¦¿¡ ´ëÇؼ­</title>
47
48     <p>À¥¼­¹ö ¼º´É¿¡ °¡Àå Å« ¿µÇâÀ» Áִ °ÍÀº ¸Þ¸ð¸®´Ù. ½º¿ÒÀº
49     ¿äû´ç Áö¿¬½Ã°£À» »ç¿ëÀÚ°¡ "ÃæºÐÈ÷ ºü¸£´Ù°í" »ý°¢ÇÏÁö ¸øÇÏ°Ô
50     ´Ã¸®±â¶§¹®¿¡ À¥¼­¹ö´Â ½º¿ÒÀ» Çϸ頾ȵȴÙ. ´À·ÁÁö¸é »ç¿ëÀÚ´Â
51     Á¤ÁöÇÏ°í ´Ù½Ã Á¢¼ÓÇÏ¿© ºÎÇÏ°¡ °è¼Ó Áõ°¡ÇÑ´Ù. <directive
52     module="mpm_common">MaxClients</directive> Áö½Ã¾î¸¦ Á¶ÀýÇÏ¿©
53     À¥¼­¹ö°¡ ½º¿ÒÀ» ÇÒ Á¤µµ·Î ¸¹Àº ÀÚ½ÄÀ» ¸¸µéÁö¾Êµµ·Ï Çؾß
54     ÇÑ´Ù. ¹æ¹ýÀº °£´ÜÇÏ´Ù: <code>top</code>°ú °°Àº µµ±¸¿¡¼­
55     ÇÁ·Î¼¼½º ¸ñ·ÏÀ» º¸°í ¾ÆÆÄÄ¡ ÇÁ·Î¼¼½ºÀÇ Æò±Õ ¸Þ¸ð¸® »ç¿ë·®À»
56     ¾Ë¾Æ³½ÈÄ, Àüü »ç¿ë°¡´ÉÇÑ ¸Þ¸ð¸®¿¡¼­ ´Ù¸¥ ÇÁ·Î¼¼½ºµéÀÌ »ç¿ëÇÒ
57     °ø°£À» »« °ª¿¡¼­ ³ª´«´Ù.</p>
58
59     <p>³ª¸ÓÁö´Â Æò¹üÇÏ´Ù: ÃæºÐÈ÷ ºü¸¥ CPU, ÃæºÐÈ÷ ºü¸¥ ³×Æ®¿÷Ä«µå,
60     ÃæºÐÈ÷ ºü¸¥ µð½ºÅ©, ¿©±â¼­ "ÃæºÐÈ÷ ºü¸¥"Àº ½ÇÇèÀ» Çؼ­ °áÁ¤Çؾß
61     ÇÑ´Ù.</p>
62
63     <p>¿î¿µÃ¼Á¦´Â º¸Åë °¢ÀÚ ¾Ë¾Æ¼­ ¼±ÅÃÇÒ ÀÏÀÌ´Ù. ±×·¯³ª ÀϹÝÀûÀ¸·Î
64     À¯¿ëÇÏ´Ù°í ÆǸíµÈ ¸î°¡Áö ÁöħÀÌ ÀÖ´Ù:</p>
65
66     <ul>
67       <li>
68         <p>¼±ÅÃÇÑ ¿î¿µÃ¼Á¦ÀÇ ÃֽŠ¾ÈÁ¤ ¹öÀü°ú ÆÐÄ¡¸¦ ½ÇÇàÇÑ´Ù.
69         ¸¹Àº ¿î¿µÃ¼Á¦ Á¦ÀÛ»ç´Â ÃÖ±Ù TCP ½ºÅðú ¾²·¹µå ¶óÀ̺귯¸®¿¡
70         ¸¹Àº ¼ÓµµÇâ»óÀ» Çß´Ù.</p>
71       </li>
72
73       <li>
74         <p>¿î¿µÃ¼Á¦°¡ <code>sendfile(2)</code> ½Ã½ºÅÛÈ£ÃâÀ»
75         Áö¿øÇÑ´Ù¸é, À̸¦ »ç¿ëÇϱâÀ§ÇÑ ¹öÀüÀ̳ª ÆÐÄ¡¸¦ ¼³Ä¡ÇÏ¿´´ÂÁö
76         È®ÀÎÇÑ´Ù. (¿¹¸¦ µé¾î, ¸®´ª½º¶ó¸é 2.4 ÀÌ»ó ¹öÀüÀ» ¶æÇÑ´Ù.
77         Solaris 8 Ãʱ⠹öÀüÀº ÆÐÄ¡°¡ ÇÊ¿äÇÏ´Ù.) Áö¿øÇϴ ½Ã½ºÅÛÀ̶ó¸é
78         ¾ÆÆÄÄ¡ 2´Â <code>sendfile</code>À» »ç¿ëÇÏ¿© CPU¸¦ ´ú
79         »ç¿ëÇϸç Á¤Àû ÆÄÀÏÀ» ´õ »¡¸® Àü¼ÛÇÒ ¼ö ÀÕ´Ù.</p>
80       </li>
81     </ul>
82
83   </section>
84
85   <section id="runtime">
86
87     <title>½ÇÇà½Ã ¼³Á¤¿¡ ´ëÇؼ­</title>
88
89     <related>
90       <modulelist>
91         <module>mod_dir</module>
92         <module>mpm_common</module>
93         <module>mod_status</module>
94       </modulelist>
95       <directivelist>
96         <directive module="core">AllowOverride</directive>
97         <directive module="mod_dir">DirectoryIndex</directive>
98         <directive module="core">HostnameLookups</directive>
99         <directive module="core">EnableMMAP</directive>
100         <directive module="core">EnableSendfile</directive>
101         <directive module="core">KeepAliveTimeout</directive>
102         <directive module="prefork">MaxSpareServers</directive>
103         <directive module="prefork">MinSpareServers</directive>
104         <directive module="core">Options</directive>
105         <directive module="mpm_common">StartServers</directive>
106       </directivelist>
107     </related>
108
109     <section id="dns">
110
111       <title>HostnameLookups¿Í DNS¿¡ ´ëÇØ °í·ÁÇÒ Á¡µé</title>
112
113       <p>¾ÆÆÄÄ¡ 1.3 ÀÌÀü¿¡ <directive
114       module="core">HostnameLookups</directive>ÀÇ ±âº»°ªÀº
115       <code>On</code>ÀÌ¿´´Ù. ¿äûÀ» ¸¶Ä¡±âÀü¿¡ DNS °Ë»öÀÌ ³¡³ª¾ß
116       ÇϹǷΠ¿äû¸¶´Ù Áö¿¬ÀÌ »ý°å´Ù. ¾ÆÆÄÄ¡ 1.3¿¡¼­ ÀÌ ¼³Á¤ÀÇ
117       ±âº»°ªÀÌ <code>Off</code>·Î º¯°æµÇ¾ú´Ù. ·Î±×ÆÄÀÏÀÇ ÁÖ¼Ò¸¦
118       È£½ºÆ®¸íÀ¸·Î º¯È¯ÇÏ·Á¸é ¿©·¯ ·Î±×󸮠ÇÁ·Î±×·¥Áß ÇϳªÀÎ,
119       ¾ÆÆÄÄ¡¿¡ Æ÷ÇԵȠ<a
120       href="../programs/logresolve.html"><code>logresolve</code></a>
121       ÇÁ·Î±×·¥À» »ç¿ëÇ϶ó.</p>
122
123       <p>·Î±×󸮠ÀÛ¾÷ÀÌ ¼­¹ö ¼º´É¿¡ ¾Ç¿µÇâÀ» ¹ÌÄ¡¹Ç·Î ½ÇÁ¦
124       »ç¿ëÇϴ À¥¼­¹ö°¡ ¾Æ´Ñ ´Ù¸¥ ÄÄÇ»ÅÍ¿¡¼­ ·Î±×ÆÄÀÏÀ» ÈÄó¸®Çϱæ
125       ¹Ù¶õ´Ù.</p>
126
127       <p><code><directive module="mod_access">Allow</directive>
128       from domain</code>À̳ª <code><directive 
129       module="mod_access">Deny</directive> from domain</code>
130       Áö½Ã¾î¸¦ »ç¿ëÇÑ´Ù¸é (Áï, IP ÁÖ¼Ò°¡ ¾Æ´Ñ È£½ºÆ®¸íÀ̳ª µµ¸ÞÀθíÀ»
131       »ç¿ëÇÑ´Ù¸é) ºÎµæÀÌ Áߺ¹-¿ª DNS °Ë»öÀ» (¿ª°Ë»öÀ» ÇÑÈÄ ¾ÇÀÇ·Î
132       º¯°æµÇ¾ú´ÂÁö È®ÀÎÇϱâÀ§ÇØ ´Ù½Ã °Ë»ö) ÇؾߠÇÑ´Ù. ±×·¯¹Ç·Î
133       ¼º´ÉÀ» ³ôÀ̱âÀ§ÇØ ÀÌ·± Áö½Ã¾î¿¡´Â °¡´ÉÇϸé À̸§´ë½Å IP
134       ÁÖ¼Ò¸¦ »ç¿ëÇÑ´Ù.</p>
135
136       <p><code>&lt;Location /server-status&gt;</code> ¼½¼Ç µîÀ¸·Î
137       Áö½Ã¾îÀÇ Àû¿ë¹üÀ§¸¦ Á¦ÇÑÇÒ ¼ö ÀÖÀ½À» ±â¾ïÇ϶ó. ÀÌ °æ¿ì
138       Á¶°Ç¿¡ ¸Â´Â ¿äû¿¡¸¸ DNS Á¶È¸¸¦ ÇÑ´Ù. ´ÙÀ½Àº
139       <code>.html</code>°ú <code>.cgi</code> ÆÄÀϸ¸ DNS °Ë»öÀ»
140       Çϴ ¿¹Á¦´Ù:</p>
141
142       <example>
143         HostnameLookups off<br />
144         &lt;Files ~ "\.(html|cgi)$"&gt;<br />
145         <indent>
146           HostnameLookups on<br />
147         </indent>
148         &lt;/Files&gt;
149       </example>
150
151       <p>±×·¯³ª CGI¿¡¼­ DNS¸íÀÌ ÇÊ¿äÇÒ »ÓÀ̶ó¸é, ÇÊ¿äÇѠƯÁ¤
152       CGI¿¡¼­¸¸ <code>gethostbyname</code> È£ÃâÀ» Çϵµ·Ï °í·ÁÇغ¼
153       ¼ö ÀÖ´Ù.</p>
154
155     </section>
156
157     <section id="symlinks">
158
159       <title>FollowSymLinks¿Í SymLinksIfOwnerMatch</title>
160
161       <p>URL °ø°£¿¡¼­ <code>Options FollowSymLinks</code>¸¦
162       »ç¿ëÇÏÁö¾Ê°í <code>Options SymLinksIfOwnerMatch</code>¸¦
163       »ç¿ëÇϸ頾ÆÆÄÄ¡´Â ½Éº¼¸µÅ©¸¦ °Ë»çÇϱâÀ§ÇØ ½Ã½ºÅÛÈ£ÃâÀ»
164       Çѹø ´õ ÇؾߠÇÑ´Ù. ÆÄÀϸíÀÇ °¢ ºÎºÐ¸¶´Ù Çѹø¾¿ ´õ È£ÃâÀ»
165       ÇÑ´Ù. ¿¹¸¦ µé¾î, ¼³Á¤ÀÌ ´ÙÀ½°ú °°°í:</p>
166
167       <example>
168         DocumentRoot /www/htdocs<br />
169         &lt;Directory /&gt;<br />
170         <indent>
171           Options SymLinksIfOwnerMatch<br />
172         </indent>
173         &lt;/Directory&gt;
174       </example>
175
176       <p><code>/index.html</code> URI¿¡ ´ëÇÑ ¿äûÀÌ ÀÖ´Ù°í °¡Á¤ÇÏÀÚ.
177       ±×·¯¸é ¾ÆÆÄÄ¡´Â <code>/www</code>, <code>/www/htdocs</code>,
178       <code>/www/htdocs/index.html</code> °¢°¢¿¡ ´ëÇØ
179       <code>lstat(2)</code>¸¦ È£ÃâÇÑ´Ù. <code>lstats</code>
180       °á°ú¸¦ Ä³½ÌÇÏÁö ¾Ê±â¶§¹®¿¡ ¿äûÀÌ µé¾î¿Ã ¶§¸¶´Ù ¸Å¹ø °°Àº
181       ÀÛ¾÷À» ÇÑ´Ù. ÁøÂ¥ ½Éº¼¸µÅ© º¸¾È °Ë»ç¸¦ ¿øÇѴٸ頴ÙÀ½°ú
182       °°ÀÌ ÇÒ ¼ö ÀÖ´Ù:</p>
183
184       <example>
185         DocumentRoot /www/htdocs<br />
186         &lt;Directory /&gt;<br />
187         <indent>
188           Options FollowSymLinks<br />
189         </indent>
190         &lt;/Directory&gt;<br />
191         <br />
192         &lt;Directory /www/htdocs&gt;<br />
193         <indent>
194           Options -FollowSymLinks +SymLinksIfOwnerMatch<br />
195         </indent>
196         &lt;/Directory&gt;
197       </example>
198
199       <p>ÀÌ °æ¿ì ÃÖ¼ÒÇÑ <directive
200       module="core">DocumentRoot</directive> °æ·Î´Â °Ë»çÇÏÁö
201       ¾Ê´Â´Ù. DocumentRoot ¹Û¿¡ Àִ °æ·Î·Î <directive
202       module="mod_alias">Alias</directive>³ª <directive
203       module="mod_rewrite">RewriteRule</directive>À» »ç¿ëÇÑ
204       °æ¿ì¿¡µµ À§¿Í ºñ½ÁÇÑ ¼½¼ÇÀÌ ÇÊ¿äÇÏ´Ù. ½Éº¼¸µÅ© º¸¾ÈÀ»
205       °í·ÁÇÏÁö ¾Ê°í ÃÖ°íÀÇ ¼º´ÉÀ» ¾òÀ¸·Á¸é,
206       <code>FollowSymLinks</code>¸¦ ¼³Á¤ÇÏ°í,
207       <code>SymLinksIfOwnerMatch</code>´Â Àý´ë·Î ¾ÈµÈ´Ù.</p>
208
209     </section>
210
211     <section id="htaccess">
212
213       <title>AllowOverride</title>
214
215       <p>URL °ø°£¿¡¼­ overrides¸¦ Çã¿ëÇÑ´Ù¸é (º¸Åë
216       <code>.htaccess</code> ÆÄÀÏ) ¾ÆÆÄÄ¡´Â ÆÄÀϸíÀÇ °¢ ºÎºÐ¸¶´Ù
217       <code>.htaccess</code>¸¦ ¿­±æ ½ÃµµÇÑ´Ù. ¿¹¸¦ µé¾î,</p>
218
219       <example>
220         DocumentRoot /www/htdocs<br />
221         &lt;Directory /&gt;<br />
222         <indent>
223           AllowOverride all<br />
224         </indent>
225         &lt;/Directory&gt;
226       </example>
227
228       <p><code>/index.html</code> URI¿¡ ´ëÇÑ ¿äûÀÌ ÀÖ´Ù°í °¡Á¤ÇÏÀÚ.
229       ¾ÆÆÄÄ¡´Â <code>/.htaccess</code>, <code>/www/.htaccess</code>,
230       <code>/www/htdocs/.htaccess</code>¸¦ ¿­·Á°í ½ÃµµÇÑ´Ù.
231       ÇØ°áÃ¥Àº ¾ÕÀÇ <code>Options FollowSymLinks</code> °æ¿ì¿Í
232       ºñ½ÁÇÏ´Ù. ÃÖ°íÀÇ ¼º´ÉÀ» ¾òÀ¸·Á¸é ÆÄÀϽýºÅÛ¿¡ ´ëÇؼ­ Ç×»ó
233       <code>AllowOverride None</code>À» »ç¿ëÇÑ´Ù.</p>
234
235     </section>
236
237     <section id="negotiation">
238
239       <title>³»¿ëÇù»ó</title>
240
241       <p>°¡´ÉÇÏ°í ÁøÂ¥ Á¶±ÝÀÇ ¼º´ÉÇâ»ó¿¡µµ °ü½ÉÀÌ Àִٸ頳»¿ëÇù»óÀ»
242       ¸·´Â´Ù. ½ÇÁ¦·Î Çù»óÀÇ À̵æÀº ¼º´ÉÀúÇϺ¸´Ù ÀÛ´Ù. ¼­¹ö¸¦
243       ºü¸£°Ô ÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½°ú °°ÀÌ ¿ÍÀϵåÄ«µå¸¦ »ç¿ëÇϴ ´ë½Å:</p>
244
245       <example>
246         DirectoryIndex index
247       </example>
248
249       <p>¿ÏÀüÇÑ ¸ñ·ÏÀ» »ç¿ëÇÑ´Ù:</p>
250
251       <example>
252         DirectoryIndex index.cgi index.pl index.shtml index.html
253       </example>
254
255       <p>°¡Àå ÈçÇÑ °ÍÀ» ¾Õ¿¡ µÐ´Ù.</p>
256
257       <p>¶Ç, µð·ºÅ丮¿¡¼­ ÆÄÀϵéÀ» Ã£´Â <code>MultiViews</code>
258       º¸´Ù´Â, ÇÑ ÆÄÀϸ¸ ÀÐÀ¸¸é ÇÊ¿äÇÑ Á¤º¸¸¦ ¾òÀ» ¼ö ÀÖ´Â
259       <code>type-map</code> ÆÄÀÏÀ» Á÷Á¢ ¸¸µå´Â °ÍÀÌ ´õ ºü¸§À»
260       ¸í½ÉÇ϶ó.</p>
261
262     <p>»çÀÌÆ®¿¡ ³»¿ëÇù»óÀÌ ÇÊ¿äÇÏ´Ù¸é Çù»óÀ» À§ÇØ <code>Options
263     MultiViews</code> Áö½Ã¾î¸¦ »ç¿ëÇϱ⺸´Ù <code>type-map</code>
264     ÆÄÀÏÀ» °í·ÁÇ϶ó. Çù»ó¹æ¹ý¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ¼³¸í°ú
265     <code>type-map</code> ÆÄÀÏÀ» ¸¸µå´Â ¹æ¹ýÀº <a
266     href="../content-negotiation.html">³»¿ëÇù»ó</a> ¹®¼­¸¦ Âü°íÇ϶ó.</p>
267
268     </section>
269
270     <section>
271
272       <title>¸Þ¸ð¸®´ëÀÀ (memory-mapping)</title>
273
274       <p>¿¹¸¦ µé¾î, server-side-include¸¦ Ã³¸®Çϴ µî ¾ÆÆÄÄ¡
275       2.0ÀÌ Àü¼ÛÇÒ ÆÄÀÏÀ» ÀÐÀ»¶§ ¿î¿µÃ¼Á¦°¡ <code>mmap(2)</code>
276       µîÀ» Áö¿øÇÑ´Ù¸é ÆÄÀÏÀ» ¸Þ¸ð¸®´ëÀÀÇÑ´Ù.</p>
277
278       <p>¿©·¯ Ç÷¡Æû¿¡¼­ ¸Þ¸ð¸®´ëÀÀÀ» ¼º´ÉÀ» Çâ»óÇÑ´Ù. ±×·¯³ª
279       ¸Þ¸ð¸®´ëÀÀÀÌ ¼­¹öÀÇ ¼º´ÉÀ» ¶³¾îÆ®¸®°í ½ÉÁö¾î ¾ÈÁ¤¼ºÀ»
280       ÇØÄ¡´Â °æ¿ì°¡ ÀÖ´Ù:</p>
281
282       <ul>
283         <li>
284           <p>¾î¶² ¿î¿µÃ¼Á¦¿¡¼­ <code>mmap</code>Àº CPU °³¼ö°¡
285           ¸¹¾ÆÁú¶§ <code>read(2)</code> ¸¸Å­ È®À强ÀÌ ÁÁÁö ¾Ê´Ù.
286           ¿¹¸¦ µé¾î, ´ÙÁßÇÁ·Î¼¼¼­ Solaris ¼­¹ö¿¡¼­ ¾ÆÆÄÄ¡ 2.0Àº
287           Á¾Á¾ <code>mmap</code>À» »ç¿ëÇÏÁö ¾ÊÀ»¶§ ¼­¹ö°¡ Ã³¸®ÇÑ
288           ÆÄÀÏÀ» ´õ »¡¸® Àü¼ÛÇÑ´Ù.</p>
289         </li>
290
291         <li>
292           <p>NFS ¸¶¿îÆ®ÇÑ ÆÄÀϽýºÅÛ¿¡ Àִ ÆÄÀÏÀ» ¸Þ¸ð¸®´ëÀÀÇÏ´Â
293           µµÁß¿¡ ´Ù¸¥ NFS Å¬¶óÀ̾ðÆ®¿¡ Àִ ÇÁ·Î¼¼½º°¡ ÆÄÀÏÀ»
294           Áö¿ì°Å³ª ÆÄÀÏÅ©±â¸¦ ÁÙÀ̸é, À¥¼­¹ö ÇÁ·Î¼¼½º°¡ ´ÙÀ½
295           ¹ø¿¡ ¸Þ¸ð¸®´ëÀÀÇÑ ÆÄÀϳ»¿ëÀ» ÀÐÀ»¶§ bus error°¡ ¹ß»ýÇÒ
296           ¼ö ÀÖ´Ù.</p>
297         </li>
298       </ul>
299
300       <p>À§ÀÇ Á¶°Ç¿¡ ÇØ´çÇϸé Àü¼ÛÇϴ ÆÄÀÏÀ» ¸Þ¸ð¸®´ëÀÀÇÏÁö
301       ¾Êµµ·Ï <code>EnableMMAP off</code>¸¦ »ç¿ëÇؾߠÇÑ´Ù. (ÁÖÀÇ:
302       ÀÌ Áö½Ã¾î´Â µð·ºÅ丮º°·Î º¯°æÇÒ ¼ö ÀÖ´Ù.)</p>
303
304     </section>
305
306     <section>
307
308       <title>Sendfile</title>
309
310       <p>¾ÆÆÄÄ¡´Â ¿î¿µÃ¼Á¦°¡ <code>sendfile(2)</code>À» Áö¿øÇϸé
311       Ä¿³Î sendfileÀ» »ç¿ëÇÏ¿© -- ¿¹¸¦ µé¾î, Á¤Àû ÆÄÀÏÀ» ¼­ºñ½ºÇÒ¶§
312       -- Àü¼ÛÇÒ ÆÄÀÏÀ» Á÷Á¢ ÀÐÁö¾ÊÀ» ¼ö ÀÖ´Ù.</p>
313
314       <p>¿©·¯ Ç÷¡Æû¿¡¼­ sendfileÀ» »ç¿ëÇϸé read¿Í send¸¦ µû·Î
315       ÇÒ ÇÊ¿ä°¡ ¾ø¾î¼­ »¡¶óÁø´Ù. ±×·¯³ª sendfileÀ» »ç¿ëÇϸé
316       À¥¼­¹öÀÇ ¾ÈÁ¤¼ºÀ» ÇØÄ¡°ÔµÇ´Â °æ¿ì°¡ ÀÖ´Ù:</p>
317
318       <ul>
319         <li>
320           <p>sendfile Áö¿øÀÌ À߸øµÇ¾ú°í ÄÄÆÄÀÏ ½Ã½ºÅÛÀÌ ÀÌÁ¡À»
321           ¹ß°ßÇÏÁö ¸øÇϴ Ç÷¡ÆûÀÌ ÀÖ´Ù. Æ¯È÷ ´Ù¸¥ ÄÄÇ»ÅÍ¿¡¼­
322           ½ÇÇàÆÄÀÏÀ» ÄÄÆÄÀÏÇÏ¿© sendfile Áö¿øÀÌ À߸øµÈ ÄÄÇ»ÅÍ·Î
323           °¡Á®¿Â °æ¿ì¿¡ °¡´ÉÇÏ´Ù.</p>
324         </li>
325         <li>
326           <p>Ä¿³ÎÀº ÀÚ½ÅÀǠij½¬¸¦ »ç¿ëÇÏ¿© NFS·Î ¸¶¿îÆ®ÇÑ ÆÄÀÏÀ»
327           ¾ÈÁ¤ÀûÀ¸·Î ¼­ºñ½ºÇÒ ¼ö ¾ø´Â °æ¿ì°¡ ÀÖ´Ù.</p>
328         </li>
329       </ul>
330
331       <p>À§ÀÇ Á¶°Ç¿¡ ÇØ´çÇϸé ÆÄÀÏÀ» sendfile Àü¼ÛÇÏÁö ¾Êµµ·Ï
332       <code>EnableSendfile off</code>¸¦ »ç¿ëÇؾߠÇÑ´Ù. (ÁÖÀÇ:
333       ÀÌ Áö½Ã¾î´Â µð·ºÅ丮º°·Î º¯°æÇÒ ¼ö ÀÖ´Ù.)</p>
334
335     </section>
336
337     <section id="process">
338
339       <title>ÇÁ·Î¼¼½º »ý¼º</title>
340
341       <p>¾ÆÆÄÄ¡ 1.3 ÀÌÀü¿¡´Â <directive
342       module="prefork">MinSpareServers</directive>, <directive
343       module="prefork">MaxSpareServers</directive>, <directive
344       module="mpm_common">StartServers</directive> ¼³Á¤ÀÌ ¸ðµÎ
345       º¥Ä¡¸¶Å© °á°ú¿¡ Å« ¿µÇâÀ» ¹ÌÃÆ´Ù. Æ¯È÷ ¾ÆÆÄÄ¡´Â ÀÛ¾÷À»
346       ¼­ºñ½ºÇϱâÀ§ÇØ ÃæºÐÇÑ Àڽļö¿¡ ´Ù´Ù¸¦ ¶§±îÁö "µµ´Þ" ±â°£ÀÌ
347       ÇÊ¿äÇß´Ù. Ã³À½ <directive
348       module="mpm_common">StartServers</directive>°³ ÀÚ½ÄÀ»
349       ¸¸µçÈÄ, <directive module="prefork">MinSpareServers</directive>
350       ¼³Á¤°ª±îÁö ÃÊ´ç ÀÚ½ÄÀ» Çϳª¾¿ ¸¸µé¾ú´Ù. ±×·¡¼­ <directive
351       module="mpm_common">StartServers</directive> ±âº»°ªÀÌ
352       <code>5</code>ÀΠ¼­¹ö¿¡ Å¬¶óÀ̾ðÆ® 100°³°¡ µ¿½Ã¿¡ Á¢¼ÓÇϸé
353       ºÎÇϸ¦ Ã³¸®Çϱ⿡ ÃæºÐÇÑ ÀÚ½ÄÀ» ¸¸µé±â±îÁö 95ÃÊ°¡ °É·È´Ù.
354       ÀÚÁÖ Àç½ÃÀÛÇÏÁö ¾Ê´Â ½ÇÁ¦ ¼­¹ö¿¡¼­´Â Àß µ¿ÀÛÇÏÁö¸¸, 10ºÐ°£¸¸
355       ½ÇÇàÇϴ º¥Ä¡¸¶Å© °á°ú´Â ¸Å¿ì ³ª»Ú°Ô ³ª¿Â´Ù.</p>
356
357       <p>ÃÊ´ç ÇÑ°³ ±ÔÄ¢Àº ÀÚ½ÄÀ» »õ·Î ½ÃÀÛÇϸ鼭 ¼­¹ö¿¡ ¹«¸®¸¦
358       ÁÖÁö ¾ÊÀ¸·Á°í Á¤Çß´Ù. ÄÄÇ»ÅÍ°¡ ÀÚ½ÄÀ» ½ÃÀÛÇÏ´À¶ó ¹Ù»Ú¸é
359       ¿äûÀ» ¼­ºñ½ºÇÒ ¼ö ¾ø´Ù. ±×·¯³ª ÀÌ ±ÔÄ¢ÀÌ ¾ÆÆÄÄ¡ÀǠü°¨
360       ¼º´É¿¡ ¾Ç¿µÇâÀ» Á־¯°æÇÏ¿´´Ù. ¾ÆÆÄÄ¡ 1.3¿¡¼­ ÃÊ´ç ÇÑ°³
361       ±ÔÄ¢Àº ¿ÏÈ­µÇ¾ú´Ù. ÄÚµå´Â ÀڽĠÇÑ°³¸¦ ¸¸µé°í, 1ÃÊ ½¬°í,
362       µÎ°³¸¦ ¸¸µé°í, 1ÃÊ ½¬°í, ³×°³¸¦ ¸¸µé°í, ÀÌ·± ½ÄÀ¸·Î ÃÊ´ç
363       ÀÚ½ÄÀ» 32°³ ¸¸µé¶§±îÁö Áö¼ö·Î Áõ°¡ÇÑ´Ù. Àڽļö°¡ <directive
364       module="prefork">MinSpareServers</directive> ¼³Á¤¿¡ ´Ù´Ù¸£¸é
365       Áõ°¡¸¦ Áß´ÜÇÑ´Ù.</p>
366
367       <p>ÀÌ °æ¿ì ¹ÝÀÀ¼Óµµ°¡ »¡¶óÁ®¼­ <directive module="prefork"
368       >MinSpareServers</directive>, <directive module="prefork"
369       >MaxSpareServers</directive>, <directive module="mpm_common"
370       >StartServers</directive>¸¦ °ÅÀÇ ¼³Á¤ÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ÀÏÃÊ¿¡
371       ÀÚ½ÄÀ» 4°³ ÀÌ»ó »ý¼ºÇϸé <directive
372       module="core">ErrorLog</directive>¿¡ ±â·ÏÇÑ´Ù. ÀÌ·± ¿À·ù¹®ÀÌ
373       ¸¹ÀÌ º¸À̸é ÀÌ ¼³Á¤µéÀ» Á¶ÀýÇϱ根ٶõ´Ù.
374       <module>mod_status</module> °á°ú°¡ µµ¿òÀÌ µÉ °ÍÀÌ´Ù.</p>
375
376     <p>ÇÁ·Î¼¼½º »ý¼º°ú °ü·ÃÇÏ¿© <directive
377     module="mpm_common">MaxRequestsPerChild</directive> ¼³Á¤Àº
378     ÇÁ·Î¼¼½º¸¦ Á¾·áÇÑ´Ù. ±âº»°ªÀº ÀڽĴç Ã³¸®ÇÒ ¿äû¼ö¿¡ Á¦ÇÑÀÌ
379     ¾ø´Ù´Â <code>0</code>ÀÌ´Ù. ÇöÀç ¼³Á¤ÀÌ <code>30</code>°ú
380     °°ÀÌ ¸Å¿ì ÀÛÀº °ªÀ¸·Î ¼³Á¤µÇÀÖ´Ù¸é, °ªÀ» »ó´çÈ÷ ³ôÈú ÇÊ¿ä°¡
381     ÀÖ´Ù. SunOS³ª ¿À·¡µÈ Solaris ¹öÀüÀ» »ç¿ëÇÑ´Ù¸é, ¸Þ¸ð¸®À¯Ã⶧¹®¿¡
382     ÀÌ °ªÀ» <code>10000</code> Á¤µµ·Î ¼³Á¤Ç϶ó.</p>
383
384     <p>¿¬°áÀ¯Áö(keep-alive)¸¦ »ç¿ëÇÑ´Ù¸é ÀڽĵéÀº À̹̠¿­¸°
385     ¿¬°á¿¡¼­ Ãß°¡ ¿äûÀ» ±â´Ù¸®¸ç ¾Æ¹«°Íµµ ÇÏÁö¾Ê±â¶§¹®¿¡ °è¼Ó
386     ¹Ù»Ú´Ù. <directive module="core">KeepAliveTimeout</directive>ÀÇ
387     ±âº»°ª <code>15</code> Ãʴ ÀÌ·± Çö»óÀ» ÃÖ¼ÒÈ­ÇÑ´Ù. ³×Æ®¿÷
388     ´ë¿ªÆø°ú ¼­¹ö ÀÚ¿ø °£ÀÇ ±ÕÇüÀÌ ¸Â°Ô ¼³Á¤ÇÑ´Ù. <a
389     href="http://www.research.digital.com/wrl/techreports/abstracts/95.4.html">
390     ¿¬°áÀ¯ÁöÀÇ ´ëºÎºÐÀÇ ÀÌÁ¡ÀÌ »ç¶óÁö±â¶§¹®¿¡</a> ¾î¶² °æ¿ì¿¡µµ
391     ÀÌ °ªÀ» <code>60</code> ÃÊ ÀÌ»óÀ¸·Î ¿Ã¸®Áö ¸¶¶ó.</p>
392
393     </section>
394
395   </section>
396
397   <section id="compiletime">
398
399     <title>ÄÄÆÄÀϽ༳Á¤¿¡ ´ëÇؼ­</title>
400
401     <section>
402
403       <title>MPM ¼±ÅÃ</title>
404
405       <p>¾ÆÆÄÄ¡ 2.x´Â <a href="../mpm.html">´ÙÁß󸮸ðµâ</a>
406       (MPMs)À̶ó´Â ±³Ã¼ÇÒ ¼ö Àִ µ¿±âÈ­ ¸ðµ¨À» Áö¿øÇÑ´Ù. ¾ÆÆÄÄ¡¸¦
407       ÄÄÆÄÀÏÇÒ¶§ MPMÀ» ¼±ÅÃÇؾߠÇÑ´Ù. <module>beos</module>,
408       <module>mpm_netware</module>, <module>mpmt_os2</module>,
409       <module>mpm_winnt</module>¿Í °°À̠ƯÁ¤ Ç÷¡Æû¿¡¼­¸¸ »ç¿ëÇÒ
410       ¼ö Àִ MPMµµ ÀÖ´Ù. ÀϹÝÀûÀΠÀ¯´Ð½º·ù ½Ã½ºÅÛÀº ¿©·¯ MPM
411       Áß¿¡ Çϳª¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ´Ù. À¥¼­¹öÀÇ ¼Óµµ¿Í
412       È®À强(scalability)Àº ¾î¶² MPMÀ» ¼±ÅÃÇ߳Ŀ¡ ´Þ·È´Ù:</p>
413
414       <ul>
415
416         <li><module>worker</module> MPMÀº ¿©·¯ ÀڽĠÇÁ·Î¼¼½º°¡
417         °¢°¢ ¿©·¯ ¾²·¹µå¸¦ »ç¿ëÇÑ´Ù. °¢ ¾²·¹µå´Â Çѹø¿¡ ÇÑ ¿¬°áÀ»
418         ´ã´çÇÑ´Ù. ÀϹÝÀûÀ¸·Î worker´Â prefork MPM º¸´Ù ÀûÀº
419         ¸Þ¸ð¸®¸¦ »ç¿ëÇϹǷΠÅë½Å·®ÀÌ ¸¹Àº ¼­¹ö¿¡ ÀûÀýÇÏ´Ù.</li>
420
421         <li><module>prefork</module> MPMÀº ¾²·¹µå°¡ ÇÑ°³ÀΠÀÚ½Ä
422         ÇÁ·Î¼¼½º¸¦ ¿©·¯°³ »ç¿ëÇÑ´Ù. °¢ ÇÁ·Î¼¼½º´Â Çѹø¿¡ ÇÑ
423         ¿¬°áÀ» ´ã´çÇÑ´Ù. ¿©·¯ ½Ã½ºÅÛ¿¡¼­ preforkÀÇ ¼Óµµ´Â worker¿Í
424         ºñ½ÁÇÏÁö¸¸, ´õ ¸¹Àº ¸Þ¸ð¸®¸¦ »ç¿ëÇÑ´Ù. ´ÙÀ½°ú °°Àº »óȲ¿¡¼­
425         ¾²·¹µå¸¦ »ç¿ëÇÏÁö ¾Ê´Â prefork ¹æ½ÄÀÌ worker¿¡ ºñÇØ
426         ÀÌÁ¡À» °¡Áø´Ù: ¾²·¹µå¿¡ ¾ÈÀüÇÏÁö (thread-safe) ¾ÊÀº
427         Á¦»ïÀÚ°¡ ¸¸µç ¸ðµâÀ» »ç¿ëÇÒ ¼ö ÀÖ°í, ¾²·¹µå µð¹ö±ë Áö¿øÀÌ
428         ºó¾àÇÑ Ç÷¡Æû¿¡¼­ ½±°Ô µð¹ö±ëÇÒ ¼ö ÀÖ´Ù.</li>
429
430       </ul>
431
432       <p>ÀÌ MPMµé°ú ´Ù¸¥ MPM¿¡ ´ëÇØ ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â MPM <a
433       href="../mpm.html">¹®¼­</a>¸¦ Âü°íÇϱ根ٶõ´Ù.</p>
434
435     </section>
436
437     <section id="modules">
438
439         <title>¸ðµâ</title>
440
441         <p>¸Þ¸ð¸® »ç¿ë·®ÀÌ ¼º´É¿¡¼­ °¡Àå Áß¿äÇÑ ¿äÀÎÀ̱⶧¹®¿¡
442         ½ÇÁ¦·Î »ç¿ëÇÏÁö ¾Ê´Â ¸ðµâÀ» Á¦°ÅÇغ¸ÀÚ. ¸ðµâÀ» <a
443         href="../dso.html">DSO</a>·Î ÄÄÆÄÀÏÇߴٸ頰£´ÜÈ÷ ±×
444         ¸ðµâ¿¡ ´ëÇÑ <directive
445         module="mod_so">LoadModule</directive> Áö½Ã¾î¸¦ ÁÖ¼®Ã³¸®Çϸé
446         µÈ´Ù. ±×·¡¼­ ¸ðµâÀ» Á¦°ÅÇÏ°í ½ÇÇàÇÏ¿© »çÀÌÆ®°¡ ¸ðµâ¾øÀ̵µ
447         Á¤»óÀûÀ¸·Î µ¿ÀÛÇÏ´ÂÁö »ìÆ캼 ¼ö ÀÖ´Ù.</p>
448
449         <p>¹Ý´ë·Î ¸ðµâÀÌ ¾ÆÆÄÄ¡ ½ÇÇàÆÄÀÏ¿¡ Á¤ÀûÀ¸·Î ¸µÅ©µÇÀÖ´Ù¸é
450         ¿øÇÏÁö ¾Ê´Â ¸ðµâÀ» Á¦°ÅÇϱâÀ§ÇØ ¾ÆÆÄÄ¡¸¦ ÀçÄÄÆÄÀÏÇؾß
451         ÇÑ´Ù.</p>
452
453         <p>¿©±â¼­ ´ç¿¬È÷ ¾î¶² ¸ðµâÀ» »ç¿ëÇÏ°í »ç¿ëÇÏÁö ¸»Áö
454         Àǹ®ÀÌ »ý±ä´Ù. Á¤´äÀº À¥»çÀÌÆ®¸¶´Ù ´Ù¸£´Ù. ±×·¯³ª ¾Æ¸¶µµ
455         <em>ÃÖ¼ÒÇÑ</em> <module>mod_mime</module>,
456         <module>mod_dir</module>, <module>mod_log_config</module>
457         ¸ðµâÀº »ç¿ëÇÒ °ÍÀÌ´Ù. ¹°·Ð À¥»çÀÌÆ®¿¡ ·Î±×ÆÄÀÏÀÌ ÇÊ¿ä¾ø´Ù¸é
458         <code>mod_log_config</code>´Â ¾ø¾îµµ µÈ´Ù. ±×·¯³ª ÃßõÇÏÁö
459         ¾Ê´Â´Ù.</p>
460
461     </section>
462
463     <section>
464
465       <title>Atomic ¸í·É</title>
466
467       <p><module>mod_cache</module> °°Àº ¸ðµâ°ú ÃÖ±Ù °³¹ßÁßÀÎ
468       worker MPMÀº APRÀÇ atomic API¸¦ »ç¿ëÇÑ´Ù. ÀÌ API´Â °æ·®±Þ
469       ¾²·¹µå µ¿±âÈ­¸¦ À§ÇÒ atomic ¸í·ÉÀ» Á¦°øÇÑ´Ù.</p>
470
471       <p>±âº»ÀûÀ¸·Î APRÀº °¢ ¿î¿µÃ¼Á¦/CPU Ç÷¡Æû¿¡¼­ °¡Àå È¿À²ÀûÀÎ
472       ¹æ¹ýÀ» »ç¿ëÇÏ¿© ÀÌ ¸í·ÉÀ» ±¸ÇöÇÑ´Ù. ¿¹¸¦ µé¾î, ¿©·¯ ÃÖ½Å
473       CPU¿¡´Â Çϵå¿þ¾î·Î atomic compare-and-swap (CAS) ¿¬»êÀ»
474       Çϴ ¸í·É¾î°¡ ÀÖ´Ù. ±×·¯³ª ¾î¶² Ç÷¡Æû¿¡¼­ APRÀº ÀÌ·±
475       ¸í·É¾î°¡ ¾ø´Â ¿À·¡µÈ CPU¿Í È£È¯¼ºÀ» À§ÇØ ´õ ´À¸° mutex±â¹Ý
476       ±¸ÇöÀ» ±âº»ÀûÀ¸·Î »ç¿ëÇÑ´Ù. ÀÌ·± Ç÷¡Æû¿¡¼­ ¾ÆÆÄÄ¡¸¦
477       ÄÄÆÄÀÏÇÒ¶§ ¾ÆÆÄÄ¡¸¦ ÃֽŠCPU¿¡¼­¸¸ ½ÇÇàÇÒ °èȹÀ̶ó¸é,
478       ¾ÆÆÄÄ¡¸¦ ±¸¼ºÇÒ¶§ <code>--enable-nonportable-atomics</code>
479       ¿É¼ÇÀ» »ç¿ëÇÏ¿© ´õ ºü¸¥ atomic ±¸ÇöÀ» ¼±ÅÃÇÒ ¼ö ÀÖ´Ù:</p>
480
481       <example>
482         ./buildconf<br />
483         ./configure --with-mpm=worker --enable-nonportable-atomics=yes
484       </example>
485
486       <p><code>--enable-nonportable-atomics</code> ¿É¼ÇÀº ´ÙÀ½°ú
487       °°Àº Ç÷¡Æû¿¡ ¿µÇâÀÌ ÀÖ´Ù:</p>
488
489       <ul>
490
491         <li>SPARC¿¡¼­ Solaris<br />
492             ±âº»ÀûÀ¸·Î APRÀº Solaris/SPARC¿¡¼­ mutex±â¹Ý atomicÀ»
493             »ç¿ëÇÑ´Ù. ±×·¯³ª ±¸¼ºÇÒ¶§
494             <code>--enable-nonportable-atomics</code>¸¦ »ç¿ëÇϸé
495             APRÀº ºü¸¥ Çϵå¿þ¾î compare-and-swapÀ» À§ÇÑ SPARC
496             v8plus ¸í·É¾î¸¦ »ç¿ëÇÑ´Ù. ÀÌ ¿É¼ÇÀ» »ç¿ëÇϸé atomic
497             ¸í·ÉÀÌ ´õ È¿À²ÀûÀÌÁö¸¸ (CPU¸¦ ´ú »ç¿ëÇÏ°í ´õ ³ôÀº
498             µ¿±âÈ­°¡ °¡´ÉÇÏ´Ù), ÄÄÆÄÀÏÇÑ ½ÇÇàÆÄÀÏÀº UltraSPARC
499             Ä¨¿¡¼­¸¸ ½ÇÇàÇÒ ¼ö ÀÖ´Ù.
500         </li>
501
502         <li>Linux on x86<br />
503             ±âº»ÀûÀ¸·Î APRÀº ¸®´ª½º¿¡¼­ mutex±â¹Ý atomicÀ»
504             »ç¿ëÇÑ´Ù. ±×·¯³ª ±¸¼ºÇÒ¶§
505             <code>--enable-nonportable-atomics</code>¸¦ »ç¿ëÇϸé
506             APRÀº ºü¸¥ Çϵå¿þ¾î compare-and-swapÀ» À§ÇÑ 486
507             ¸í·É¾î¸¦ »ç¿ëÇÑ´Ù. ´õ È¿À²ÀûÀΠatomic ¸í·ÉÀÌ °¡´ÉÇÏÁö¸¸,
508             ÄÄÆÄÀÏÇÑ ½ÇÇàÆÄÀÏÀº 486 ÀÌ»ó Ä¨¿¡¼­¸¸ (386Àº ¾ÈµÈ´Ù)
509             ½ÇÇàÇÒ ¼ö ÀÖ´Ù.
510         </li>
511
512       </ul>
513
514     </section>
515
516     <section>
517
518       <title>mod_status¿Í ExtendedStatus On</title>
519
520       <p>¾ÆÆÄÄ¡¸¦ ÄÄÆÄÀÏÇÒ¶§ <module>mod_status</module>¸¦ Æ÷ÇÔÇÏ°í
521       ½ÇÇàÇÒ¶§ <code>ExtendedStatus On</code>À» ¼³Á¤Çϸ頾ÆÆÄÄ¡´Â
522       ¿äûÀ» ¹ÞÀ»¶§¸¶´Ù <code>gettimeofday(2)</code>(ȤÀº ¿î¿µÃ¼Á¦¿¡
523       µû¶ó <code>times(2)</code>)¸¦ µÎ¹ø È£ÃâÇÏ°í (1.3 ÀÌÀü¿¡´Â)
524       <code>time(2)</code>µµ Ãß°¡·Î ¿©·¯¹ø È£ÃâÇÑ´Ù. »óÅ º¸°í¼­¿¡
525       µ¿À۽ð£ÀÌ ÇÊ¿äÇϱ⠶§¹®ÀÌ´Ù. ÃÖ»óÀÇ ¼º´ÉÀ» ¾òÀ¸·Á¸é
526       (±âº»°ªÀÎ) <code>ExtendedStatus off</code>¸¦ ¼³Á¤ÇÑ´Ù.</p>
527
528     </section>
529
530     <section>
531
532       <title>accept Á÷·ÄÈ­ - ¿©·¯ ¼ÒÄÏ</title>
533
534     <note type="warning"><title>ÁÖÀÇ:</title>
535       <p> ¾Æ·¡ ¹®¼­´Â ¾ÆÆÄÄ¡ À¥¼­¹ö 2.0 ¹öÀü¿¡¼­ º¯°æµÈ ³»¿ëÀ»
536       ´ã°í ÀÖÁö ¾Ê´Ù. ¾ÆÁ÷µµ À¯È¿ÇÑ Á¤º¸°¡ ÀÖÁö¸¸, ÁÖÀÇÇؼ­
537       »ç¿ëÇϱ根ٶõ´Ù.</p>
538     </note>
539
540       <p>À¯´Ð½º ¼ÒÄÏ APIÀÇ ´ÜÁ¡À» ¼³¸íÇÑ´Ù. À¥¼­¹ö°¡ ¿©·¯ Æ÷Æ®
541       È¤Àº ¿©·¯ ÁÖ¼Ò¸¦ ±â´Ù¸®±âÀ§ÇØ ¿©·¯ <directive
542       module="mpm_common">Listen</directive>À» »ç¿ëÇÑ´Ù°í °¡Á¤ÇÏÀÚ.
543       ¿¬°áÀÌ °¡´ÉÇÑÁö °¢ ¼ÒÄÏÀ» °Ë»çÇϱâÀ§ÇØ ¾ÆÆÄÄ¡´Â
544       <code>select(2)</code>¸¦ »ç¿ëÇÑ´Ù. <code>select(2)</code>´Â
545       ¼ÒÄÏ¿¡ ±â´Ù¸®°í Àִ ¿¬°áÀÌ <em>¾ø´ÂÁö</em> È¤Àº <em>ÃÖ¼ÒÇÑ
546       ÇÑ°³</em> ÀÖ´ÂÁö ¾Ë·ÁÁØ´Ù. ¾ÆÆÄÄ¡¿¡´Â ¿©·¯ ÀÚ½ÄÀÌ ÀÖ°í,
547       ½¬°í Àִ ¸ðµç ÀÚ½ÄÀº µ¿½Ã¿¡ »õ·Î¿î ¿¬°áÀ» °Ë»çÇÑ´Ù. ¿ø·¡
548       ±¸ÇöÀº ´ÙÀ½°ú ºñ½ÁÇÏ´Ù (ÀÌ ¿¹´Â Äڵ忡¼­ °¡Á®¿ÀÁö ¾Ê¾Ò´Ù.
549       ´ÜÁö ¼³¸íÇϱâÀ§ÇÑ ¿ëµµ·Î ¸¸µé¾ú´Ù.):</p>
550
551       <example>
552         for (;;) {<br />
553         <indent>
554           for (;;) {<br />
555           <indent>
556             fd_set accept_fds;<br />
557             <br />
558             FD_ZERO (&amp;accept_fds);<br />
559             for (i = first_socket; i &lt;= last_socket; ++i) {<br />
560             <indent>
561               FD_SET (i, &amp;accept_fds);<br />
562             </indent>
563             }<br />
564             rc = select (last_socket+1, &amp;accept_fds, NULL, NULL, NULL);<br />
565             if (rc &lt; 1) continue;<br />
566             new_connection = -1;<br />
567             for (i = first_socket; i &lt;= last_socket; ++i) {<br />
568             <indent>
569               if (FD_ISSET (i, &amp;accept_fds)) {<br />
570               <indent>
571                 new_connection = accept (i, NULL, NULL);<br />
572                 if (new_connection != -1) break;<br />
573               </indent>
574               }<br />
575             </indent>
576             }<br />
577             if (new_connection != -1) break;<br />
578           </indent>
579           }<br />
580           process the new_connection;<br />
581         </indent>
582         }
583       </example>
584
585       <p>±×·¯³ª À§ÀÇ ´Ü¼øÇÑ ±¸Çö¿¡´Â ½É°¢ÇÑ °í°¥(starvation)
586       ¹®Á¦°¡ ÀÖ´Ù. ¿©·¯ ÀÚ½ÄÀÌ µ¿½Ã¿¡ ÀÌ ¹Ýº¹¹®À» ½ÇÇàÇϸé,
587       ¿äûÀ» ±â´Ù¸®¸ç ¸ðµÎ <code>select</code>¿¡¼­ ¸ØÃá´Ù. À̶§
588       ¾î¶² ¼ÒÄÏ¿¡ ¿äûÀÌ Çϳª¶óµµ µé¾î¿À¸é ¸ðµç ÀÚ½ÄÀÌ ±ú¾î³­´Ù
589       (±ú¾î³ª´Â ÀÚ½ÄÀÇ °³¼ö´Â ¿î¿µÃ¼Á¦¿Í Å¸Àֿ̹¡ µû¶ó ´Ù¸£´Ù).
590       À̵éÀº ¸ðµÎ ¿¬°áÀ» <code>accept</code>Çϱ栽õµÇÑ´Ù. ±×·¯³ª
591       (¾ÆÁ÷µµ ÇÑ ¿¬°á¸¸ ´ë±âÁßÀ̶ó¸é) ÇÑ Àڽĸ¸ ¼º°øÇÏ°í, ³ª¸ÓÁö´Â
592       <code>accept</code>¿¡¼­ <em>¸ØÃá´Ù.</em> ±×·¯¸é ÀÌ ÀڽĵéÀº
593       ÇÑ ¼ÒÄÏÀÇ ¿äû¸¸À» ¼­ºñ½ºÇϵµ·Ï ¹­¿©¼­, ±× ¼ÒÄÏÀ¸·Î »õ·Î¿î
594       ¿äûÀÌ ÃæºÐÈ÷ µé¾î¿Í¼­ ¸ðµç ÀÚ½ÄÀ» ±ú¿ï¶§±îÁö Á¤ÁöÇØÀÖ´Ù.
595       ÀÌ·± °í°¥ ¹®Á¦´Â <a
596       href="http://bugs.apache.org/index/full/467">PR#467</a>¿¡
597       Ã³À½ º¸°íµÇ¾ú´Ù. ÃÖ¼ÒÇÑ µÎ°¡Áö ÇØ°áÃ¥ÀÌ ÀÖ´Ù.</p>
598
599       <p>ÇÑ°¡Áö´Â ¼ÒÄÏÀ» ´ë±âÇÏÁö ¾Êµµ·Ï (non-blocking) ¸¸µå´Â
600       ¹æ¹ýÀÌ´Ù. ÀÌ °æ¿ì ÀÚ½ÄÀÌ <code>accept</code>¸¦ Çصµ ¸ØÃßÁö
601       ¾Ê°í, Áï½Ã ÁøÇàÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª CPU ½Ã°£À» ³¶ºñÇÑ´Ù.
602       <code>select</code>¿¡¼­ ½¬´Â ÀÚ½ÄÀÌ 10°³ ÀÖ°í, »õ·Î ¿¬°áÀÌ
603       ÇÑ°³ µé¾î¿Ô´Ù°í °¡Á¤ÇÏÀÚ. ±×·¯¸é ÀÌ ÀÚ½ÄÁß 9°³´Â ±ú¾î³ª¼­
604       ¿¬°áÀ» <code>accept</code>Çϱ栽õµÇÏ°í ½ÇÆÐÇϸ頾ƹ«
605       Àϵµ ÇÏÁö ¾Ê°í ´Ù½Ã <code>select</code>¸¦ ¹Ýº¹ÇÑ´Ù. ´Ù½Ã
606       <code>select</code>·Î µ¹¾Æ¿Ã ¶§±îÁö ¾î¶² Àڽĵµ ´Ù¸¥ ¼ÒÄÏ¿¡
607       µé¾î¿Â ¿äûÀ» ¼­ºñ½ºÇÏÁö ¾Ê´Â´Ù. (´ÙÁßÇÁ·Î¼¼¼­ ÄÄÇ»ÅÍ¿¡¼­)
608       ½¬´Â ÀڽĠ°³¼ö¸¸Å­ CPU °³¼ö°¡ Àִ µå¹® °æ¿ì°¡ ¾Æ´Ï¶ó¸é
609       ÀÌ ÇØ°áÃ¥Àº º°·Î ÁÁ¾Æº¸ÀÌÁö ¾Ê´Â´Ù.</p>
610
611       <p>´Ù¸¥ ¹æ¹ýÀº ¾ÆÆÄÄ¡°¡ »ç¿ëÇϴ ¹æ¹ýÀ¸·Î ³»ºÎ ¹Ýº¹¹®¿¡
612       ÇÑ Àڽĸ¸À» µé¿©º¸³½´Ù. ¹Ýº¹¹®Àº ´ÙÀ½°ú °°´Ù (Â÷À̸¦
613       °­Á¶ÇßÀ½):</p>
614
615       <example>
616         for (;;) {<br />
617         <indent>
618           <strong>accept_mutex_on ();</strong><br />
619           for (;;) {<br />
620           <indent>
621             fd_set accept_fds;<br />
622             <br />
623             FD_ZERO (&amp;accept_fds);<br />
624             for (i = first_socket; i &lt;= last_socket; ++i) {<br />
625             <indent>
626               FD_SET (i, &amp;accept_fds);<br />
627             </indent>
628             }<br />
629             rc = select (last_socket+1, &amp;accept_fds, NULL, NULL, NULL);<br />
630             if (rc &lt; 1) continue;<br />
631             new_connection = -1;<br />
632             for (i = first_socket; i &lt;= last_socket; ++i) {<br />
633             <indent>
634               if (FD_ISSET (i, &amp;accept_fds)) {<br />
635               <indent>
636                 new_connection = accept (i, NULL, NULL);<br />
637                 if (new_connection != -1) break;<br />
638               </indent>
639               }<br />
640             </indent>
641             }<br />
642             if (new_connection != -1) break;<br />
643           </indent>
644           }<br />
645           <strong>accept_mutex_off ();</strong><br />
646           process the new_connection;<br />
647         </indent>
648         }
649       </example>
650
651       <p><code>accept_mutex_on</code>°ú <code>accept_mutex_off</code>
652       <a id="serialize" name="serialize">ÇÔ¼ö</a>´Â mutex ¼¼¸¶Æ÷¾î¸¦
653       ±¸ÇöÇÑ´Ù. Çѹø¿¡ ¿ÀÁ÷ ÇÑ Àڽĸ¸ÀÌ mutex¸¦ °¡Áú ¼ö ÀÖ´Ù.
654       mutex¸¦ ±¸ÇöÇϴ ¹æ¹ýÀº ¿©·¯°¡ÁöÀÌ´Ù. ±¸Çö ¹æ¹ýÀº (1.3
655       ÀÌÀü) <code>src/conf.h</code>³ª (1.3°ú ±× ÀÌÈÄ)
656       <code>src/include/ap_config.h</code>¿¡ Á¤ÀǵÇÀÖ´Ù. ¾î¶²
657       ¾ÆÅ°ÅØÃĴ Àá±Ý(locking) ¹æ¹ýÀ» ¼±ÅÃÇÏÁö ¾Ê±â¶§¹®¿¡, ÀÌ·±
658       ¾ÆÅ°ÅØÃÄ¿¡¼­ ¿©·¯ <directive
659       module="mpm_common">Listen</directive> Áö½Ã¾î¸¦ »ç¿ëÇϸé
660       À§ÇèÇÏ´Ù.</p>
661
662       <p>½ÇÇà½Ã <directive
663       module="mpm_common">AcceptMutex</directive> Áö½Ã¾î¸¦ »ç¿ëÇÏ¿©
664       mutex ±¸ÇöÀ» º¯°æÇÒ ¼ö ÀÖ´Ù.</p>
665
666       <dl>
667         <dt><code>AcceptMutex flock</code></dt>
668
669         <dd>
670           <p>ÀÌ ¹æ¹ýÀº Àá±ÝÆÄÀÏÀ» Àá±×±âÀ§ÇØ <code>flock(2)</code>
671           ½Ã½ºÅÛÈ£ÃâÀ» »ç¿ëÇÑ´Ù (Àá±ÝÆÄÀÏ À§Ä¡´Â <directive
672           module="mpm_common">LockFile</directive> Áö½Ã¾î·Î ÁöÁ¤).</p>
673         </dd>
674
675         <dt><code>AcceptMutex fcntl</code></dt>
676
677         <dd>
678           <p>ÀÌ ¹æ¹ýÀº Àá±ÝÆÄÀÏÀ» Àá±×±âÀ§ÇØ <code>fcntl(2)</code>
679           ½Ã½ºÅÛÈ£ÃâÀ» »ç¿ëÇÑ´Ù (Àá±ÝÆÄÀÏ À§Ä¡´Â <directive
680           module="mpm_common">LockFile</directive> Áö½Ã¾î·Î ÁöÁ¤).</p>
681         </dd>
682
683         <dt><code>AcceptMutex sysvsem</code></dt>
684
685         <dd>
686           <p>(1.3°ú ±× ÀÌÈÄ) ÀÌ ¹æ¹ýÀ» SysV½Ä ¼¼¸¶Æ÷¾î¸¦ »ç¿ëÇÏ¿©
687           mutex¸¦ ±¸ÇöÇÑ´Ù. ºÒÇàÈ÷µµ SysV½Ä ¼¼¸¶Æ÷¾î´Â ³ª»Û
688           ºÎÀÛ¿ëÀÌ ÀÖ´Ù. Çϳª´Â ¾ÆÆÄÄ¡°¡ ¼¼¸¶Æ÷¾î¸¦ Á¤¸®ÇÏÁö
689           ¾Ê°í Á×À» ¼ö Àִ Á¡ÀÌ´Ù (<code>ipcs(8)</code> manpage
690           Âü°í). ´Ù¸¥ Çϳª´Â À¥¼­¹ö¿Í µ¿ÀÏÇÑ uid·Î ½ÇÇàÇÏ´Â
691           CGI°¡ (<em>Áï,</em> <code>suexec</code>³ª
692           <code>cgiwrapper</code>¸¦ »ç¿ëÇÏÁö¾Ê´Â ÇÑ ¸ðµç CGI)
693           ¼¼¸¶Æ÷¾î API¸¦ »ç¿ëÇÏ¿© ¼­ºñ½º°ÅºÎ°ø°ÝÀ» ÇÒ ¼ö ÀÖ´Â
694           Á¡ÀÌ´Ù. ÀÌ·± ÀÌÀ¯¶§¹®¿¡ IRIX¸¦ Á¦¿ÜÇÑ ¾ÆÅ°ÅØÃÄ¿¡¼­
695           ÀÌ ¹æ¹ýÀ» »ç¿ëÇÏÁö ¾Ê´Â´Ù (´ëºÎºÐÀÇ IRIX ÄÄÇ»ÅÍ¿¡¼­
696           ¾ÕÀÇ µÎ ¹æ¹ýÀº Áö³ªÄ¡°Ô ¹ö°Ì´Ù).</p>
697         </dd>
698
699         <dt><code>AcceptMutex pthread</code></dt>
700
701         <dd>
702           <p>(1.3°ú ±× ÀÌÈÄ) ÀÌ ¹æ¹ýÀº POSIX mutex¸¦ »ç¿ëÇϱ⶧¹®¿¡
703           POSIX ¾²·¹µå ±Ô¾àÀ» ¿ÏÀüÈ÷ ±¸ÇöÇÑ ¾ÆÅ°ÅØÃĶó¸é ¸ðµÎ
704           »ç¿ë°¡´ÉÇÏÁö¸¸, (2.5 ÀÌÈÄ) Solaris¿¡¼­¸¸ ±×°Íµµ Æ¯Á¤
705           ±¸¼º¿¡¼­¸¸ µ¿ÀÛÇϴ µíÇÏ´Ù. ÀÌ ¹æ¹ýÀ» ½ÃµµÇغ»´Ù¸é
706           ¼­¹ö°¡ ¸ØÃç¼­ ÀÀ´äÀ» ¾ÈÇÏ´ÂÁö »ìÆìºÁ¾ß ÇÑ´Ù. Á¤Àû
707           ³»¿ë¸¸ ¼­ºñ½ºÇϴ ¼­¹ö´Â Àß µ¿ÀÛÇϴ °Í °°´Ù.</p>
708         </dd>
709
710         <dt><code>AcceptMutex posixsem</code></dt>
711
712         <dd>
713           <p>(2.0°ú ±× ÀÌÈÄ) ÀÌ ¹æ¹ýÀº POSIX ¼¼¸¶Æ÷¾î¸¦ »ç¿ëÇÑ´Ù.
714           mutex¸¦ °¡Áø ÇÁ·Î¼¼½ºÀÇ ¾²·¹µå°¡ Á״´ٸé(segfault)
715           ¼¼¸¶Æ÷¾î ¼ÒÀ¯±ÇÀ̠ȸº¹µÇÁö ¾Ê¾Æ¼­ À¥¼­¹ö°¡ ¸ØÃá´Ù.</p>
716         </dd>
717
718       </dl>
719
720       <p>½Ã½ºÅÛ¿¡ À§ ¸ñ·Ï¿¡ ¾ø´Â Á÷·ÄÈ­(serialization) ¹æ¹ýÀÌ
721       Àִٸ頱נ¹æ¹ýÀ» »ç¿ëÇϴ Äڵ带 APR¿¡ Ãß°¡ÇÒ °¡Ä¡°¡ ÀÖ´Ù.</p>
722
723       <p>°í·Á´Â ÇغÃÁö¸¸ ±¸ÇöÇÏÁö¾ÊÀº ´Ù¸¥ ¹æ¹ýÀº ºÎºÐÀûÀ¸·Î
724       ¹Ýº¹¹®À» Á÷·ÄÈ­Çϴ ¹æ¹ýÀÌ´Ù. Áï, ÇÁ·Î¼¼¼­¸¦ ¸î°³¸¸ µé¿©º¸³»´Â
725       °ÍÀÌ´Ù. ÀÌ ¹æ¹ýÀº ¿©·¯ ÀÚ½ÄÀ» µ¿½Ã¿¡ ½ÇÇàÇÒ ¼ö À־
726       Á÷·ÄÈ­¶§¹®¿¡ Àüü ´ë¿ªÆøÀ» È°¿ëÇÏÁö ¸øÇϴ ´ÙÁßÇÁ·Î¼¼¼­
727       ÄÄÇ»ÅÍ¿¡¼­¸¸ °ü½ÉÀ» °¡Á®º¼ ¼ö ÀÖ´Ù. ¾ÕÀ¸·Î »ìÆ캼 ºÎºÐÀÌÁö¸¸,
728       ¸Å¿ì º´·ÄÈ­µÈ À¥¼­¹ö°¡ ÈçÇÏÁö ¾Ê¾Æ¼­ ¿ì¼±¼øÀ§°¡ ³·´Ù.</p>
729
730       <p>ÃÖ»óÀÇ ¼º´ÉÀ» ¾ò±âÀ§Çؼ­´Â ¿©·¯ <directive
731       module="mpm_common">Listen</directive> ¹®À» »ç¿ëÇÏÁö ¾Ê´Â
732       °ÍÀÌ ÀÌ»óÀûÀÌ´Ù. ±×·¯³ª °è¼Ó ¼³¸íÇÑ´Ù.</p>
733
734     </section>
735
736     <section>
737
738       <title>accept Á÷·ÄÈ­ - ¼ÒÄÏ ÇÑ°³</title>
739
740       <p>¾ÕÀÇ ¼³¸íÀº ´ÙÁß¼ÒÄÏ ¼­¹ö¿¡´Â ÁÁÁö¸¸, ¼ÒÄÏÀÌ ÇÑ°³ÀÎ
741       ¼­¹ö´Â ¾î¶²°¡? ¿¬°áÀÌ µµÂøÇÒ¶§±îÁö ¸ðµç ÀÚ½ÄÀÌ
742       <code>accept(2)</code>¿¡¼­ ¸ØÃçÀֱ⶧¹®¿¡ À̷л󠰰Àº
743       ¹®Á¦°¡ ¹ß»ýÇÏÁö ¾Ê°í, °í°¥ ¹®Á¦µµ ¾ø´Ù. ±×·¯³ª ½ÇÁ¦·Î´Â
744       ¾Õ¿¡¼­ ¸»ÇÑ ´ë±âÇÏÁö ¾Ê´Â (non-blocking) ¹æ¹ý¿¡¼­ ¹ß»ýÇÏ´Â
745       "°øȸÀü(spinning)" Çö»óÀ» °¨Ãß°í ÀÖ´Ù. ´ëºÎºÐÀÇ TCP ½ºÅÃÀº
746       ¿¬°áÀÌ µµÂøÇϸé Ä¿³ÎÀÌ <code>accept</code>¿¡¼­ ¸ØÃçÀÖ´Â
747       ¸ðµç ÀÚ½ÄÀ» ±ú¿ìµµ·Ï ±¸ÇöµÇÀÖ´Ù. ÇÁ·Î¼¼½ºÁß ÇÑ°³°¡ ¿¬°áÀ»
748       ¾ò°í »ç¿ëÀÚ¿µ¿ªÀ¸·Î µ¹¾Æ°¡°í, ³ª¸ÓÁö´Â Ä¿³Î¿¡¼­ °øȸÀüÇÏ¿©
749       ¿¬°áÀÌ ¾øÀ½À» ¹ß°ßÇϸ頴ٽàÀáÀ» ÀÜ´Ù. »ç¿ëÀÚ¿µ¿ª Äڵ忡¼­´Â
750       ÀÌ·± °øȸÀüÀ» ¾Ë ¼ö ¾øÁö¸¸, ºÐ¸íÈ÷ Á¸ÀçÇÑ´Ù. ±×·¡¼­ ´ÙÁß¼ÒÄÏÀÇ
751       ´ë±âÇÏÁö ¾Ê´Â ¹æ¹ý°ú µ¿ÀÏÇÏ°Ô ºÎÇϸ¦ ³ôÀ̴ ºÒÇÊ¿äÇÑ ÇൿÀÌ
752       ÀϾ´Ù.</p>
753
754       <p>±×·¡¼­ ¿ì¸®´Â ¿©·¯ ¾ÆÅ°ÅØÃÄ¿¡¼­ ¼ÒÄÏÀÌ ÇÑ°³ÀΠ°æ¿ì¿¡µµ
755       Á÷·ÄÈ­Çϸ頴õ "Àß" µ¿ÀÛÇÔÀ» ¹ß°ßÇß´Ù. ±×·¡¼­ °ÅÀÇ ´ëºÎºÐÀÇ
756       °æ¿ì ±âº»ÀûÀ¸·Î Á÷·ÄÈ­¸¦ »ç¿ëÇÑ´Ù. ¸®´ª½º¿¡¼­ (Ä¿³Î 2.0.30,
757       128Mb ¸Þ¸ð¸®¿¡ µà¾ó Pentium pro) ½ÇÇèÇÑ °á°ú ¼ÒÄÏ ÇÑ°³¸¦
758       Á÷·ÄÈ­Çϸé ÇÏÁö ¾ÊÀº °æ¿ì¿¡ ºñÇØ ÃÊ´ç ¿äûÀÌ 3% ¹Ì¸¸
759       ÁÙ¾îµé¾ú´Ù. ±×·¯³ª Á÷·ÄÈ­¸¦ ÇÏÁö ¾ÊÀº °æ¿ì ¿äû´ç 100ms
760       Áö¿¬ÀÌ ¹ß»ýÇß´Ù. ÀÌ Áö¿¬Àº ¾Æ¸¶µµ LAN¿¡¼­ ¹ß»ýÇϴ ±ä
761       ¿¬°á¼±¶§¹®ÀÏ °ÍÀÌ´Ù. ¼ÒÄÏÀÌ ÇÑ°³ÀΠ°æ¿ì Á÷·ÄÈ­¸¦ »ç¿ëÇÏÁö
762       ¾ÊÀ¸·Á¸é <code>SINGLE_LISTEN_UNSERIALIZED_ACCEPT</code>¸¦
763       Á¤ÀÇÇÑ´Ù.</p>
764
765     </section>
766
767     <section>
768
769       <title>Close Áö¿¬(lingering)</title>
770
771       <p><a
772       href="http://www.ics.uci.edu/pub/ietf/http/draft-ietf-http-connection-00.txt">
773       draft-ietf-http-connection-00.txt</a> 8Àý¿¡¼­ ¼³¸íÇϵíÀÌ
774       <strong>¾ÈÁ¤ÀûÀÎ</strong> À¥¼­¹ö°¡ µÇ·Á¸é, Åë½ÅÀÇ ¾ç ¹æÇâÀ»
775       µ¶¸³ÀûÀ¸·Î ´ÝÀ» ¼ö ÀÖ¾î¾ß ÇÑ´Ù (TCP ¿¬°áÀº ½Ö¹æÇâÀÌ°í,
776       ¹æÇâÀº ¼­·Î µ¶¸³ÀûÀÌ´Ù). ÀÌÁ¡À» ´Ù¸¥ ¼­¹ö¿¡¼­´Â ÀÚÁÖ
777       °£°úÇÏÁö¸¸, ¾ÆÆÄÄ¡´Â 1.2ºÎÅÍ Á¤È®È÷ ±¸ÇöÇØ¿Ô´Ù.</p>
778
779       <p>ÀÌ ±â´ÉÀ» ºÎÁÖÀÇÇÏ°Ô ¾ÆÆÄÄ¡¿¡ Ãß°¡ÇßÀ»¶§ ¿©·¯ À¯´Ð½º
780       ¹öÀü¿¡¼­ ¸¹Àº ¹®Á¦°¡ ¹ß»ýÇß´Ù. TCP ±Ô¾àÀº
781       <code>FIN_WAIT_2</code>¿¡ Å¸ÀӾƿôÀÌ ÀÖ´Ù°í Á¤ÇÏÁö ¾Ê¾ÒÁö¸¸,
782       ±ÝÁöÇÏÁöµµ ¾Ê¾Ò´Ù. Å¸ÀӾƿôÀÌ ¾ø´Â ½Ã½ºÅÛ¿¡¼­ ¾ÆÆÄÄ¡ 1.2´Â
783       ¸¹Àº ¼ÒÄÏÀ» ¿µ¿øÈ÷ <code>FIN_WAIT_2</code> »óÅ·Π¸¸µé¾ú´Ù.
784       ¸¹Àº °æ¿ì ÀÌ ¹®Á¦´Â Á¦Àۻ簡 Á¦°øÇϴ ÃֽŠTCP/IP ÆÐÄ¡¸¦
785       Àû¿ëÇÏ¿© ÇØ°áÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª Á¦Àۻ簡 ÆÐÄ¡¸¦ ¹ßÇ¥ÇÏÁö
786       ¾Ê´Â °æ¿ì°¡ (<em>Áï,</em> SunOS4 -- ¼Ò½º ¶óÀ̼±½º°¡ ÀÖ´Â
787       »ç¶÷Àº Á÷Á¢ ÆÐÄ¡ÇÒ ¼ö ÀÖÁö¸¸) Àֱ⶧¹®¿¡ ÀÌ ±â´ÉÀ» »ç¿ëÇÏÁö
788       ¾Ê±â·Î °áÁ¤Çß´Ù.</p>
789
790       <p>¹æ¹ýÀº µÎ°¡Áö´Ù. Çϳª´Â ¼ÒÄÏ ¿É¼Ç <code>SO_LINGER</code>¸¦
791       »ç¿ëÇϴ ¹æ¹ýÀÌ´Ù. ±×·¯³ª ºÒÇàÈ÷µµ ´ëºÎºÐÀÇ TCP/IP ½ºÅÃÀº
792       ÀÌ ¿É¼ÇÀ» ¿Ã¹Ù·Î ±¸ÇöÇÏÁö ¾Ê¾Ò´Ù. ¿Ã¹Ù·Î ±¸ÇöÇÑ ½ºÅÿ¡¼­
793       Á¶Â÷µµ (<em>Áï,</em> ¸®´ª½º 2.0.31) ÀÌ ¹æ¹ýÀº ´ÙÀ½ ¹æ¹ýº¸´Ù
794       ´õ cpu¸¦ Àâ¾Æ¸Ô´Â´Ù.</p>
795
796       <p>¾ÆÆÄÄ¡´Â º¸Åë (<code>http_main.c</code>¿¡ ÀÖ´Â)
797       <code>lingering_close</code>¶ó´Â ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù. ÀÌ ÇÔ¼ö´Â
798       ´ëÃæ ´ÙÀ½°ú °°´Ù:</p>
799
800       <example>
801         void lingering_close (int s)<br />
802         {<br />
803         <indent>
804           char junk_buffer[2048];<br />
805           <br />
806           /* shutdown the sending side */<br />
807           shutdown (s, 1);<br />
808           <br />
809           signal (SIGALRM, lingering_death);<br />
810           alarm (30);<br />
811           <br />
812           for (;;) {<br />
813           <indent>
814             select (s for reading, 2 second timeout);<br />
815             if (error) break;<br />
816             if (s is ready for reading) {<br />
817             <indent>
818               if (read (s, junk_buffer, sizeof (junk_buffer)) &lt;= 0) {<br />
819               <indent>
820                 break;<br />
821               </indent>
822               }<br />
823               /* just toss away whatever is here */<br />
824             </indent>
825             }<br />
826           </indent>
827           }<br />
828           <br />
829           close (s);<br />
830         </indent>
831         }
832       </example>
833
834       <p>ÀÌ ÄÚµå´Â ¿¬°áÀ» ´ÝÀ»¶§ ´õ CPU¸¦ »ç¿ëÇÏÁö¸¸, ¾ÈÁ¤ÀûÀÎ
835       ±¸ÇöÀ» À§ÇØ ÇÊ¿äÇÏ´Ù. HTTP/1.1ÀÌ ´õ ³Î¸® ÆÛÁö°í ¸ðµç ¿¬°áÀ»
836       À¯ÁöÇÑ´Ù¸é(persistent), ¿¬°áÀ» ¹Þ´Â ºñ¿ëÀº ¿©·¯ ¿äûÀ»
837       Ã³¸®Çϸ鼭 »ó¼âµÉ °ÍÀÌ´Ù. À§ÇèÇÏ°Ôµµ
838       <code>NO_LINGCLOSE</code>¸¦ Á¤ÀÇÇÏ¿© ÀÌ ±â´ÉÀ» »ç¿ëÇÏÁö
839       ¾ÊÀ» ¼ö ÀÖÁö¸¸, Àý´ë·Î ±ÇÇÏÁö ¾Ê´Â´Ù. Æ¯È÷ HTTP/1.1
840       ÆÄÀÌÇÁ¶óÀΠ<transnote>¿¬°áÀ¯Áö »óÅ¿¡¼­ ÀÀ´äÀ» ±â´Ù¸®Áö
841       ¾Ê°í ¿©·¯ ¿äûÀ» º¸³»´Â ±â¼ú</transnote> ¿¬°áÀ¯Áö¿¡´Â
842       <code>lingering_close</code>°¡ ÇʼöÀûÀÌ´Ù (±×¸®°í <a
843       href="http://www.w3.org/Protocols/HTTP/Performance/Pipeline.html">
844       ÆÄÀÌÇÁ¶óÀΠ¿¬°áÀÌ ´õ ºü¸£±â¶§¹®¿¡</a> »ç¿ëÇϱ根ٶö °ÍÀÌ´Ù).</p>
845
846     </section>
847
848     <section>
849
850       <title>Scoreboard ÆÄÀÏ</title>
851
852       <p>¾ÆÆÄÄ¡ÀÇ ºÎ¸ð¿Í ÀÚ½ÄÀº scoreboard¶ó´Â °ÍÀ» ÅëÇØ ¼­·Î
853       Åë½ÅÇÑ´Ù. ÀÌ»óÀûÀ¸·Î´Â scoreboard¸¦ °øÀ¯¸Þ¸ð¸®·Î ±¸ÇöÇؾß
854       ÇÑ´Ù. ¿ì¸® °³¹ßÀÚ°¡ Çش砿üÁ¦¿¡ Á¢±ÙÇÒ ¼ö Àְųª »ó¼¼ÇÑ
855       Æ÷Æà°á°ú¸¦ ¹ÞÀº °æ¿ì º¸Åë °øÀ¯¸Þ¸ð¸®¸¦ »ç¿ëÇÏ¿© ±¸ÇöÇÑ´Ù.
856       ³ª¸ÓÁö´Â µð½ºÅ©¿¡ Àִ ÆÄÀÏÀ» »ç¿ëÇÏ¿© ±¸ÇöÇÑ´Ù. µð½ºÅ©¿¡
857       Àִ ÆÄÀÏÀº ´À¸®°í ½Å·Úµµ°¡ ¶³¾îÁø´Ù (±â´Éµµ ´õ Àû´Ù).
858       <code>src/main/conf.h</code> ÆÄÀÏ¿¡¼­ »ç¿ëÇϴ ¾ÆÅ°ÅØÃĸ¦
859       Ã£¾Æ¼­ <code>USE_MMAP_SCOREBOARD</code> È¤Àº
860       <code>USE_SHMGET_SCOREBOARD</code>ÀÎÁö È®ÀÎÇÑ´Ù. µÑÁß
861       Çϳª¸¦ (°¢°¢ ÇÔ²² »ç¿ëÇÒ <code>HAVE_MMAP</code>À̳ª
862       <code>HAVE_SHMGET</code>µµ °°ÀÌ) Á¤ÀÇÇϸ頰øÀ¯¸Þ¸ð¸® Äڵ带
863       »ç¿ëÇÑ´Ù. ½Ã½ºÅÛÀÌ ´Ù¸¥ Á¾·ùÀÇ °øÀ¯¸Þ¸ð¸®¸¦ »ç¿ëÇÑ´Ù¸é
864       <code>src/main/http_main.c</code> ÆÄÀÏÀ» ¼öÁ¤ÇÏ¿© ¾ÆÆÄÄ¡¿¡¼­
865       °øÀ¯¸Þ¸ð¸®¸¦ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÈÅ(hook)À» Ãß°¡Ç϶ó. (¶ÇÇÑ
866       ÆÐÄ¡¸¦ ¿ì¸®¿¡°Ô º¸³»Áֱ根ٶõ´Ù.)</p>
867
868       <note>¿ª»çÀû ¼³¸í: ¾ÆÆÄÄ¡ÀÇ ¸®´ª½º ¹öÀüÀº ¾ÆÆÄÄ¡ 1.2 ¹öÀüºÎÅÍ
869       °øÀ¯¸Þ¸ð¸®¸¦ »ç¿ëÇϱ⠽ÃÀÛÇß´Ù. ¸®´ª½º¿¡¼­ Ãʱ⠾ÆÆÄÄ¡
870       ¹öÀüÀÌ ´À¸®°í ½Å·Úµµ°¡ ¶³¾îÁ³±â ¶§¹®ÀÌ´Ù.</note>
871
872     </section>
873
874     <section>
875
876       <title>DYNAMIC_MODULE_LIMIT</title>
877
878       <p>¸ðµâÀ» µ¿ÀûÀ¸·Î ÀоîµéÀÌÁö ¾Ê´Â´Ù¸é (°¡´ÉÇÑ Á¶±ÝÀ̶óµµ
879       ¼º´ÉÀ» ³ôÀ̱âÀ§ÇØ ÀÌ ±ÛÀ» Àд´ٸ頾Ƹ¶µµ ¸ðµâÀ» µ¿ÀûÀ¸·Î
880       ÀоîµéÀÌÁö ¾ÊÀ» °ÍÀÌ´Ù), ¼­¹ö¸¦ ÄÄÆÄÀÏÇÒ¶§
881       <code>-DDYNAMIC_MODULE_LIMIT=0</code>À» Ãß°¡ÇÑ´Ù. ±×·¯¸é
882       ¸ðµâÀ» µ¿ÀûÀ¸·Î ÀоîµéÀ̱âÀ§ÇØ ÇÒ´çÇϴ ¸Þ¸ð¸®¸¦ Àý¾àÇÑ´Ù.</p>
883
884     </section>
885
886   </section>
887
888   <section id="trace">
889
890     <title>ºÎ·Ï: ½Ã½ºÅÛÈ£Ãâ ±â·ÏÀ» ÀÚ¼¼È÷ ºÐ¼®Çϱâ</title>
891
892     <p>´ÙÀ½Àº Solaris 8¿¡¼­ worker MPMÀ» »ç¿ëÇÑ ¾ÆÆÄÄ¡ 2.0.38ÀÇ
893     ½Ã½ºÅÛÈ£Ãâ ±â·Ï(trace)ÀÌ´Ù. ¾Æ·¡ ¸í·É¾î¸¦ »ç¿ëÇÏ¿© ±â·ÏÀ»
894     ¾ò¾ú´Ù:</p>
895
896     <example>
897       truss -l -p <var>httpd_child_pid</var>.
898     </example>
899
900     <p><code>-l</code> ¿É¼ÇÀ» »ç¿ëÇϸé truss´Â ½Ã½ºÅÛÈ£ÃâÀ»
901     Çϴ LWP (lightweight process, °æ·®±Þ ÇÁ·Î¼¼½º--SolarisÀÇ
902     Ä¿³Î¼öÁØ ¾²·¹µå) ID¸¦ °°ÀÌ ±â·ÏÇÑ´Ù.</p>
903
904     <p>´Ù¸¥ ½Ã½ºÅÛ¿¡´Â <code>strace</code>, <code>ktrace</code>,
905     <code>par</code> °°Àº ½Ã½ºÅÛÈ£Ãâ ÃßÀû µµ±¸°¡ ÀÖ´Ù. °á°ú´Â
906     ºñ½ÁÇÏ´Ù.</p>
907
908     <p>Ŭ¶óÀ̾ðÆ®´Â À¥¼­¹ö¿¡°Ô Å©±â°¡ 10KBÀΠÁ¤Àû ÆÄÀÏÀ» ¿äûÇÑ´Ù.
909     Á¤ÀûÀΠÆÄÀÏÀ» ¿äûÇÏÁö ¾Ê°Å³ª ³»¿ëÇù»óÇϴ ¿äûÀ» ÇÑ °æ¿ì
910     ±â·ÏÀÌ ¸Å¿ì ´Ù¸£´Ù (¶§·Î´Â ¸Å¿ì ¾Ë¾Æº¸±â Èûµé´Ù).</p>
911
912     <example>
913 <pre>/67:    accept(3, 0x00200BEC, 0x00200C0C, 1) (sleeping...)
914 /67:    accept(3, 0x00200BEC, 0x00200C0C, 1)            = 9</pre>
915     </example>
916
917     <p>À§¿¡¼­ ¿¬°á´ë±â(listener) ¾²·¹µå°¡ LWP #67¿¡¼­ ½ÇÇàµÊÀ»
918     ¾Ë ¼ö ÀÖ´Ù.</p>
919
920     <note><code>accept(2)</code> Á÷·ÄÈ­¸¦ »ç¿ëÇÏÁö ¾ÊÀ½À» ÁÖ¸ñÇ϶ó.
921     ¿©·¯ Æ÷Æ®¸¦ ±â´Ù¸®Áö¾Ê´Â °æ¿ì ÀÌ Ç÷¡ÆûÀÇ worker MPMÀº
922     ±âº»ÀûÀ¸·Î Á÷·ÄÈ­ÇÏÁö ¾ÊÀº accept¸¦ »ç¿ëÇÑ´Ù.</note>
923
924     <example>
925 <pre>/65:    lwp_park(0x00000000, 0)                         = 0
926 /67:    lwp_unpark(65, 1)                               = 0</pre>
927     </example>
928
929     <p>¿¬°áÀº ¹Þ¾ÆµéÀÌ°í(accept) ¿¬°á´ë±â ¾²·¹µå´Â
930     worker ¾²·¹µå¸¦ ±ú¿ö¼­ ¿äûÀ» Ã³¸®ÇÏ°Ô ÇÑ´Ù. ¾Æ·¡ ±â·Ï¿¡¼­
931     ¿äûÀ» Ã³¸®Çϴ worker ¾²·¹µå°¡ LWP #65ÀÓÀ» ¾Ë ¼ö ÀÖ´Ù.</p>
932
933     <example>
934 <pre>/65:    getsockname(9, 0x00200BA4, 0x00200BC4, 1)       = 0</pre>
935     </example>
936
937     <p>°¡»óÈ£½ºÆ®¸¦ ±¸ÇöÇϱâÀ§ÇØ ¾ÆÆÄÄ¡´Â ¿¬°áÀ» ¹Þ¾ÆµéÀÎ
938     Áö¿ª(local) ¼ÒÄÏ ÁÖ¼Ò¸¦ ¾Ë¾Æ¾ß ÇÑ´Ù. (°¡»óÈ£½ºÆ®¸¦ »ç¿ëÇÏÁö
939     ¾Ê°Å³ª <directive module="mpm_common">Listen</directive>
940     Áö½Ã¾î¿¡ ¿ÍÀϵåÄ«µå ÁÖ¼Ò¸¦ »ç¿ëÇÏÁö ¾ÊÀº °æ¿ì µî) ¸¹Àº °æ¿ì
941     À̠ȣÃâÀ» ¾ø¾Ù ¼ö ÀÖ´Ù. ±×·¯³ª ¾ÆÁ÷ ÀÌ·± ÃÖÀûÈ­ ÀÛ¾÷ÀÌ
942     ¾ÈµÇÀÖ´Ù. </p>
943
944     <example>
945 <pre>/65:    brk(0x002170E8)                                 = 0
946 /65:    brk(0x002190E8)                                 = 0</pre>
947     </example>
948
949     <p><code>brk(2)</code> È£ÃâÀº Èü(heap)¿¡¼­ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÑ´Ù.
950     À¥¼­¹ö´Â ´ëºÎºÐÀÇ ¿äû Ã³¸®½Ã ÀÚü ¸Þ¸ð¸®
951     ÇÒ´çÀÚ(<code>apr_pool</code>°ú <code>apr_bucket_alloc</code>)¸¦
952     »ç¿ëÇϱ⶧¹®¿¡ ½Ã½ºÅÛÈ£Ãâ ±â·Ï¿¡¼­ ÀÌ ½Ã½ºÅÛÈ£ÃâÀ» º¸±â°¡
953     µå¹°´Ù. ÀÌ ±â·Ï¿¡¼­ À¥¼­¹ö´Â ½ÃÀÛÇÏÀÚ¸¶ÀÚ ÀÚü ¸Þ¸ð¸® ÇÒ´çÀÚ°¡
954     »ç¿ëÇÒ ¸Þ¸ð¸®ºí·ÏÀ» ¾ò±âÀ§ÇØ <code>malloc(3)</code>À» È£ÃâÇÑ´Ù.</p>
955
956     <example>
957 <pre>/65:    fcntl(9, F_GETFL, 0x00000000)                   = 2
958 /65:    fstat64(9, 0xFAF7B818)                          = 0
959 /65:    getsockopt(9, 65535, 8192, 0xFAF7B918, 0xFAF7B910, 2190656) = 0
960 /65:    fstat64(9, 0xFAF7B818)                          = 0
961 /65:    getsockopt(9, 65535, 8192, 0xFAF7B918, 0xFAF7B914, 2190656) = 0
962 /65:    setsockopt(9, 65535, 8192, 0xFAF7B918, 4, 2190656) = 0
963 /65:    fcntl(9, F_SETFL, 0x00000082)                   = 0</pre>
964     </example>
965
966     <p>´ÙÀ½ worker ¾²·¹µå´Â Å¬¶óÀ̾ðÆ®ÀÇ ¿¬°á(ÆÄÀϱâ¼úÀÚ 9)À»
967     ´ë±â¾ÈÇÔ(non-blocking) »óÅ·Π¹Ù²Û´Ù. <code>setsockopt(2)</code>¿Í
968     <code>getsockopt(2)</code> È£ÃâÀº SolarisÀÇ libc°¡ ¼ÒÄÏ¿¡
969     ´ëÇÑ <code>fcntl(2)</code>À» ¾î¶»°Ô Ã³¸®ÇÏ´ÂÁö º¸¿©ÁØ´Ù.</p>
970
971     <example>
972 <pre>/65:    read(9, " G E T   / 1 0 k . h t m".., 8000)     = 97</pre>
973     </example>
974
975     <p>worker ¾²·¹µå´Â Å¬¶óÀ̾ðÆ®·Î ºÎÅÍ ¿äûÀ» Àд´Ù.</p>
976
977     <example>
978 <pre>/65:    stat("/var/httpd/apache/httpd-8999/htdocs/10k.html", 0xFAF7B978) = 0
979 /65:    open("/var/httpd/apache/httpd-8999/htdocs/10k.html", O_RDONLY) = 10</pre>
980     </example>
981
982     <p>À¥¼­¹ö ¼³Á¤Àº <code>Options FollowSymLinks</code>¿Í
983     <code>AllowOverride None</code>ÀÌ´Ù. ±×·¡¼­ ¿äûÇÑ ÆÄÀÏ°æ·ÎÀÇ
984     °¢ µð·ºÅ丮¿¡ ´ëÇØ <code>lstat(2)</code>Çϰųª
985     <code>.htaccess</code> ÆÄÀÏÀ» °Ë»çÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ÆÄÀÏÀ»
986     °Ë»çÇϱâÀ§ÇØ, 1) ÆÄÀÏÀÌ ÀÖ´ÂÁö, 2) µð·ºÅ丮°¡ ¾Æ´Ñ ÀϹÝÆÄÀÏÀÎÁö,
987     <code>stat(2)</code> È£Ã⸸ Çϸ頵ȴÙ.</p>
988
989     <example>
990 <pre>/65:    sendfilev(0, 9, 0x00200F90, 2, 0xFAF7B53C)      = 10269</pre>
991     </example>
992
993     <p>ÀÌ °æ¿ì À¥¼­¹ö´Â ÇѹøÀÇ <code>sendfilev(2)</code> ½Ã½ºÅÛÈ£Ãâ·Î
994     HTTP ÀÀ´äÇì´õ¿Í ¿äûÇÑ ÆÄÀÏÀ» Àü¼ÛÇÒ ¼ö ÀÖ´Ù. Sendfile Áö¿ø¿©ºÎ´Â
995     ¿î¿µÃ¼Á¦¸¶´Ù ´Ù¸£´Ù. ´Ù¸¥ ½Ã½ºÅÛÀ̶ó¸é <code>sendfile(2)</code>À»
996     È£ÃâÇϱâ Àü¿¡ Çì´õ¸¦ º¸³»±âÀ§ÇØ <code>write(2)</code>³ª
997     <code>writev(2)</code> È£ÃâÀ» ÇÑ´Ù.</p>
998
999     <example>
1000 <pre>/65:    write(4, " 1 2 7 . 0 . 0 . 1   -  ".., 78)      = 78</pre>
1001     </example>
1002
1003     <p><code>write(2)</code> È£ÃâÀº Á¢±Ù·Î±×(access log)¿¡ ¿äûÀ»
1004     ±â·ÏÇÑ´Ù. ÀÌ ±â·Ï¿¡ <code>time(2)</code> È£ÃâÀÌ ¾øÀ½À» ÁÖ¸ñÇ϶ó.
1005     ¾ÆÆÄÄ¡ 1.3°ú ´Þ¸® ¾ÆÆÄÄ¡ 2.0Àº ½Ã°£À» ¾Ë±âÀ§ÇØ
1006     <code>gettimeofday(3)</code>¸¦ »ç¿ëÇÑ´Ù.
1007     <code>gettimeofday</code>¸¦ ÃÖÀûÈ­ÇÑ ¸®´ª½º¿Í Solaris °°Àº
1008     ¸î¸î ¿î¿µÃ¼Á¦¿¡¼­´Â ÀϹÝÀûÀΠ½Ã½ºÅÛÈ£Ã⠺δãÀÌ ¾ø´Ù.</p>
1009
1010     <example>
1011 <pre>/65:    shutdown(9, 1, 1)                               = 0
1012 /65:    poll(0xFAF7B980, 1, 2000)                       = 1
1013 /65:    read(9, 0xFAF7BC20, 512)                        = 0
1014 /65:    close(9)                                        = 0</pre>
1015     </example>
1016
1017     <p>worker ¾²·¹µå´Â ¿¬°áÀ» Áö¿¬´Ý±â(lingering close)ÇÑ´Ù.</p>
1018
1019     <example>
1020 <pre>/65:    close(10)                                       = 0
1021 /65:    lwp_park(0x00000000, 0)         (sleeping...)</pre>
1022     </example>
1023
1024     <p>¸¶Áö¸·À¸·Î worker ¾²·¹µå´Â ¹æ±Ý Àü¼ÛÇÑ ÆÄÀÏÀ» ´Ý°í,
1025     ¿¬°á´ë±â(listener) ¾²·¹µå°¡ ´Ù¸¥ ¿¬°áÀ» ÇÒ´çÇÒ ¶§±îÁö
1026     Á¤ÁöÇÑ´Ù.</p>
1027
1028     <example>
1029 <pre>/67:    accept(3, 0x001FEB74, 0x001FEB94, 1) (sleeping...)</pre>
1030     </example>
1031
1032     <p>±×µ¿¾È ¿¬°á´ë±â ¾²·¹µå´Â ¿¬°áÀ» (¸ðµç worker°¡ ÀÛ¾÷ÁßÀ̸é
1033     ¿¬°á´ë±â ¾²·¹µå¸¦ ¸ØÃߴ worker MPMÀÇ È帧Á¦¾î ±â´É¿¡ µû¶ó)
1034     worker ¾²·¹µå¿¡ ÇÒ´çÇÏÀÚ¸¶ÀÚ ´Ù¸¥ ¿¬°áÀ» ¹Þ¾ÆµéÀÏ ¼ö ÀÖ´Ù.
1035     ÀÌ ±â·Ï¿¡´Â ³ª¿ÀÁö ¾ÊÁö¸¸, worker ¾²·¹µå°¡ ¹æ±Ý ¹ÞÀº ¿¬°áÀ»
1036     Ã³¸®Çϴ µ¿¾È ´ÙÀ½ <code>accept(2)</code>°¡ (¿äûÀÌ ¸Å¿ì
1037     ¸¹Àº °æ¿ì Ç×»ó) ÀϾ ¼ö ÀÖ´Ù.</p>
1038
1039   </section>
1040
1041 </manualpage>
1042