<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>myRuby.net: &#47805;&#44536;&#47120; &#53364;&#47084;&#49828;&#53552;&#44032; &#54596;&#50836;&#54620; &#51060;&#50976;</title>
    <link>http://myruby.net/articles/2007/06/21/why-mongrel-cluster</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Blog.authored_by :deepblue</description>
    <item>
      <title>&#47805;&#44536;&#47120; &#53364;&#47084;&#49828;&#53552;&#44032; &#54596;&#50836;&#54620; &#51060;&#50976;</title>
      <description>&lt;p&gt;&#47112;&#51068;&#49828; &#50528;&#54540;&#47532;&#52992;&#51060;&#49496;&#51012; &#44060;&#48156;/&#48176;&#54252;&#54624; &#46412; &#44032;&#51109; &#47566;&#51060; &#49324;&#50857;&#46104;&#45716; &#49436;&#48260;&#44032; &lt;a href="http://mongrel.rubyforge.org/" class="external" title="&#47805;&#44536;&#47120;(mongrel)"&gt;&#47805;&#44536;&#47120;(mongrel)&lt;/a&gt;&#51060;&#45796;. &#47805;&#44536;&#47120;&#51060; &#45208;&#50724;&#44592; &#51204;&#50640;&#45716; &#44060;&#48156; &#54872;&#44221;&#50640;&#49436;&#45716; Webrick(&#49692;&#49688; &#47336;&#48708; HTTP &#49436;&#48260;)&#51012; &#49324;&#50857;&#54616;&#44256;, &#48176;&#54252; &#54872;&#44221;&#50640;&#49436;&#45716; FastCGI(&#46608;&#45716; SCGI)&#47484; &#51600;&#44200; &#49324;&#50857;&#54664;&#50632;&#45716;&#45936;, &#49549;&#46020;&#50752; &#50504;&#51221;&#49457; &#52769;&#47732;&#50640;&#49436; &#47928;&#51228;&#44032; &#47566;&#50520;&#45796;. &#47805;&#44536;&#47120;&#51008; &#44396;&#49464;&#51452; &#44057;&#50520;&#45796;.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&#47805;&#44536;&#47120;&#51008; &#47112;&#51068;&#49828; &#51204;&#50857;&#51060; &#50500;&#45772; &#51068;&#48152;&#51201;&#51064; HTTP &#49436;&#48260; &#54532;&#47196;&#44536;&#47016;&#51060;&#45796;.&amp;nbsp;&#54616;&#51648;&#47564; &#49892;&#51228; &#48176;&#54252; &#49324;&#47168;&#46308;&#51012; &#48372;&#47732; &#44845; &#47805;&#44536;&#47120;&#51012; &#46263;&#45800;(backend)&#50640; &#46160;&#44256; &#50526;&#50640;&#45716; &#51068;&#48152;&#51201;&#51064; &#50937;&#49436;&#48260;(&#50500;&#54028;&#52824;&#45208; Nginx&#44057;&#51008;)&#47484; &#46164;&#45796;. &#44536; &#51060;&#50976;&#44032; &#47960;&#44620;? &#52395; &#48264;&#51704; &#51060;&#50976;&#45716; &#47805;&#44536;&#47120;&#51032; &#51221;&#51201; &#54028;&#51068; &#52376;&#47532; &#45733;&#47141;&#51060; &#44592;&#51316;&#51032; &#50937;&#49436;&#48260; &#54532;&#47196;&#44536;&#47016;&#48372;&#45796; &#46504;&#50612;&#51648;&#44592; &#46412;&#47928;&#51060;&#45796;. &#44536;&#47000;&#49436; &#46972;&#50864;&#54021; &#53944;&#47533;(rewrite)&#47484; &#51060;&#50857;&#54644; &#51221;&#51201; &#54028;&#51068;&#51008; &#44592;&#51316; &#50937;&#49436;&#48260;&#44032; &#52376;&#47532;&#54616;&#46020;&#47197; &#54616;&#44256;, &#46041;&#51201; &#50836;&#52397;(&#47112;&#51068;&#49828;)&#47564;&#51012; &#47805;&#44536;&#47120;&#47196; &#51204;&#45804;&#54616;&#44172; &#54620;&#45796;.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&#51060;&#48372;&#45796; &#44540;&#48376;&#51201;&#51064; &#51060;&#50976;&#45716; &#47805;&#44536;&#47120; &#53364;&#47084;&#49828;&#53552;, &#51593; &#47805;&#44536;&#47120; &#54532;&#47196;&#49464;&#49828;&#47484; &#50668;&#47084;&#44060; &#46916;&#50864;&#44256; &#51060;&#46308;&#51012; &#54400;(pool)&#47196; &#54876;&#50857;&#54616;&#44592; &#50948;&#54644;&#49436;&#51060;&#45796;. &#50668;&#44592;&#49436; &#44417;&#44552;&#51613;&#51060; &#49373;&#44596;&#45796;. &#50780; &#50976;&#46021; &#47805;&#44536;&#47120;&#47564; &#53364;&#47084;&#49828;&#53552;&#44032; &#54596;&#49688;&#52376;&#47100; &#50668;&#44200;&#51656;&#44620;? &#47805;&#44536;&#47120;&#51060; &#46041;&#49884; &#49324;&#50857;&#51088;&#47484; &#52376;&#47532;&#54616;&#51648; &#47803;&#54616;&#45208;? &#44536;&#47111;&#51648; &#50506;&#45796;. &#47805;&#44536;&#47120;&#51008; &#50836;&#52397;&#45817; &#54620; &#49828;&#47112;&#46300;(&#47336;&#48708;&#51032; &#44536;&#47536;&#50416;&#47112;&#46300;&#46972;&#45716; &#47928;&#51228;&#45716; &#51080;&#51648;&#47564;)&#47484; &#49324;&#50857;&#54616;&#47728;, &#50756;&#51204;&#54620; &#49828;&#47112;&#46300; &#50504;&#51204;&#49457;(Thread Safety)&#47484; &#48372;&#51109;&#54620;&#45796;. &#44536;&#47111;&#45796;&#47732; &#50780;? &#45813;&#51008; &#47112;&#51068;&#49828; &#47928;&#54868;&#50640; &#51080;&#45796;. &#47112;&#51068;&#49828; &#52488;&#52285;&#44592;&#48512;&#53552; &#50668;&#47084; &#48512;&#48516;&#50640;&#49436; &#45796;&#51473; &#49828;&#47112;&#46300;&#47484; &#44256;&#47140;&#54616;&#51648; &#50506;&#50500;&#50772;&#44592; &#46412;&#47928;&#51060;&#45796;. &#45824;&#48512;&#48516;&#51032; &#54872;&#44221;&#50640;&#49436; &#45800;&#51068; &#49828;&#47112;&#46300;&#47196; &#52649;&#48516;&#54664;&#45796;&#44256;&#45208; &#54624;&#44620;?&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;ActionController::Base &#53364;&#47000;&#49828;&#50752; ActiveRecord::Base&#50640; &#47784;&#46160; allow_concurrency&#46972;&#45716; &#49549;&#49457;&#51060; &#51221;&#51032;&#46104;&#50612; &#51080;&#44256;, &#51060; &#49549;&#49457;&#51032; &#44592;&#48376;&#44050;&#51008; &#44144;&#51667;(false)&#51060;&#45796;. base.rb&#47484; &#48372;&#47732; &#50500;&#47000;&#50752; &#44057;&#51008; &#53076;&#46300;&#47484; &#52286;&#51012; &#49688; &#51080;&#45796;.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;ol class="code" style=""&gt;
