File: //usr/local/apache/manual/misc/perf-tuning.html.ko.euc-kr
<?xml version="1.0" encoding="EUC-KR"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ko" xml:lang="ko"><head>
<meta content="text/html; charset=EUC-KR" http-equiv="Content-Type" />
<!--
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
This file is generated from xml source: DO NOT EDIT
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-->
<title>����ġ ������� - Apache HTTP Server Version 2.4</title>
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
<script src="../style/scripts/prettify.min.js" type="text/javascript">
</script>
<link href="../images/favicon.ico" rel="shortcut icon" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/">���</a> | <a href="../mod/directives.html">���þ��</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">���</a> | <a href="../sitemap.html">���Ʈ��</a></p>
<p class="apache">Apache HTTP Server Version 2.4</p>
<img alt="" src="../images/feather.png" /></div>
<div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP Server</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="../">Version 2.4</a> > <a href="./">Miscellaneous Documentation</a></div><div id="page-content"><div id="preamble"><h1>����ġ �������</h1>
<div class="toplang">
<p><span>������ ���: </span><a href="../en/misc/perf-tuning.html" hreflang="en" rel="alternate" title="English"> en </a> |
<a href="../fr/misc/perf-tuning.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
<a href="../ko/misc/perf-tuning.html" title="Korean"> ko </a> |
<a href="../tr/misc/perf-tuning.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
</div>
<div class="outofdate">�� ������ �ֽ��� ������ �ƴմϴ�.
�ֱٿ� ����� ���� ���� ������ ����ϼ���.</div>
<p>����ġ 2.0�� ��ɰ� ��ð��ɼ��� ����� ����� �µ���
������ ���� �������̴�. ��ġ��ũ ���� ������� �������
�ʾ���� ����ġ 2.0�� ��� ���� ��� �� ����� ����.</p>
<p>����ġ 1.3�� ���ؼ� 2.0 ������ ó������ Ȯ�强(scalability)��
��̱��� ���� ���ȭ�� �ߴ�. �⺻������ ��κ� ���ȭ��
���� ����Ѵ�. ���� ����Ͻ� Ȥ�� ����� ������ ���ɿ�
ū ���� �� �� �ִ�. �� ������ ����ġ 2.0�� ����� ����ϱ���
���� �����ڰ� ������ �� �ִ� �ɼ�� �����Ѵ�. � ����
�ɼ�� �������� �ϵ���� �ü���� ���� �� �� Ȱ���ϵ���
�ϴ� �ݸ�, � �ɼ�� �ӵ��� ���� ���� ���Ѵ�.</p>
</div>
<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#hardware">�ϵ���� �ü���� ���ؼ�</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#runtime">����� ������ ���ؼ�</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#compiletime">����Ͻ� ������ ���ؼ�</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#trace">�η�: �ý���ȣ�� ���� �ڼ�� �м��ϱ�</a></li>
</ul><h3>���</h3><ul class="seealso"><li><a href="#comments_section">Comments</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="hardware" id="hardware">�ϵ���� �ü���� ���ؼ�</a></h2>
<p>������ ���ɿ� ���� ū ���� �ִ� ��� ��. �����
��û�� �����ð��� ���ڰ� "���� �����ٰ�" ������� ���ϰ�
�ø������ �������� ����� �ϸ� �ȵȴ�. �������� ���ڴ�
�����ϰ� �ٽ� �����Ͽ� ���ϰ� ��� �����Ѵ�. <code class="directive"><a href="../mod/mpm_common.html#maxclients">MaxClients</a></code> ���þ �����Ͽ�
�������� ����� �� ������ ���� �ڽ�� �����ʵ��� �ؾ�
�Ѵ�. ���� �����ϴ�: <code>top</code>�� ���� ��������
��μ��� ���� ���� ����ġ ��μ����� ��� �� ��뷮��
�˾Ƴ���, ��ü ��밡���� ���� �ٸ� ��μ������ �����
������ �� ������ ������.</p>
<p>������� ���ϴ�: ���� ���� CPU, ���� ���� ��Ʈ��ī��,
���� ���� ��ũ, ���⼭ "���� ����"�� ���� �ؼ� ���ؾ�
�Ѵ�.</p>
<p>�ü���� ���� ���� �˾Ƽ� ������ ��̴�. ���� �Ϲ������
�����ϴٰ� �Ǹ�� ��� ��ħ�� �ִ�:</p>
<ul>
<li>
<p>������ �ü���� �ֽ� ��� ������ ��ġ�� �����Ѵ�.
���� �ü�� ���ۻ�� �ֱ� TCP ���ð� ������ ��̺귯����
���� �ӵ���� �ߴ�.</p>
</li>
<li>
<p>�ü���� <code>sendfile(2)</code> �ý���ȣ��
�����Ѵٸ�, �̸� ����ϱ��� �����̳� ��ġ�� ��ġ�Ͽ����
Ȯ���Ѵ�. (���� ���, ��������� 2.4 �̻� ������ ���Ѵ�.
Solaris 8 �ʱ� ������ ��ġ�� �ʿ��ϴ�.) �����ϴ� �ý���̶��
����ġ 2�� <code>sendfile</code>�� ����Ͽ� CPU�� ��
����ϸ� ���� ���� �� ���� ������ �� �մ�.</p>
</li>
</ul>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="runtime" id="runtime">����� ������ ���ؼ�</a></h2>
<table class="related"><tr><th>���õ� ���</th><th>���õ� ���þ�</th></tr><tr><td><ul><li><code class="module"><a href="../mod/mod_dir.html">mod_dir</a></code></li><li><code class="module"><a href="../mod/mpm_common.html">mpm_common</a></code></li><li><code class="module"><a href="../mod/mod_status.html">mod_status</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code></li><li><code class="directive"><a href="../mod/mod_dir.html#directoryindex">DirectoryIndex</a></code></li><li><code class="directive"><a href="../mod/core.html#hostnamelookups">HostnameLookups</a></code></li><li><code class="directive"><a href="../mod/core.html#enablemmap">EnableMMAP</a></code></li><li><code class="directive"><a href="../mod/core.html#enablesendfile">EnableSendfile</a></code></li><li><code class="directive"><a href="../mod/core.html#keepalivetimeout">KeepAliveTimeout</a></code></li><li><code class="directive"><a href="../mod/prefork.html#maxspareservers">MaxSpareServers</a></code></li><li><code class="directive"><a href="../mod/prefork.html#minspareservers">MinSpareServers</a></code></li><li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li><li><code class="directive"><a href="../mod/mpm_common.html#startservers">StartServers</a></code></li></ul></td></tr></table>
<h3><a name="dns" id="dns">HostnameLookups�� DNS�� ���� ���� ����</a></h3>
<p>����ġ 1.3 ����� <code class="directive"><a href="../mod/core.html#hostnamelookups">HostnameLookups</a></code>�� �⺻����
<code>On</code>�̿���. ��û�� ��ġ���� DNS �˻��� ������
�ϹǷ� ��û���� ������ �����. ����ġ 1.3���� �� ������
�⺻���� <code>Off</code>�� ����Ǿ���. �α����� �ּҸ�
ȣ��Ʈ���� ��ȯ�Ϸ��� ���� �α�ó�� ��α��� �ϳ���,
����ġ�� ��Ե� <a href="../programs/logresolve.html"><code>logresolve</code></a>
��α��� ����϶�.</p>
<p>�α�ó�� �۾��� ���� ���ɿ� �ǿ��� ��ġ�Ƿ� ���
����ϴ� �������� �ƴ� �ٸ� ��ǻ�Ϳ��� �α����� ��ó���ϱ�
�ٶ���.</p>
<p><code><code class="directive"><a href="../mod/mod_access.html#allow">Allow</a></code>
from domain</code>�̳� <code><code class="directive"><a href="../mod/mod_access.html#deny">Deny</a></code> from domain</code>
���þ ����Ѵٸ� (��, IP �ּҰ� �ƴ� ȣ��Ʈ��̳� ����θ�
����Ѵٸ�) �ε�� �ߺ�-�� DNS �˻��� (���˻��� ���� ��Ƿ�
����Ǿ���� Ȯ���ϱ��� �ٽ� �˻�) �ؾ� �Ѵ�. ���Ƿ�
����� ��̱��� �̷� ���þ�� �����ϸ� �̸���� IP
�ּҸ� ����Ѵ�.</p>
<p><code><Location /server-status></code> ���� ����
���þ�� �������� ������ �� ����� ����϶�. �� ���
���ǿ� �´� ��û���� DNS ��ȸ�� �Ѵ�. �����
<code>.html</code>�� <code>.cgi</code> ��ϸ� DNS �˻���
�ϴ� ������:</p>
<div class="example"><p><code>
HostnameLookups off<br />
<Files ~ "\.(html|cgi)$"><br />
<span class="indent">
HostnameLookups on<br />
</span>
</Files>
</code></p></div>
<p>���� CGI���� DNS��� �ʿ��� ��̶��, �ʿ��� Ư��
CGI������ <code>gethostbyname</code> ȣ�� �ϵ��� ���غ�
�� �ִ�.</p>
<h3><a name="symlinks" id="symlinks">FollowSymLinks�� SymLinksIfOwnerMatch</a></h3>
<p>URL �������� <code>Options FollowSymLinks</code>��
�������ʰ� <code>Options SymLinksIfOwnerMatch</code>��
����ϸ� ����ġ�� �ɺ���ũ�� �˻��ϱ��� �ý���ȣ��
�ѹ� �� �ؾ� �Ѵ�. ��ϸ�� �� �κи��� �ѹ��� �� ȣ��
�Ѵ�. ���� ���, ������ ����� ����:</p>
<div class="example"><p><code>
DocumentRoot /www/htdocs<br />
<Directory /><br />
<span class="indent">
Options SymLinksIfOwnerMatch<br />
</span>
</Directory>
</code></p></div>
<p><code>/index.html</code> URI�� ���� ��û�� �ִٰ� �������.
���� ����ġ�� <code>/www</code>, <code>/www/htdocs</code>,
<code>/www/htdocs/index.html</code> ������ ����
<code>lstat(2)</code>�� ȣ���Ѵ�. <code>lstats</code>
���� ij����� �ʱ���� ��û�� ���� ������ �Ź� ����
�۾��� �Ѵ�. ��¥ �ɺ���ũ ���� �˻縦 ���Ѵٸ� �����
���� �� �� �ִ�:</p>
<div class="example"><p><code>
DocumentRoot /www/htdocs<br />
<Directory /><br />
<span class="indent">
Options FollowSymLinks<br />
</span>
</Directory><br />
<br />
<Directory /www/htdocs><br />
<span class="indent">
Options -FollowSymLinks +SymLinksIfOwnerMatch<br />
</span>
</Directory>
</code></p></div>
<p>�� ��� �ּ��� <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> ��δ� �˻����
�ʴ´�. DocumentRoot �ۿ� �ִ� ��η� <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code>�� <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>�� �����
��쿡�� ���� ���� ����� �ʿ��ϴ�. �ɺ���ũ �����
����� �ʰ� �ְ�� ����� �����,
<code>FollowSymLinks</code>�� �����ϰ�,
<code>SymLinksIfOwnerMatch</code>�� ����� �ȵȴ�.</p>
<h3><a name="htaccess" id="htaccess">AllowOverride</a></h3>
<p>URL �������� overrides�� ����Ѵٸ� (����
<code>.htaccess</code> ���) ����ġ�� ��ϸ�� �� �κи���
<code>.htaccess</code>�� ���� �õ��Ѵ�. ���� ���,</p>
<div class="example"><p><code>
DocumentRoot /www/htdocs<br />
<Directory /><br />
<span class="indent">
AllowOverride all<br />
</span>
</Directory>
</code></p></div>
<p><code>/index.html</code> URI�� ���� ��û�� �ִٰ� �������.
����ġ�� <code>/.htaccess</code>, <code>/www/.htaccess</code>,
<code>/www/htdocs/.htaccess</code>�� ������ �õ��Ѵ�.
�ذ�å�� ��� <code>Options FollowSymLinks</code> ����
���ϴ�. �ְ�� ����� ����� ��Ͻý��ۿ� ���ؼ� ��
<code>AllowOverride None</code>�� ����Ѵ�.</p>
<h3><a name="negotiation" id="negotiation">�������</a></h3>
<p>�����ϰ� ��¥ ����� ������� ����� �ִٸ� �������
���´�. ����� ���� �̵� ������Ϻ��� �۴�. ������
������ �� �� �ִ�. ����� ���� ��ϵ�ī�带 ����ϴ� ���:</p>
<div class="example"><p><code>
DirectoryIndex index
</code></p></div>
<p>����� ���� ����Ѵ�:</p>
<div class="example"><p><code>
DirectoryIndex index.cgi index.pl index.shtml index.html
</code></p></div>
<p>���� ���� ��� �տ� �д�.</p>
<p>��, ���丮���� ��ϵ� ã�� <code>MultiViews</code>
���ٴ�, �� ��ϸ� ����� �ʿ��� ������ �� �� �ִ�
<code>type-map</code> ���� ���� ����� ��� �� ������
����϶�.</p>
<p>���Ʈ�� �������� �ʿ��ϴٸ� ��� ���� <code>Options
MultiViews</code> ���þ ����ϱ⺸�� <code>type-map</code>
���� ���϶�. ������ ���� �ڼ��� ����
<code>type-map</code> ���� ����� ���� <a href="../content-negotiation.html">�������</a> ������ ����϶�.</p>
<h3>�� (memory-mapping)</h3>
<p>���� ���, server-side-include�� ó���ϴ� �� ����ġ
2.0�� ������ ���� ����� �ü���� <code>mmap(2)</code>
�� �����Ѵٸ� ���� ���Ѵ�.</p>
<p>���� �÷������ ���� ����� ����Ѵ�. ����
���� ������ ����� ����Ʈ���� ����� �������
��ġ�� ��찡 �ִ�:</p>
<ul>
<li>
<p>� �ü������ <code>mmap</code>�� CPU ������
������� <code>read(2)</code> ��ŭ Ȯ�强�� ���� �ʴ�.
���� ���, �����μ��� Solaris �������� ����ġ 2.0��
���� <code>mmap</code>�� ������ ����� ������ ��
���� �� ���� �����Ѵ�.</p>
</li>
<li>
<p>NFS ����Ʈ�� ��Ͻý��ۿ� �ִ� ���� ���ϴ�
���߿� �ٸ� NFS Ŭ��̾�Ʈ�� �ִ� ��μ����� ����
����ų� ���ũ�⸦ ��̸�, ������ ��μ����� ���
���� ���� ��ϳ��� ����� bus error�� ����
�� �ִ�.</p>
</li>
</ul>
<p>���� ���ǿ� �ش��ϸ� �����ϴ� ���� �����
�ʵ��� <code>EnableMMAP off</code>�� ����ؾ� �Ѵ�. (���:
�� ���þ�� ���丮���� ������ �� �ִ�.)</p>
<h3>Sendfile</h3>
<p>����ġ�� �ü���� <code>sendfile(2)</code>�� �����ϸ�
Ŀ�� sendfile�� ����Ͽ� -- ���� ���, ���� ���� �����Ҷ�
-- ������ ���� ���� ������ �� �ִ�.</p>
<p>���� �÷������ sendfile�� ����ϸ� read�� send�� ����
�� �ʿ䰡 ��� �����. ���� sendfile�� ����ϸ�
�������� ������� ��ġ�ԵǴ� ��찡 �ִ�:</p>
<ul>
<li>
<p>sendfile ������ �߸��Ǿ��� ����� �ý���� �����
�߰���� ���ϴ� �÷���� �ִ�. Ư� �ٸ� ��ǻ�Ϳ���
�������� ������Ͽ� sendfile ������ �߸��� ��ǻ�ͷ�
������ ��쿡 �����ϴ�.</p>
</li>
<li>
<p>Ŀ��� �ڽ�� ij���� ����Ͽ� NFS�� ����Ʈ�� ����
��������� ������ �� ���� ��찡 �ִ�.</p>
</li>
</ul>
<p>���� ���ǿ� �ش��ϸ� ���� sendfile ������� �ʵ���
<code>EnableSendfile off</code>�� ����ؾ� �Ѵ�. (���:
�� ���þ�� ���丮���� ������ �� �ִ�.)</p>
<h3><a name="process" id="process">���� ����</a></h3>
<p>����ġ 1.3 ������� <code class="directive"><a href="../mod/prefork.html#minspareservers">MinSpareServers</a></code>, <code class="directive"><a href="../mod/prefork.html#maxspareservers">MaxSpareServers</a></code>, <code class="directive"><a href="../mod/mpm_common.html#startservers">StartServers</a></code> ������ ���
��ġ��ũ ���� ū ���� ���ƴ�. Ư� ����ġ�� �۾���
�����ϱ��� ����� �ڽļ��� �ٴٸ� ���� "����" �Ⱓ��
�ʿ��ߴ�. ó�� <code class="directive"><a href="../mod/mpm_common.html#startservers">StartServers</a></code>�� �ڽ��
������, <code class="directive"><a href="../mod/prefork.html#minspareservers">MinSpareServers</a></code>
�������� �ʴ� �ڽ�� �ϳ��� ������. ���� <code class="directive"><a href="../mod/mpm_common.html#startservers">StartServers</a></code> �⺻����
<code>5</code>�� ������ Ŭ��̾�Ʈ 100���� ���ÿ� �����ϸ�
���ϸ� ó���ϱ ����� �ڽ�� ������ 95�ʰ� �ɷȴ�.
��� ������� �ʴ� ��� ���������� �� ���������, 10�а���
�����ϴ� ��ġ��ũ ���� �ſ� ���ڰ� ���´�.</p>
<p>�ʴ� �Ѱ� ��Ģ�� �ڽ�� ���� ����ϸ鼭 ������ ������
��� ������� ���ߴ�. ��ǻ�Ͱ� �ڽ�� ����ϴ��� �ٻڸ�
��û�� ������ �� ����. ���� �� ��Ģ�� ����ġ�� ü��
���ɿ� �ǿ��� �־� �����Ͽ���. ����ġ 1.3���� �ʴ� �Ѱ�
��Ģ�� ��ȭ�Ǿ���. �ڵ�� �ڽ� �Ѱ��� �����, 1�� ����,
�ΰ��� �����, 1�� ����, �װ��� �����, �̷� ����� �ʴ�
�ڽ�� 32�� ���鶧�� ������ �����Ѵ�. �ڽļ��� <code class="directive"><a href="../mod/prefork.html#minspareservers">MinSpareServers</a></code> ������ �ٴٸ���
������ �ߴ��Ѵ�.</p>
<p>�� ��� ����ӵ��� ����� <code class="directive"><a href="../mod/prefork.html#minspareservers">MinSpareServers</a></code>, <code class="directive"><a href="../mod/prefork.html#maxspareservers">MaxSpareServers</a></code>, <code class="directive"><a href="../mod/mpm_common.html#startservers">StartServers</a></code>�� ��� ������ �ʿ䰡 ����. ���ʿ�
�ڽ�� 4�� �̻� �����ϸ� <code class="directive"><a href="../mod/core.html#errorlog">ErrorLog</a></code>�� ����Ѵ�. �̷� ��������
���� ���̸� �� ������ �����ϱ� �ٶ���.
<code class="module"><a href="../mod/mod_status.html">mod_status</a></code> ���� ����� �� ��̴�.</p>
<p>��μ��� ������ �����Ͽ� <code class="directive"><a href="../mod/mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></code> ������
��μ����� �����Ѵ�. �⺻���� �ڽĴ� ó���� ��û���� �����
���ٴ� <code>0</code>�̴�. ��� ������ <code>30</code>��
���� �ſ� ��� ������ ������ִٸ�, ���� ���� ��� �ʿ䰡
�ִ�. SunOS�� ������ Solaris ������ ����Ѵٸ�, ��������
�� ���� <code>10000</code> ������ �����϶�.</p>
<p>������(keep-alive)�� ����Ѵٸ� �ڽĵ� �̹� ����
���ῡ�� �߰� ��û�� ��ٸ��� �ƹ��͵� ����ʱ���� ���
�ٻڴ�. <code class="directive"><a href="../mod/core.html#keepalivetimeout">KeepAliveTimeout</a></code>��
�⺻�� <code>15</code> �ʴ� �̷� ��� �ּ�ȭ�Ѵ�. ��Ʈ��
�뿪��� ���� �ڿ� ���� ����� �°� �����Ѵ�. <a href="http://www.research.digital.com/wrl/techreports/abstracts/95.4.html">
�������� ��κ�� ����� �������</a> � ��쿡��
�� ���� <code>60</code> �� �̻�� �ø��� ����.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="compiletime" id="compiletime">����Ͻ� ������ ���ؼ�</a></h2>
<h3>MPM ����</h3>
<p>����ġ 2.x�� <a href="../mpm.html">���ó�����</a>
(MPMs)�̶�� ��ü�� �� �ִ� ����ȭ ��� �����Ѵ�. ����ġ��
������Ҷ� MPM�� �����ؾ� �Ѵ�. <code class="module"><a href="../mod/beos.html">beos</a></code>,
<code class="module"><a href="../mod/mpm_netware.html">mpm_netware</a></code>, <code class="module"><a href="../mod/mpmt_os2.html">mpmt_os2</a></code>,
<code class="module"><a href="../mod/mpm_winnt.html">mpm_winnt</a></code>�� ���� Ư�� �÷�������� �����
�� �ִ� MPM�� �ִ�. �Ϲ���� ���н��� �ý���� ���� MPM
�߿� �ϳ��� ������ �� �ִ�. �������� �ӵ���
Ȯ�强(scalability)�� � MPM�� �����߳Ŀ� �ȴ�:</p>
<ul>
<li><code class="module"><a href="../mod/worker.html">worker</a></code> MPM�� ���� �ڽ� ��μ�����
���� ���� �����带 ����Ѵ�. �� ������� �ѹ��� �� ����
����Ѵ�. �Ϲ������ worker�� prefork MPM ���� ����
�� ����ϹǷ� ��ŷ��� ���� ������ �����ϴ�.</li>
<li><code class="module"><a href="../mod/prefork.html">prefork</a></code> MPM�� �����尡 �Ѱ��� �ڽ�
��μ����� ������ ����Ѵ�. �� ��μ����� �ѹ��� ��
���� ����Ѵ�. ���� �ý��ۿ��� prefork�� �ӵ��� worker��
�������, �� ���� �� ����Ѵ�. ����� ���� ��Ȳ����
�����带 ������ �ʴ� prefork ���� worker�� ����
����� ������: �����忡 ������ (thread-safe) ���
����ڰ� ���� ��� ����� �� �ְ�, ������ ��� ������
����� �÷������ ���� ����� �� �ִ�.</li>
</ul>
<p>�� MPM�� �ٸ� MPM�� ���� �� �ڼ��� ������ MPM <a href="../mpm.html">����</a>�� ����ϱ� �ٶ���.</p>
<h3><a name="modules" id="modules">���</a></h3>
<p>�� ��뷮�� ���ɿ��� ���� �߿��� ���̱����
����� ������ �ʴ� ��� �����غ���. ��� <a href="../dso.html">DSO</a>�� ������ߴٸ� ����� ��
�� ���� <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code> ���þ �ּ�ó���ϸ�
�ȴ�. ���� ��� �����ϰ� �����Ͽ� ���Ʈ�� ����̵�
������� �����ϴ�� ���캼 �� �ִ�.</p>
<p>�ݴ�� ���� ����ġ ������Ͽ� �������� ��ũ��ִٸ�
����� �ʴ� ��� �����ϱ��� ����ġ�� ��������ؾ�
�Ѵ�.</p>
<p>���⼭ �翬� � ��� ����ϰ� ������ ����
�ǹ��� �����. ���� �����Ʈ���� �ٸ���. ���� �Ƹ���
<em>�ּ���</em> <code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code>,
<code class="module"><a href="../mod/mod_dir.html">mod_dir</a></code>, <code class="module"><a href="../mod/mod_log_config.html">mod_log_config</a></code>
��� ����� ��̴�. ���� �����Ʈ�� �α����� �ʿ��ٸ�
<code>mod_log_config</code>�� ��� �ȴ�. ���� ��õ���
�ʴ´�.</p>
<h3>Atomic ���</h3>
<p><code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> ���� ��� �ֱ� ������
worker MPM�� APR�� atomic API�� ����Ѵ�. �� API�� �淮��
������ ����ȭ�� ���� atomic ���� �����Ѵ�.</p>
<p>�⺻������ APR�� �� �ü��/CPU �÷������ ���� ȿ������
���� ����Ͽ� �� ���� ����Ѵ�. ���� ���, ���� �ֽ�
CPU���� �ϵ���� atomic compare-and-swap (CAS) ����
�ϴ� ��ɾ �ִ�. ���� � �÷������ APR�� �̷�
��ɾ ���� ������ CPU�� ȣȯ���� ���� �� ���� mutex���
����� �⺻������ ����Ѵ�. �̷� �÷������ ����ġ��
������Ҷ� ����ġ�� �ֽ� CPU������ ������ ��ȹ�̶��,
����ġ�� �����Ҷ� <code>--enable-nonportable-atomics</code>
�ɼ�� ����Ͽ� �� ���� atomic ����� ������ �� �ִ�:</p>
<div class="example"><p><code>
./buildconf<br />
./configure --with-mpm=worker --enable-nonportable-atomics=yes
</code></p></div>
<p><code>--enable-nonportable-atomics</code> �ɼ�� �����
���� �÷���� ����� �ִ�:</p>
<ul>
<li>SPARC���� Solaris<br />
�⺻������ APR�� Solaris/SPARC���� mutex��� atomic��
����Ѵ�. ���� �����Ҷ�
<code>--enable-nonportable-atomics</code>�� ����ϸ�
APR�� ���� �ϵ��� compare-and-swap�� ���� SPARC
v8plus ��ɾ ����Ѵ�. �� �ɼ�� ����ϸ� atomic
���� �� ȿ��������� (CPU�� �� ����ϰ� �� ��
����ȭ�� �����ϴ�), ������� �������� UltraSPARC
Ĩ������ ������ �� �ִ�.
</li>
<li>Linux on x86<br />
�⺻������ APR�� ���������� mutex��� atomic��
����Ѵ�. ���� �����Ҷ�
<code>--enable-nonportable-atomics</code>�� ����ϸ�
APR�� ���� �ϵ��� compare-and-swap�� ���� 486
��ɾ ����Ѵ�. �� ȿ������ atomic ���� ���������,
������� �������� 486 �̻� Ĩ������ (386�� �ȵȴ�)
������ �� �ִ�.
</li>
</ul>
<h3>mod_status�� ExtendedStatus On</h3>
<p>����ġ�� ������Ҷ� <code class="module"><a href="../mod/mod_status.html">mod_status</a></code>�� ����ϰ�
�����Ҷ� <code>ExtendedStatus On</code>�� �����ϸ� ����ġ��
��û�� ��������� <code>gettimeofday(2)</code>(Ȥ�� �ü����
���� <code>times(2)</code>)�� �ι� ȣ���ϰ� (1.3 �������)
<code>time(2)</code>�� �߰��� ������ ȣ���Ѵ�. ���� ������
���۽ð��� �ʿ��ϱ� �����̴�. �ֻ�� ����� �����
(�⺻����) <code>ExtendedStatus off</code>�� �����Ѵ�.</p>
<h3>accept ����ȭ - ���� ����</h3>
<div class="warning"><h3>���:</h3>
<p> �Ʒ� ������ ����ġ ������ 2.0 �������� ����� ����
��� ��� �ʴ�. ����� ��ȿ�� ������ �����, ����ؼ�
����ϱ� �ٶ���.</p>
</div>
<p>���н� ���� API�� ����� �����Ѵ�. �������� ���� �Ʈ
Ȥ�� ���� �ּҸ� ��ٸ����� ���� <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code>�� ����Ѵٰ� �������.
����� ������� �� ����� �˻��ϱ��� ����ġ��
<code>select(2)</code>�� ����Ѵ�. <code>select(2)</code>��
���Ͽ� ��ٸ��� �ִ� ����� <em>�����</em> Ȥ�� <em>�ּ���
�Ѱ�</em> �ִ�� �˷��ش�. ����ġ���� ���� �ڽ�� �ְ�,
���� �ִ� ��� �ڽ�� ���ÿ� ���ο� ���� �˻��Ѵ�. ����
����� ����� ���ϴ� (�� ���� �ڵ忡�� �������� �ʾҴ�.
��� �����ϱ��� �뵵�� ������.):</p>
<div class="example"><p><code>
for (;;) {<br />
<span class="indent">
for (;;) {<br />
<span class="indent">
fd_set accept_fds;<br />
<br />
FD_ZERO (&accept_fds);<br />
for (i = first_socket; i <= last_socket; ++i) {<br />
<span class="indent">
FD_SET (i, &accept_fds);<br />
</span>
}<br />
rc = select (last_socket+1, &accept_fds, NULL, NULL, NULL);<br />
if (rc < 1) continue;<br />
new_connection = -1;<br />
for (i = first_socket; i <= last_socket; ++i) {<br />
<span class="indent">
if (FD_ISSET (i, &accept_fds)) {<br />
<span class="indent">
new_connection = accept (i, NULL, NULL);<br />
if (new_connection != -1) break;<br />
</span>
}<br />
</span>
}<br />
if (new_connection != -1) break;<br />
</span>
}<br />
process the new_connection;<br />
</span>
}
</code></p></div>
<p>���� ���� �ܼ��� ������� �ɰ��� ��(starvation)
������ �ִ�. ���� �ڽ�� ���ÿ� �� �ݺ����� �����ϸ�,
��û�� ��ٸ��� ��� <code>select</code>���� �����. �̶�
� ���Ͽ� ��û�� �ϳ��� ����� ��� �ڽ�� �����
(����� �ڽ�� ������ �ü���� Ÿ�ֿ̹� ���� �ٸ���).
�̵� ��� ���� <code>accept</code>�ϱ� �õ��Ѵ�. ����
(����� �� ���Ḹ ����̶��) �� �ڽĸ� �����ϰ�, �������
<code>accept</code>���� <em>�����.</em> ���� �� �ڽĵ�
�� ����� ��û���� �����ϵ��� ������, �� ������� ���ο�
��û�� ���� ���ͼ� ��� �ڽ�� ���ﶧ�� ������ִ�.
�̷� �� ������ <a href="http://bugs.apache.org/index/full/467">PR#467</a>��
ó�� ����Ǿ���. �ּ��� �ΰ��� �ذ�å�� �ִ�.</p>
<p>�Ѱ����� ����� ������ �ʵ��� (non-blocking) �����
���̴�. �� ��� �ڽ�� <code>accept</code>�� �ص� �����
�ʰ�, ��� ������ �� �ִ�. ���� CPU �ð��� �����Ѵ�.
<code>select</code>���� ���� �ڽ�� 10�� �ְ�, ���� �����
�Ѱ� ���Դٰ� �������. ���� �� �ڽ�� 9���� �����
���� <code>accept</code>�ϱ� �õ��ϰ� �����ϸ� �ƹ�
�ϵ� ��� �ʰ� �ٽ� <code>select</code>�� �ݺ��Ѵ�. �ٽ�
<code>select</code>�� ���ƿ� ���� � �ڽĵ� �ٸ� ���Ͽ�
���� ��û�� ������� �ʴ´�. (�����μ��� ��ǻ�Ϳ���)
���� �ڽ� ������ŭ CPU ������ �ִ� �幮 ��찡 �ƴ϶��
�� �ذ�å�� ���� ���ƺ���� �ʴ´�.</p>
<p>�ٸ� ���� ����ġ�� ����ϴ� ������ ���� �ݺ�����
�� �ڽĸ��� �鿩������. �ݺ����� ����� ���� (��̸�
�������):</p>
<div class="example"><p><code>
for (;;) {<br />
<span class="indent">
<strong>accept_mutex_on ();</strong><br />
for (;;) {<br />
<span class="indent">
fd_set accept_fds;<br />
<br />
FD_ZERO (&accept_fds);<br />
for (i = first_socket; i <= last_socket; ++i) {<br />
<span class="indent">
FD_SET (i, &accept_fds);<br />
</span>
}<br />
rc = select (last_socket+1, &accept_fds, NULL, NULL, NULL);<br />
if (rc < 1) continue;<br />
new_connection = -1;<br />
for (i = first_socket; i <= last_socket; ++i) {<br />
<span class="indent">
if (FD_ISSET (i, &accept_fds)) {<br />
<span class="indent">
new_connection = accept (i, NULL, NULL);<br />
if (new_connection != -1) break;<br />
</span>
}<br />
</span>
}<br />
if (new_connection != -1) break;<br />
</span>
}<br />
<strong>accept_mutex_off ();</strong><br />
process the new_connection;<br />
</span>
}
</code></p></div>
<p><code>accept_mutex_on</code>�� <code>accept_mutex_off</code>
<a id="serialize" name="serialize">�Լ�</a>�� mutex ������
����Ѵ�. �ѹ��� ���� �� �ڽĸ��� mutex�� ���� �� �ִ�.
mutex�� ����ϴ� ���� ���������̴�. ��� ���� (1.3
���) <code>src/conf.h</code>�� (1.3�� �� ����)
<code>src/include/ap_config.h</code>�� ���ǵ�ִ�. �
��Ű���Ĵ� ���(locking) ���� ������� �ʱ����, �̷�
��Ű���Ŀ��� ���� <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code> ���þ ����ϸ�
�����ϴ�.</p>
<p>����� <code class="directive"><a href="../mod/mpm_common.html#acceptmutex">AcceptMutex</a></code> ���þ ����Ͽ�
mutex ����� ������ �� �ִ�.</p>
<dl>
<dt><code>AcceptMutex flock</code></dt>
<dd>
<p>�� ���� ������� ��ױ��� <code>flock(2)</code>
�ý���ȣ�� ����Ѵ� (������ ��ġ�� <code class="directive"><a href="../mod/mpm_common.html#lockfile">LockFile</a></code> ���þ�� ����).</p>
</dd>
<dt><code>AcceptMutex fcntl</code></dt>
<dd>
<p>�� ���� ������� ��ױ��� <code>fcntl(2)</code>
�ý���ȣ�� ����Ѵ� (������ ��ġ�� <code class="directive"><a href="../mod/mpm_common.html#lockfile">LockFile</a></code> ���þ�� ����).</p>
</dd>
<dt><code>AcceptMutex sysvsem</code></dt>
<dd>
<p>(1.3�� �� ����) �� ���� SysV�� ������ ����Ͽ�
mutex�� ����Ѵ�. ������� SysV�� �������� ����
��ۿ�� �ִ�. �ϳ��� ����ġ�� ������ �������
�ʰ� ��� �� �ִ� ���̴� (<code>ipcs(8)</code> manpage
���). �ٸ� �ϳ��� �������� ������ uid�� �����ϴ�
CGI�� (<em>��,</em> <code>suexec</code>��
<code>cgiwrapper</code>�� �������ʴ� �� ��� CGI)
������� API�� ����Ͽ� ���źΰ���� �� �� �ִ�
���̴�. �̷� ��������� IRIX�� ������ ��Ű���Ŀ���
�� ���� ������ �ʴ´� (��κ�� IRIX ��ǻ�Ϳ���
��� �� ���� ����ġ�� ���̴�).</p>
</dd>
<dt><code>AcceptMutex pthread</code></dt>
<dd>
<p>(1.3�� �� ����) �� ���� POSIX mutex�� ����ϱ����
POSIX ������ �Ծ� ���� ����� ��Ű���Ķ�� ���
��밡�������, (2.5 ����) Solaris������ �װ͵� Ư��
���������� �����ϴ� ���ϴ�. �� ���� �õ��غ��ٸ�
������ ���缭 ���� ���ϴ�� ������ �Ѵ�. ����
���븸 �����ϴ� ������ �� �����ϴ� �� ����.</p>
</dd>
<dt><code>AcceptMutex posixsem</code></dt>
<dd>
<p>(2.0�� �� ����) �� ���� POSIX ������ ����Ѵ�.
mutex�� ���� ��μ����� �����尡 �״´ٸ�(segfault)
������� ������ ȸ����� �ʾƼ� �������� �����.</p>
</dd>
</dl>
<p>�ý��ۿ� �� ��Ͽ� ���� ����ȭ(serialization) ����
�ִٸ� �� ���� ����ϴ� �ڵ带 APR�� �߰��� ��ġ�� �ִ�.</p>
<p>���� �غ���� ��������� �ٸ� ���� �κ������
�ݺ����� ����ȭ�ϴ� ���̴�. ��, ��μ����� ��� �鿩������
��̴�. �� ���� ���� �ڽ�� ���ÿ� ������ �� �־
����ȭ������ ��ü �뿪��� Ȱ����� ���ϴ� �����μ���
��ǻ�Ϳ����� ����� ������ �� �ִ�. ����� ���캼 �κ�����,
�ſ� ����ȭ�� �������� ����� �ʾƼ� �켱������ ����.</p>
<p>�ֻ�� ����� ����ؼ��� ���� <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code> ���� ������ �ʴ�
��� �̻�̴�. ���� ��� �����Ѵ�.</p>
<h3>accept ����ȭ - ���� �Ѱ�</h3>
<p>��� ���� ����� �������� ������, ����� �Ѱ���
������ ���? ����� ����Ҷ��� ��� �ڽ��
<code>accept(2)</code>���� ����ֱ���� �̷л� ����
������ ����� �ʰ�, �� ������ ����. ���� ����δ�
�տ��� ���� ������ �ʴ� (non-blocking) ������ ���ϴ�
"��ȸ��(spinning)" ��� ���߰� �ִ�. ��κ�� TCP �����
����� ����ϸ� Ŀ��� <code>accept</code>���� ����ִ�
��� �ڽ�� ���쵵�� �����ִ�. ��μ����� �Ѱ��� ����
��� ���ڿ������� ���ư���, ������� Ŀ�ο��� ��ȸ���Ͽ�
����� ������ �߰��ϸ� �ٽ� �� �ܴ�. ���ڿ��� �ڵ忡����
�̷� ��ȸ���� �� �� ������, �и�� �����Ѵ�. ���� ������
������ �ʴ� ���� �����ϰ� ���ϸ� ��̴� ���ʿ��� �ൿ��
�Ͼ��.</p>
<p>���� �츮�� ���� ��Ű���Ŀ��� ����� �Ѱ��� ��쿡��
����ȭ�ϸ� �� "��" ������� �߰��ߴ�. ���� ��� ��κ��
��� �⺻������ ����ȭ�� ����Ѵ�. ���������� (Ŀ�� 2.0.30,
128Mb �� ��� Pentium pro) ������ �� ���� �Ѱ���
����ȭ�ϸ� ��� ��� ��쿡 ���� �ʴ� ��û�� 3% �̸�
�پ����. ���� ����ȭ�� ��� ��� ��� ��û�� 100ms
������ ���ߴ�. �� ������ �Ƹ��� LAN���� ���ϴ� ��
���ἱ������ ��̴�. ����� �Ѱ��� ��� ����ȭ�� ������
������� <code>SINGLE_LISTEN_UNSERIALIZED_ACCEPT</code>��
�����Ѵ�.</p>
<h3>Close ����(lingering)</h3>
<p><a href="http://www.ics.uci.edu/pub/ietf/http/draft-ietf-http-connection-00.txt">
draft-ietf-http-connection-00.txt</a> 8������ �����ϵ��
<strong>�������</strong> �������� �Ƿ���, ���� �� ����
���������� ��� �� �־�� �Ѵ� (TCP ���� �ֹ���̰�,
���� ���� �������̴�). ����� �ٸ� ���������� ���
���������, ����ġ�� 1.2���� ��Ȯ� ����ؿԴ�.</p>
<p>�� ���� �����ϰ� ����ġ�� �߰������ ���� ���н�
�������� ���� ������ ���ߴ�. TCP �Ծ�
<code>FIN_WAIT_2</code>�� Ÿ�Ӿƿ�� �ִٰ� ����� �ʾ����,
�������� �ʾҴ�. Ÿ�Ӿƿ�� ���� �ý��ۿ��� ����ġ 1.2��
���� ����� ����� <code>FIN_WAIT_2</code> ���·� ������.
���� ��� �� ������ ���ۻ簡 �����ϴ� �ֽ� TCP/IP ��ġ��
�����Ͽ� �ذ��� �� �ִ�. ���� ���ۻ簡 ��ġ�� ��ǥ���
�ʴ� ��찡 (<em>��,</em> SunOS4 -- �ҽ� ��̼����� �ִ�
���� ���� ��ġ�� �� �����) �ֱ���� �� ���� ������
�ʱ�� ���ߴ�.</p>
<p>���� �ΰ�����. �ϳ��� ���� �ɼ� <code>SO_LINGER</code>��
����ϴ� ���̴�. ���� ������� ��κ�� TCP/IP �����
�� �ɼ�� �ùٷ� ������ �ʾҴ�. �ùٷ� ����� ���ÿ���
����� (<em>��,</em> ������ 2.0.31) �� ���� ��� ������
�� cpu�� ��ƸԴ´�.</p>
<p>����ġ�� ���� (<code>http_main.c</code>�� �ִ�)
<code>lingering_close</code>��� �Լ��� ����Ѵ�. �� �Լ���
���� ����� ����:</p>
<div class="example"><p><code>
void lingering_close (int s)<br />
{<br />
<span class="indent">
char junk_buffer[2048];<br />
<br />
/* shutdown the sending side */<br />
shutdown (s, 1);<br />
<br />
signal (SIGALRM, lingering_death);<br />
alarm (30);<br />
<br />
for (;;) {<br />
<span class="indent">
select (s for reading, 2 second timeout);<br />
if (error) break;<br />
if (s is ready for reading) {<br />
<span class="indent">
if (read (s, junk_buffer, sizeof (junk_buffer)) <= 0) {<br />
<span class="indent">
break;<br />
</span>
}<br />
/* just toss away whatever is here */<br />
</span>
}<br />
</span>
}<br />
<br />
close (s);<br />
</span>
}
</code></p></div>
<p>�� �ڵ�� ���� ����� �� CPU�� ��������, �������
����� ���� �ʿ��ϴ�. HTTP/1.1�� �� �θ� ����� ��� ����
�����Ѵٸ�(persistent), ���� �� ��� ���� ��û��
ó���ϸ鼭 ���� ��̴�. �����ϰԵ�
<code>NO_LINGCLOSE</code>�� �����Ͽ� �� ���� ������
��� �� �����, ����� ����� �ʴ´�. Ư� HTTP/1.1
������� <span class="transnote">(<em>����;</em> ������ ���¿��� ���� ��ٸ���
�ʰ� ���� ��û�� ������ ��)</span> ����������
<code>lingering_close</code>�� �ʼ����̴� (���� <a href="http://www.w3.org/Protocols/HTTP/Performance/Pipeline.html">
������� ����� �� ���������</a> ����ϱ� �ٶ� ��̴�).</p>
<h3>Scoreboard ���</h3>
<p>����ġ�� �θ�� �ڽ�� scoreboard��� ��� ���� ����
����Ѵ�. �̻���δ� scoreboard�� ������ ����ؾ�
�Ѵ�. �츮 ����ڰ� �ش� �ü���� ������ �� �ְų� ����
��� ���� ��� ��� ���� ������ ����Ͽ� ����Ѵ�.
������� ��ũ�� �ִ� ���� ����Ͽ� ����Ѵ�. ��ũ��
�ִ� ���� ������ �ŷڵ��� ������ (��ɵ� �� ����).
<code>src/main/conf.h</code> ��Ͽ��� ����ϴ� ��Ű���ĸ�
ã�Ƽ� <code>USE_MMAP_SCOREBOARD</code> Ȥ��
<code>USE_SHMGET_SCOREBOARD</code>��� Ȯ���Ѵ�. ���
�ϳ��� (���� �Բ� ����� <code>HAVE_MMAP</code>�̳�
<code>HAVE_SHMGET</code>�� ����) �����ϸ� ������ �ڵ带
����Ѵ�. �ý���� �ٸ� ������ ������ ����Ѵٸ�
<code>src/main/http_main.c</code> ���� �����Ͽ� ����ġ����
������ ����� �� �ֵ��� ��(hook)�� �߰��϶�. (����
��ġ�� �츮���� �����ֱ� �ٶ���.)</p>
<div class="note">���� ����: ����ġ�� ������ ������ ����ġ 1.2 ��������
������ ����ϱ� ����ߴ�. ���������� �ʱ� ����ġ
������ ������ �ŷڵ��� ������ �����̴�.</div>
<h3>DYNAMIC_MODULE_LIMIT</h3>
<p>��� �������� �о���� �ʴ´ٸ� (������ ����̶�
����� ��̱��� �� ��� �д´ٸ� �Ƹ��� ��� ��������
�о���� ��� ��̴�), ������ ������Ҷ�
<code>-DDYNAMIC_MODULE_LIMIT=0</code>�� �߰��Ѵ�. ����
��� �������� �о��̱��� �Ҵ��ϴ� �� �����Ѵ�.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="trace" id="trace">�η�: �ý���ȣ�� ���� �ڼ�� �м��ϱ�</a></h2>
<p>����� Solaris 8���� worker MPM�� ����� ����ġ 2.0.38��
�ý���ȣ�� ���(trace)�̴�. �Ʒ� ��ɾ ����Ͽ� ����
���:</p>
<div class="example"><p><code>
truss -l -p <var>httpd_child_pid</var>.
</code></p></div>
<p><code>-l</code> �ɼ�� ����ϸ� truss�� �ý���ȣ��
�ϴ� LWP (lightweight process, �淮�� ��μ���--Solaris��
Ŀ�μ��� ������) ID�� ���� ����Ѵ�.</p>
<p>�ٸ� �ý��ۿ��� <code>strace</code>, <code>ktrace</code>,
<code>par</code> ���� �ý���ȣ�� ��� ������ �ִ�. ����
���ϴ�.</p>
<p>Ŭ��̾�Ʈ�� ���������� ũ�Ⱑ 10KB�� ���� ���� ��û�Ѵ�.
������ ���� ��û��� �ʰų� ��������ϴ� ��û�� �� ���
���� �ſ� �ٸ��� (���δ� �ſ� �˾ƺ��� ����).</p>
<div class="example"><pre>/67: accept(3, 0x00200BEC, 0x00200C0C, 1) (sleeping...)
/67: accept(3, 0x00200BEC, 0x00200C0C, 1) = 9</pre></div>
<p>������ ������(listener) �����尡 LWP #67���� ������
�� �� �ִ�.</p>
<div class="note"><code>accept(2)</code> ����ȭ�� ������ ����� �ָ��϶�.
���� �Ʈ�� ��ٸ����ʴ� ��� �� �÷���� worker MPM��
�⺻������ ����ȭ��� ��� accept�� ����Ѵ�.</div>
<div class="example"><pre>/65: lwp_park(0x00000000, 0) = 0
/67: lwp_unpark(65, 1) = 0</pre></div>
<p>���� �Ƶ�̰�(accept) ������ �������
worker �����带 ������ ��û�� ó���ϰ� �Ѵ�. �Ʒ� ��Ͽ���
��û�� ó���ϴ� worker �����尡 LWP #65��� �� �� �ִ�.</p>
<div class="example"><pre>/65: getsockname(9, 0x00200BA4, 0x00200BC4, 1) = 0</pre></div>
<p>����ȣ��Ʈ�� ����ϱ��� ����ġ�� ���� �Ƶ��
����(local) ���� �ּҸ� �˾ƾ� �Ѵ�. (����ȣ��Ʈ�� ������
�ʰų� <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code>
���þ ��ϵ�ī�� �ּҸ� ������ ��� ��� ��) ���� ���
�� ȣ�� ���� �� �ִ�. ���� ��� �̷� ���ȭ �۾���
�ȵ�ִ�. </p>
<div class="example"><pre>/65: brk(0x002170E8) = 0
/65: brk(0x002190E8) = 0</pre></div>
<p><code>brk(2)</code> ȣ�� �(heap)���� �� �Ҵ��Ѵ�.
�������� ��κ�� ��û ó���� ��ü ��
�Ҵ��(<code>apr_pool</code>�� <code>apr_bucket_alloc</code>)��
����ϱ���� �ý���ȣ�� ��Ͽ��� �� �ý���ȣ�� ���Ⱑ
�幰��. �� ��Ͽ��� �������� �����ڸ��� ��ü �� �Ҵ�ڰ�
����� ���� ����� <code>malloc(3)</code>�� ȣ���Ѵ�.</p>
<div class="example"><pre>/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</pre></div>
<p>��� worker ������� Ŭ��̾�Ʈ�� ����(��ϱ��� 9)��
������(non-blocking) ���·� �ٲ۴�. <code>setsockopt(2)</code>��
<code>getsockopt(2)</code> ȣ�� Solaris�� libc�� ���Ͽ�
���� <code>fcntl(2)</code>�� ��� ó���ϴ�� �����ش�.</p>
<div class="example"><pre>/65: read(9, " G E T / 1 0 k . h t m".., 8000) = 97</pre></div>
<p>worker ������� Ŭ��̾�Ʈ�� ���� ��û�� �д´�.</p>
<div class="example"><pre>/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</pre></div>
<p>������ ������ <code>Options FollowSymLinks</code>��
<code>AllowOverride None</code>�̴�. ���� ��û�� ��ϰ���
�� ���丮�� ���� <code>lstat(2)</code>�ϰų�
<code>.htaccess</code> ���� �˻��� �ʿ䰡 ����. ����
�˻��ϱ���, 1) ���� �ִ��, 2) ���丮�� �ƴ� �Ϲ������,
<code>stat(2)</code> ȣ�⸸ �ϸ� �ȴ�.</p>
<div class="example"><pre>/65: sendfilev(0, 9, 0x00200F90, 2, 0xFAF7B53C) = 10269</pre></div>
<p>�� ��� �������� �ѹ��� <code>sendfilev(2)</code> �ý���ȣ���
HTTP �������� ��û�� ���� ������ �� �ִ�. Sendfile �������δ�
�ü������ �ٸ���. �ٸ� �ý���̶�� <code>sendfile(2)</code>��
ȣ���ϱ� ���� ���� �������� <code>write(2)</code>��
<code>writev(2)</code> ȣ�� �Ѵ�.</p>
<div class="example"><pre>/65: write(4, " 1 2 7 . 0 . 0 . 1 - ".., 78) = 78</pre></div>
<p><code>write(2)</code> ȣ�� ���ٷα�(access log)�� ��û��
����Ѵ�. �� ��Ͽ� <code>time(2)</code> ȣ��� ������ �ָ��϶�.
����ġ 1.3�� �� ����ġ 2.0�� �ð��� �˱���
<code>gettimeofday(3)</code>�� ����Ѵ�.
<code>gettimeofday</code>�� ���ȭ�� �������� Solaris ����
��� �ü�������� �Ϲ���� �ý���ȣ�� �δ�� ����.</p>
<div class="example"><pre>/65: shutdown(9, 1, 1) = 0
/65: poll(0xFAF7B980, 1, 2000) = 1
/65: read(9, 0xFAF7BC20, 512) = 0
/65: close(9) = 0</pre></div>
<p>worker ������� ���� �����ݱ�(lingering close)�Ѵ�.</p>
<div class="example"><pre>/65: close(10) = 0
/65: lwp_park(0x00000000, 0) (sleeping...)</pre></div>
<p>���������� worker ������� ��� ������ ���� �ݰ�,
������(listener) �����尡 �ٸ� ���� �Ҵ��� ����
�����Ѵ�.</p>
<div class="example"><pre>/67: accept(3, 0x001FEB74, 0x001FEB94, 1) (sleeping...)</pre></div>
<p>���� ������ ������� ���� (��� worker�� �۾���̸�
������ �����带 ���ߴ� worker MPM�� �帧���� ��ɿ� ����)
worker �����忡 �Ҵ���ڸ��� �ٸ� ���� �Ƶ�� �� �ִ�.
�� ��Ͽ��� ������ �����, worker �����尡 ��� ��� ����
ó���ϴ� ���� ��� <code>accept(2)</code>�� (��û�� �ſ�
���� ��� ��) �Ͼ �� �ִ�.</p>
</div></div>
<div class="bottomlang">
<p><span>������ ���: </span><a href="../en/misc/perf-tuning.html" hreflang="en" rel="alternate" title="English"> en </a> |
<a href="../fr/misc/perf-tuning.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
<a href="../ko/misc/perf-tuning.html" title="Korean"> ko </a> |
<a href="../tr/misc/perf-tuning.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
</div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Comments</a></h2><div class="warning"><strong>Notice:</strong><br />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 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 Libera.chat, or sent to our <a href="https://httpd.apache.org/lists.html">mailing lists</a>.</div>
<script type="text/javascript"><!--//--><![CDATA[//><!--
var comments_shortname = 'httpd';
var comments_identifier = 'http://httpd.apache.org/docs/2.4/misc/perf-tuning.html';
(function(w, d) {
if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
d.write('<div id="comments_thread"><\/div>');
var s = d.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
(d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
}
else {
d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
}
})(window, document);
//--><!]]></script></div><div id="footer">
<p class="apache">Copyright 2024 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/">���</a> | <a href="../mod/directives.html">���þ��</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">���</a> | <a href="../sitemap.html">���Ʈ��</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
prettyPrint();
}
//--><!]]></script>
</body></html>