summaryrefslogtreecommitdiffstats
path: root/_build/static/archives/extend/attachments/20130915/c9a5340e/attachment.html
diff options
context:
space:
mode:
Diffstat (limited to '_build/static/archives/extend/attachments/20130915/c9a5340e/attachment.html')
-rw-r--r--_build/static/archives/extend/attachments/20130915/c9a5340e/attachment.html10
1 files changed, 10 insertions, 0 deletions
diff --git a/_build/static/archives/extend/attachments/20130915/c9a5340e/attachment.html b/_build/static/archives/extend/attachments/20130915/c9a5340e/attachment.html
new file mode 100644
index 00000000..da26eac3
--- /dev/null
+++ b/_build/static/archives/extend/attachments/20130915/c9a5340e/attachment.html
@@ -0,0 +1,10 @@
+<tt>
+&lt;div&nbsp;dir=&quot;ltr&quot;&gt;Hi,&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I&#39;ve&nbsp;started&nbsp;work&nbsp;on&nbsp;a&nbsp;project&nbsp;using&nbsp;Clojure,&nbsp;but&nbsp;I&nbsp;was&nbsp;wondering&nbsp;whether&nbsp;(and&nbsp;secretly&nbsp;hoping&nbsp;that)&nbsp;Erlang&nbsp;would&nbsp;be&nbsp;a&nbsp;better&nbsp;fit,&nbsp;so&nbsp;I&#39;ve&nbsp;been&nbsp;load&nbsp;testing&nbsp;a&nbsp;few&nbsp;web&nbsp;server&nbsp;frameworks.&nbsp;I&#39;m&nbsp;particularly&nbsp;interested&nbsp;in&nbsp;how&nbsp;the&nbsp;server&nbsp;can&nbsp;handle&nbsp;a&nbsp;large&nbsp;number&nbsp;of&nbsp;concurrent&nbsp;WebSocket&nbsp;connections,&nbsp;and&nbsp;the&nbsp;test&nbsp;I&#39;ve&nbsp;been&nbsp;running&nbsp;is&nbsp;similar&nbsp;to&nbsp;Eric&nbsp;Moritz&#39;s&nbsp;[1].&lt;/div&gt;<br>
+&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I&#39;ve&nbsp;setup&nbsp;a&nbsp;simple&nbsp;Cowboy&nbsp;&#39;echo&#39;&nbsp;server&nbsp;running&nbsp;on&nbsp;an&nbsp;EC2&nbsp;instance&nbsp;(m1.medium,&nbsp;as&nbsp;in&nbsp;Eric&#39;s&nbsp;test)&nbsp;which&nbsp;could&nbsp;comfortably&nbsp;handle&nbsp;10k&nbsp;concurrent&nbsp;WebSocket&nbsp;requests&nbsp;(as&nbsp;in&nbsp;Eric&#39;s&nbsp;results),&nbsp;while&nbsp;echoing&nbsp;about&nbsp;200&nbsp;messages/second.&nbsp;The&nbsp;CPU&nbsp;usage&nbsp;of&nbsp;the&nbsp;VM&nbsp;at&nbsp;this&nbsp;point&nbsp;is&nbsp;about&nbsp;99%,&nbsp;but&nbsp;the&nbsp;server&nbsp;continues&nbsp;to&nbsp;handle&nbsp;up&nbsp;to&nbsp;40k&nbsp;concurrent&nbsp;connections&nbsp;with&nbsp;a&nbsp;consistent&nbsp;average&nbsp;response&nbsp;time&nbsp;(&lt;30ms).&nbsp;Pushing&nbsp;the&nbsp;test&nbsp;beyond&nbsp;this&nbsp;number&nbsp;results&nbsp;in&nbsp;a&nbsp;spike&nbsp;in&nbsp;response&nbsp;times&nbsp;and&nbsp;lots&nbsp;of&nbsp;connection&nbsp;timeouts.&lt;/div&gt;<br>
+&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;40k&nbsp;connections&nbsp;seems&nbsp;pretty&nbsp;good,&nbsp;but&nbsp;when&nbsp;comparing&nbsp;this&nbsp;to&nbsp;the&nbsp;same&nbsp;test&nbsp;against&nbsp;a&nbsp;couple&nbsp;of&nbsp;Clojure/JVM-based&nbsp;frameworks&nbsp;(specifically&nbsp;Aleph/Netty&nbsp;and&nbsp;http-kit)&nbsp;I&nbsp;find&nbsp;I&nbsp;can&nbsp;get&nbsp;higher&nbsp;numbers&nbsp;of&nbsp;concurrent&nbsp;connections&nbsp;with&nbsp;slightly&nbsp;better&nbsp;average&nbsp;response&nbsp;times&nbsp;(100k&nbsp;connections,&nbsp;&lt;10ms&nbsp;response&nbsp;time)&nbsp;using&nbsp;much&nbsp;less&nbsp;CPU&nbsp;(~20%).&nbsp;In&nbsp;fact,&nbsp;memory&nbsp;seems&nbsp;to&nbsp;be&nbsp;the&nbsp;limiting&nbsp;factor.&lt;/div&gt;<br>
+&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;So&nbsp;I&nbsp;have&nbsp;two&nbsp;questions:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;1)&nbsp;Should&nbsp;I&nbsp;be&nbsp;concerned&nbsp;about&nbsp;the&nbsp;CPU&nbsp;usage&nbsp;in&nbsp;the&nbsp;Erlang/Cowboy&nbsp;test?&nbsp;I&nbsp;have&nbsp;limited&nbsp;experience&nbsp;with&nbsp;Erlang&nbsp;so&nbsp;far,&nbsp;but&nbsp;100%&nbsp;CPU&nbsp;feels&nbsp;like&nbsp;a&nbsp;bad&nbsp;thing.&lt;/div&gt;<br>
+&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;2)&nbsp;Is&nbsp;there&nbsp;any&nbsp;way&nbsp;to&nbsp;increase&nbsp;the&nbsp;performance&nbsp;of&nbsp;the&nbsp;cowboy&nbsp;server?&nbsp;Are&nbsp;there&nbsp;any&nbsp;Erlang&nbsp;VM&nbsp;parameters&nbsp;I&nbsp;can&nbsp;change?&nbsp;The&nbsp;fact&nbsp;that&nbsp;the&nbsp;Clojure/JVM&nbsp;tests&nbsp;(on&nbsp;the&nbsp;same&nbsp;machine)&nbsp;have&nbsp;managed&nbsp;to&nbsp;get&nbsp;to&nbsp;100k&nbsp;connections&nbsp;suggests&nbsp;that&nbsp;the&nbsp;limitation&nbsp;isn&#39;t&nbsp;being&nbsp;imposed&nbsp;by&nbsp;the&nbsp;operating&nbsp;system&nbsp;(I&#39;ve&nbsp;applied&nbsp;changes&nbsp;various&nbsp;changes&nbsp;to&nbsp;sysctl&nbsp;and&nbsp;ulimit).&lt;/div&gt;<br>
+&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;(Perhaps&nbsp;an&nbsp;echo&nbsp;server&nbsp;isn&#39;t&nbsp;the&nbsp;best&nbsp;way&nbsp;to&nbsp;compare&nbsp;HTTP&nbsp;servers,&nbsp;but&nbsp;it&nbsp;feels&nbsp;like&nbsp;a&nbsp;good&nbsp;starting&nbsp;point.)&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Thanks&nbsp;for&nbsp;any&nbsp;help.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;[1]�&lt;a&nbsp;href=&quot;https://github.com/ericmoritz/wsdemo/blob/results-v1/results.md&quot;&gt;https://github.com/ericmoritz/wsdemo/blob/results-v1/results.md&lt;/a&gt;&nbsp;-&nbsp;the&nbsp;GitHub&nbsp;repo&nbsp;actually&nbsp;contains&nbsp;code&nbsp;for&nbsp;an&nbsp;Aleph&nbsp;server,&nbsp;but&nbsp;results&nbsp;from&nbsp;this&nbsp;aren&#39;t&nbsp;included&nbsp;in&nbsp;the&nbsp;summary&nbsp;here.&lt;br&nbsp;clear=&quot;all&quot;&gt;<br>
+&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;<br>
+
+</tt>