&lt;li&gt;# Action Pack and Active Record are by default thread-safe,&lt;br /&gt;
# but many applications may not be.&lt;/li&gt;
&lt;li&gt;# Turned off by default.&lt;br /&gt;
@@allow_concurrency = false&lt;br /&gt;
cattr_accessor :allow_concurrency&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&#51060; &#44050;&#51012; true&#47196; &#48148;&#44984;&#45716; &#44163;&#51004;&#47196; &#47112;&#51068;&#49828;&#51032; &#49828;&#47112;&#46300; &#50504;&#51204;&#49457;&#51012; &#48372;&#51109;&#48155;&#51012; &#49688; &#51080;&#51012;&#44620;? &#45208;&#45716; &#50500;&#45768;&#46972;&#44256; &#49373;&#44033;&#54620;&#45796;. &#51060;&#50976;&#45716; &#47336;&#48708; &#52964;&#48036;&#45768;&#54000;&#44032; &#49828;&#47112;&#46300; &#50504;&#51204;&#49457;&#50640; &#51061;&#49689;&#54616;&#51648; &#50506;&#44256;(&#50528;&#54540;&#47532;&#52992;&#51060;&#49496;&#50640;&#49436; &#49324;&#50857;&#54616;&#45716; &#50612;&#46500; &#53076;&#46300;&#50640;&#49436; &#47928;&#51228;&#44032; &#51068;&#50612;&#45216;&#51648; &#47784;&#47480;&#45796;), &#45796;&#51473; &#49828;&#47112;&#46300; &#54872;&#44221;&#50640;&#49436; &#52649;&#48516;&#54620; &#53580;&#49828;&#53944;&#46020; &#51060;&#47336;&#50612;&#51648;&#51648; &#50506;&#50520;&#44592; &#46412;&#47928;&#51060;&#45796;. &#54620;&#47560;&#46356;&#47196; &#44160;&#51613;&#46104;&#51648; &#50506;&#50520;&#45796;&#45716; &#51060;&#50976;&#51060;&#45796;. &#47805;&#44536;&#47120; &#54648;&#46308;&#47084;&#47484; &#51060;&#50857;&#54644; &#51089;&#51008; &#54532;&#47196;&#44536;&#47016;&#51012; &#52376;&#51020;&#48512;&#53552; &#45796;&#51473; &#49828;&#47112;&#46300;&#47484; &#44256;&#47140;&#54644;&#49436; &#47564;&#46304;&#45796;&#47732; &#44032;&#45733;&#54616;&#44192;&#51648;&#47564;, &#44536;&#47111;&#51648; &#50506;&#51008; &#44221;&#50864; &#50948; &#50741;&#49496;&#51012; &#53020;&#45716; &#44163;&#51012; &#52628;&#52380;&#54616;&#51648; &#50506;&#45716;&#45796;.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&#51060;&#47088; &#51060;&#50976;&#47196; &#47805;&#44536;&#47120;&#51032; &#47112;&#51068;&#49828; &#54648;&#46308;&#47084;&#50640;&#49436; &#46356;&#49828;&#54056;&#52376; &#51204;&#54980;&#47196; &#48036;&#53469;&#49828;(Mutex)&#47484; &#51060;&#50857;&#54620; &#46041;&#44592;&#54868;&#47484; &#54665;&#54616;&#44256; &#51080;&#45796;. &#50500;&#47000;&#45716; mongrel-1.0.1/lib/mongrel/rails.rb &#53076;&#46300;&#51032; &#51068;&#48512;&#51060;&#45796;.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;ol class="code"&gt;
&lt;li&gt;module Mongrel::Rails&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;class RailsHandler &amp;lt; Mongrel::HttpHandler&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;def process(request, response)&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;# &amp;#8230;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;@guard.synchronize {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;@active_request_path = request.params[&amp;#8220;PATH_INFO&amp;#8221;]&lt;/li&gt;
&lt;li&gt;Dispatcher.dispatch(&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;cgi,&lt;/li&gt;
&lt;li&gt;ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS,&lt;/li&gt;
&lt;li&gt;response.body)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;/li&gt;
&lt;li&gt;@active&lt;em&gt;request&lt;/em&gt;path = nil&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;# &amp;#8230;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;end&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;end&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;end&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&#51060;&#51228; &#47805;&#44536;&#47120;&#51008; &#54620;&#48264;&#50640; &#54616;&#45208;&#51032; &#50836;&#52397;&#47564;&#51012; &#52376;&#47532;&#54624; &#49688; &#51080;&#45796;. &#46384;&#46972;&#49436; &#46041;&#49884; &#49324;&#50857;&#51088;&#47484; &#52376;&#47532;&#54616;&#44592; &#50948;&#54644;&#49436;&#45716; &#44845; &#47805;&#44536;&#47120; &#53364;&#47084;&#49828;&#53552;&#44032; &#54596;&#50836;&#54616;&#45796;. &#44536;&#47000;&#49436; &#44060;&#46308;&#51012; &#45796;&#47336;&#45716; &#45733;&#47141;&#51060; &#47112;&#51068;&#49828; &#49436;&#48708;&#49828; &#50868;&#50689;&#50640;&#49436; &#54645;&#49900; &#50669;&#47049;&#51060; &#46104;&#50632;&#45796;.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&#54620;&#48264;&#50640; &#54616;&#45208;&#51032; &#50836;&#52397;&#47564;&#51012; &#52376;&#47532;&#54624; &#49688; &#51080;&#44592; &#46412;&#47928;&#50640; &#47112;&#51068;&#49828; &#50528;&#54540;&#47532;&#52992;&#51060;&#49496;&#51060; &#50836;&#52397;&#51012; &#52376;&#47532;&#54616;&#45716; &#51204;&#47029;&#46020; &#49688;&#51221;&#46104;&#50612;&#50556; &#54620;&#45796;. &#51593;, &amp;#8216;&#48736;&#47480; &#51025;&#45813; &#49884;&#44036;&amp;#8217;&#51012; &#48372;&#51109;&#54624; &#54596;&#50836;&#44032; &#51080;&#45796;. &#46384;&#46972;&#49436; &#50724;&#47000;&#44152;&#47540; &#47564;&#54620; &#51089;&#50629;&#51060;&#46972;&#47732; &lt;a href="http://backgroundrb.rubyforge.org/" title="BackgrounDRB" class="external"&gt;BackgrounDRB&lt;/a&gt; &#46321;&#51032; &#48169;&#48277;&#51012; &#51060;&#50857;&#54644; &#48177;&#44536;&#46972;&#50868;&#46300;&#47196; &#52376;&#47532;&#54616;&#44256;, &#49345;&#53468;&#47564;&#51012; &#48152;&#54872;&#54644;&#50556; &#54620;&#45796;. &#50620;&#54607; &#48372;&#44592;&#50640;&#45716; &#48264;&#44144;&#47084;&#50868; &#51089;&#50629;&#51068; &#49688; &#51080;&#51648;&#47564;, &#49324;&#50857;&#51088;&#51032; &#50836;&#52397;&#50640; &#48744;&#47532; &#51025;&#45813;&#54620;&#45796;&#45716; &#47732;&#50640;&#49436; &#51339;&#51012; &#49688;&#46020; &#51080;&#44192;&#45796;.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&#52280;&#44256; &#51088;&#47308;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://mongrel.rubyforge.org/faq.html" class="external" title="http://mongrel.rubyforge.org/faq.html"&gt;http://mongrel.rubyforge.org/faq.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://deepblue.springnote.com/pages/search?q=http%3A%2F%2Fdel.icio.us%2Fbyblue%2Fmongrel&amp;amp;parent_id=320445" class="wiki" title="http://del.icio.us/byblue/mongrel"&gt;&lt;/a&gt;&lt;a href="http://del.icio.us/byblue/mongrel" class="external" title="http://del.icio.us/byblue/mongrel"&gt;http://del.icio.us/byblue/mongrel&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p align="right"&gt;&#51060; &#44544;&#51008; &lt;a href="http://deepblue.springnote.com/pages/320445"&gt;&#49828;&#54532;&#47553;&#45432;&#53944;&lt;/a&gt;&#50640;&#49436; &#51089;&#49457;&#46104;&#50632;&#49845;&#45768;&#45796;.&lt;/p&gt;</description>
      <pubDate>Thu, 21 Jun 2007 02:07:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:ff97c37d-fe4d-4bb4-99e1-a4923600da0f</guid>
      <author>deepblue</author>
      <link>http://myruby.net/articles/2007/06/21/why-mongrel-cluster</link>
      <category>development</category>
    </item>
  </channel>
</rss>
