summaryrefslogtreecommitdiffstats
path: root/archives/extend/attachments/20130426/b1e8ae7a/attachment.html
blob: 74c43a6167e6c587dc2c156494491b030ce3fbf0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<tt>
Is&nbsp;13.6K/connection&nbsp;considered&nbsp;a&nbsp;lot?&nbsp;Once&nbsp;you&nbsp;start&nbsp;doing&nbsp;SSL,&nbsp;each&nbsp;connection&nbsp;will&nbsp;be&nbsp;about&nbsp;80K,&nbsp;IMHO&nbsp;the&nbsp;most&nbsp;important&nbsp;factor&nbsp;for&nbsp;huge&nbsp;ammount&nbsp;of&nbsp;COMET&nbsp;users&nbsp;is&nbsp;latency,&nbsp;which&nbsp;Cowboy&nbsp;and&nbsp;Erlang&nbsp;do&nbsp;great.&lt;div&gt;&lt;br&gt;&lt;/div&gt;<br>
&lt;div&gt;-rambocoder&lt;br&gt;&lt;br&gt;&lt;div&nbsp;class=&quot;gmail_quote&quot;&gt;On&nbsp;Fri,&nbsp;Apr&nbsp;26,&nbsp;2013&nbsp;at&nbsp;2:11&nbsp;AM,&nbsp;yongboy&nbsp;&lt;span&nbsp;dir=&quot;ltr&quot;&gt;&lt;&lt;a&nbsp;href=&quot;mailto:[email protected]&quot;&nbsp;target=&quot;_blank&quot;&gt;[email protected]&lt;/a&gt;&gt;&lt;/span&gt;&nbsp;wrote:&lt;br&gt;&lt;blockquote&nbsp;class=&quot;gmail_quote&quot;&nbsp;style=&quot;margin:0&nbsp;0&nbsp;0&nbsp;.8ex;border-left:1px&nbsp;#ccc&nbsp;solid;padding-left:1ex&quot;&gt;<br>
&lt;div&nbsp;dir=&quot;ltr&quot;&gt;&lt;div&gt;&lt;div&gt;I&nbsp;have&nbsp;tested&nbsp;one&nbsp;long-hold&nbsp;webapp,&nbsp;when&nbsp;512000&nbsp;user&nbsp;connected,&nbsp;the&nbsp;app&nbsp;used&nbsp;&lt;br&gt;&lt;/div&gt;6801M&nbsp;memory,&nbsp;6801M*1024K&nbsp;/&nbsp;512000&nbsp;=&nbsp;13.6K/Connection.&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Does&nbsp;anyone&nbsp;give&nbsp;me&nbsp;some&nbsp;advice&nbsp;on&nbsp;how&nbsp;to&nbsp;reduce&nbsp;the&nbsp;memory&nbsp;usage&nbsp;per&nbsp;one&nbsp;connection,&nbsp;thanks&nbsp;very&nbsp;much&nbsp;!&lt;br&gt;<br>
<br>
&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;Here&nbsp;is&nbsp;the&nbsp;code&nbsp;snippet:&lt;br&gt;&lt;br&gt;start(_Type,&nbsp;_Args)&nbsp;-&gt;&lt;br&gt;�������&nbsp;Dispatch&nbsp;=&nbsp;cowboy_router:compile([&lt;br&gt;�����������&nbsp;{&#39;_&#39;,&nbsp;[{&#39;_&#39;,&nbsp;htmlfile_handler,&nbsp;[]}]}&lt;br&gt;�������&nbsp;]),&lt;br&gt;�������&nbsp;cowboy:start_http(my_http_listener,&nbsp;100,&lt;br&gt;<br>
<br>
�����������&nbsp;[{port,&nbsp;8000},&nbsp;{max_connections,&nbsp;infinity}],&lt;br&gt;�����������&nbsp;[{env,&nbsp;[{dispatch,&nbsp;Dispatch}]}]&lt;br&gt;�������&nbsp;),&lt;br&gt;�������&nbsp;count_server:start(),&lt;br&gt;�������&nbsp;htmlfilesimple_sup:start_link().&lt;br&gt;&lt;br&gt;......&lt;br&gt;&lt;br&gt;-module(htmlfile_handler).&lt;br&gt;<br>
<br>
-behaviour(cowboy_loop_handler).&lt;br&gt;-export([init/3,&nbsp;info/3,&nbsp;terminate/3]).&lt;br&gt;-define(HEARBEAT_TIMEOUT,&nbsp;20*1000).&lt;br&gt;-record(status,&nbsp;{count=0}).&lt;br&gt;&lt;br&gt;init(_Any,&nbsp;Req,&nbsp;State)&nbsp;-&gt;&lt;br&gt;�������&nbsp;NowCount&nbsp;=&nbsp;count_server:welcome(),&lt;br&gt;<br>
<br>
�������&nbsp;io:format(&quot;online&nbsp;user&nbsp;~p&nbsp;:))~n&quot;,&nbsp;[NowCount]),&lt;br&gt;&lt;br&gt;�������&nbsp;output_first(Req),&lt;br&gt;�������&nbsp;Req2&nbsp;=&nbsp;cowboy_req:compact(Req),&lt;br&gt;�������&nbsp;{loop,&nbsp;Req2,&nbsp;State,&nbsp;hibernate}.&lt;br&gt;&lt;br&gt;%%&nbsp;POST/Short&nbsp;Request&lt;br&gt;info(_Any,&nbsp;Req,&nbsp;State)&nbsp;-&gt;&lt;br&gt;<br>
<br>
�������&nbsp;{loop,&nbsp;Req,&nbsp;State,&nbsp;hibernate}.&lt;br&gt;&lt;br&gt;output_first(Req)&nbsp;-&gt;&lt;br&gt;�������&nbsp;{ok,&nbsp;Reply}&nbsp;=&nbsp;cowboy_req:chunked_reply(200,&nbsp;[{&lt;&lt;&quot;Content-Type&quot;&gt;&gt;,&nbsp;&lt;&lt;&quot;text/html;&nbsp;charset=utf-8&quot;&gt;&gt;},&lt;br&gt;<br>
<br>
����������������������������������������������������������������&nbsp;{&lt;&lt;&quot;Connection&quot;&gt;&gt;,&nbsp;&lt;&lt;&quot;keep-alive&quot;&gt;&gt;}],&nbsp;Req),&lt;br&gt;�������&nbsp;cowboy_req:chunk(&lt;&lt;&quot;&lt;html&gt;&lt;body&gt;&lt;script&gt;var&nbsp;_&nbsp;=&nbsp;function&nbsp;(msg)&nbsp;{&nbsp;parent.s._(msg,&nbsp;document);&nbsp;};&lt;/script&gt;�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������&nbsp;&quot;&gt;&gt;,&lt;br&gt;<br>
<br>
���������������������������������������������������������������&nbsp;Reply),&lt;br&gt;�������&nbsp;cowboy_req:chunk(gen_output(&quot;1::&quot;),&nbsp;Reply).&lt;br&gt;&lt;br&gt;gen_output(String)&nbsp;-&gt;&lt;br&gt;�������&nbsp;DescList&nbsp;=&nbsp;io_lib:format(&quot;&lt;script&gt;_(&#39;~s&#39;);&lt;/script&gt;&quot;,&nbsp;[String]),&lt;br&gt;<br>
<br>
�������&nbsp;list_to_binary(DescList).&lt;br&gt;&lt;br&gt;terminate(Reason,&nbsp;_Req,&nbsp;_State)&nbsp;-&gt;&lt;br&gt;�������&nbsp;NowCount&nbsp;=&nbsp;count_server:bye(),&lt;br&gt;�������&nbsp;io:format(&quot;offline&nbsp;user&nbsp;~p&nbsp;:((&nbsp;~n&quot;,&nbsp;[NowCount]).&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;<br>
&lt;br&gt;_______________________________________________&lt;br&gt;<br>
Extend&nbsp;mailing&nbsp;list&lt;br&gt;<br>
&lt;a&nbsp;href=&quot;mailto:[email protected]&quot;&gt;[email protected]&lt;/a&gt;&lt;br&gt;<br>
&lt;a&nbsp;href=&quot;http://lists.ninenines.eu:81/listinfo/extend&quot;&nbsp;target=&quot;_blank&quot;&gt;http://lists.ninenines.eu:81/listinfo/extend&lt;/a&gt;&lt;br&gt;<br>
&lt;br&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;<br>

</tt>