
æ°é±éåãç§ã¯Goã§HTTPãµãŒããŒã®æãåçŽãªäŸãåãäžãããã®ããã©ãŒãã³ã¹ã枬å®ããããšã«ããŸããã ããããç§ã¯å€§èã«ãã§ããã¯ã¹ãåããåããã¹ãã§é転ããåæºããã çµæã¯Elixir / ErlangïŒGoã®å Žå45133 RPSãPhoenixã®å Žåã®ã¿3065 RPSïŒãæ¯æããŠããŸããã§ããã ãããããã§ããã¯ã¹ã¯é£ããã§ãã ã·ã³ãã«ããšéçºããžãã¯ããGoäžã«ãããã®ãšå°ãªããšãã»ãŒåçã§ããå¿
èŠããããŸãããã¹ãããå Žå-ã/ããšãã®ãã³ãã©ãŒã ã«ãŠããŒã€ + ãã©ã°ãœãªã¥ãŒã·ã§ã³ã¯è«ççãªäŸãã®ããã«æããŸãããã/ãããã£ããããŠå¿çããã«ãŒã¿ãŒããããŸãã çµæã¯æ®ºãããŸãã-Elixir / Erlangã¯åã³é
ããªãããšã倿ããŸããïŒ
Golang sea@sea:~/go$ wrk -t10 -c100 -d10s http://127.0.0.1:4000/ ... 452793 requests in 10.03s, 58.30MB read Requests/sec: 45133.28 Transfer/sec: 5.81MB
elixir cowboy plug sea@sea:~/http_test$ wrk -t10 -c100 -d10s http://127.0.0.1:4000/ ... 184703 requests in 10.02s, 28.57MB read Requests/sec: 18441.79 Transfer/sec: 2.85MB
çãæ¹ã¯ïŒ 2é±éãç§ã¯ç ãããã»ãšãã©é£ã¹ãŸããã§ããã ç§ãä¿¡ããŠããããããã¹ãŠã®ããšïŒå®ç§ãªvmã¢ãŒã©ã³ãFPãã°ãªãŒã³ããã»ã¹ã¯ãèžã¿ã«ããããçããããé¢šã«æŸãããŸããã ã·ã§ãã¯ããå°ãé¢ããŠãèœã¡çããŠã錻ãããããªãããç§ã¯åé¡ãäœã§ããããçè§£ããããšã«ããŸããã
æ¥ãã§ãã人ã®ããã«ãç§ã¯ããã«çããŸãããã®çç±ã¯ãç§ããã¹ãããããŸãæ£ç¢ºã§ã¯ãªãæ¡ä»¶ã«ãã£ããµãŒããŒãšãã¹ãããã°ã©ã ã¯ãVirtualBOXå
ã®åãä»®æ³ãã·ã³ã§å®è¡ããã2ã€ã®ã³ã¢ã匷調衚瀺ãããŠããŸãã
ããããã®ãããªãŸãã¯åæ§ã®æ¡ä»¶ã§äœæ¥ããå¿
èŠãããããšã倿ããå ŽåãGoã¯æ¬åœã«è¯ãçµæã瀺ããŸã
ããã«éçã«ã³ã³ãã€ã«ãããããã°ã©ã ã¯ãã€ã³ã¿ãŒããªã¿ãŒãåããä»®æ³ãã·ã³ãããé«éã§ãªããã°ãªããŸãã
ãã¹ãã³ã³ãã¥ãŒã¿ãŒ
ç§ããã¹ãããæ¹æ³ã ç§ã¯ãWindows 7 x64ãi7ã8 Gb RAMããã»ããµãŒãããã³LinuxãæèŒããã©ãããããã§äœæ¥ããŠããŸããç§ã®å ŽåãUbuntu 16ã§ã¯VirtualBOXå
ã§å®è¡ããŠããŸãã 圌女ã®ããã«ã1 Gb RAMãš2ã³ã¢ãå²ãåœãŠãŸããã ãã®ä»®æ³ãã·ã³å
ã§HTTPãµãŒããŒãèµ·åããåããã·ã³äžã§abãšwrkã®ãã¹ããéå§ããŸãã ã ãã®ç¶æ³ã§ã¯ãåããã·ã³ã«ãµãŒããŒãšãã¹ãã®äž¡æ¹ãããŒããããŠããããšãããããŸãã ãããã¯ãŒã¯ãä»ããããŒã¿äŒéã¯ããããã¯ãŒã¯ãä»ããäŒéããªããããå¶éã課ããŸããã
ãã®çµæãå®å
šã«æåããŸããã
go vs cowboy wrk -t10 -c100 -d10s httpïŒ//127.0.0.1-00-00000/ Go: sea@sea:~/go$ wrk -t10 -c100 -d10s http://127.0.0.1:4000/ Running 10s test @ http://127.0.0.1:4000/ 10 threads and 100 connections Thread Stats Avg Stdev Max +/- Stdev Latency 65.18ms 109.44ms 1.05s 86.48% Req/Sec 4.60k 5.87k 25.40k 86.85% 452793 requests in 10.03s, 58.30MB read Requests/sec: 45133.28 Transfer/sec: 5.81MB Elixir cowboy: sea@sea:~/http_test$ wrk -t10 -c100 -d10s http://127.0.0.1:4000/ Running 10s test @ http://127.0.0.1:4000/ 10 threads and 100 connections Thread Stats Avg Stdev Max +/- Stdev Latency 8.94ms 11.38ms 123.57ms 86.53% Req/Sec 1.85k 669.61 4.99k 71.70% 184703 requests in 10.02s, 28.57MB read Requests/sec: 18441.79 Transfer/sec: 2.85MB
go vs cowboy wrk -t10 -c1000 -d10s httpïŒ//127.0.0.1-00-00000/ Go: sea@sea:~/go$ wrk -t10 -c1000 -d10s http://127.0.0.1:4000/ Running 10s test @ http://127.0.0.1:4000/ 10 threads and 1000 connections Thread Stats Avg Stdev Max +/- Stdev Latency 61.16ms 231.88ms 2.00s 92.97% Req/Sec 7.85k 8.65k 26.13k 79.49% 474853 requests in 10.09s, 61.14MB read Socket errors: connect 0, read 0, write 0, timeout 1329 Requests/sec: 47079.39 Transfer/sec: 6.06MB Elixir cowboy: sea@sea:~/http_test$ wrk -t10 -c1000 -d10s http://127.0.0.1:4000/ Running 10s test @ http://127.0.0.1:4000/ 10 threads and 1000 connections Thread Stats Avg Stdev Max +/- Stdev Latency 123.00ms 303.25ms 1.94s 88.91% Req/Sec 2.06k 1.85k 11.26k 71.80% 173220 requests in 10.09s, 26.79MB read Socket errors: connect 0, read 0, write 0, timeout 43 Requests/sec: 17166.03 Transfer/sec: 2.65MB
Erlang / Elixirãé²åŸ¡ããããã«èšããããšã¯ãã¿ã€ã ã¢ãŠãã®æ°ãå°ãªãããšã ãã§ãã HiPEã§ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããŠããããã©ãŒãã³ã¹ã¯åäžããŸããã§ããã ãããããŸãæåã«
ãã¹ãç°å¢v.2
ä»®æ³ãã·ã³ã§ã¯ãªããã¹ã¿ã³ãã¢ãã³ã·ã¹ãã ã§ãã¹ãããæ¹ãè¯ãããšãæããã«ãªããŸããã ãã¹ãããhttpãµãŒããŒããã匱ããã·ã³ã«é
眮ããããšããå§ãããŸãããã¹ããã·ã³ã¯ããµãŒããŒãå®å
šã«ãã£ã±ãã«ããŠæè¡çãªèœåã®éçã«å°éã§ããããã«ããã匷åã«ããå¿
èŠããããŸãã å¶éã«é¥ããªãããã«ãé«éãããã¯ãŒã¯ã䜿çšããããšããå§ãããŸãã
ãã®ããããã¹ããã·ã³ãšããŠãã©ããããããi7ã«æ®ãããšã«ããŸããã ãããŠããµãŒããŒãšããŠãOrange PI OneãèŠãããããšã«ããŸããã ãããã¯ãŒã¯äžã§ã®äº€æé床ãå¶éããããããããã©ãŒãã³ã¹ãå®è¡ããããšããå§ãããŸãã ãªã¬ã³ãžPI Oneã¯ã100 Mbpsã®é床ã§UTPãä»ããŠã«ãŒã¿ãŒã«æ¥ç¶ãããŠããŸãã

補é å
ã®Webãµã€ãã§ã¯ãOrange PI Oneã®åšæ³¢æ°ã1200 MHzã®A7 Quad Coreããã»ããµãæèŒããŠããããšã瀺ãããŸããã ããããéçºè
ã®ãšã©ãŒã«ãããã·ã¹ãã å
šäœããªãŒããŒããŒãã®ã«ãŒãã«ã¢ã©ãŒãã«æ©ãŸãããŠãããããããã»ããµã®é床ã600 MHzã«åºå®ããŸããã ã ãããããã¯ããã«é¢çœãã§ãããã ã·ã¹ãã ã¯å®å®ããŠåäœããŸãããäœãããªããŠããå¹³åè² è·ã¯2.00ã2.01ã2.05ã§ãïŒããã¯å¥åŠã§ãïŒã Ubuntu 14ãã€ã³ã¹ããŒã«ãããŠãããã¡ã¢ãªã¯512 MBãªã®ã§ã念ã®ããã«ãã¹ã¯ããã»ã¯ã·ã§ã³ãUSBãã©ãã·ã¥ãã©ã€ãäžã®ãã¡ã€ã«ã«æ¥ç¶ããŸããã

ãããžã§ã¯ããGoã«ãElixirãOrange PIã«è»¢éããããã«ãGithubã§2ã€ã®ãããžã§ã¯ããããã«äœæããŸããã
https://github.com/UA3MQJ/go-small-http
https://github.com/UA3MQJ/elx-small-http-cowboy
ãªã¬ã³ãžPIã®Golangã¯åé¡ãªãé
ä¿¡ãããŸããã ããããErlang / Elixirã䜿çšãããšãå°ãäœæ¥ããªããã°ãªããŸããã§ããã ãããããã®äœæ¥ã¯é·ãéè¡ãããŠããŸããã ãããžã§ã¯ãã®çµã¿ç«ãŠãšç«ã¡äžãã¯ã¹ã ãŒãºã«é²ã¿ãŸããã ãã¹ããšããŠãWindowsã§åäœããããŒã«ãåããŸãããããã¯Jmeterã§ãã
æåã®ãã¹ãã§ã¯ã次ã®ãã©ã¡ãŒã¿ãŒã䜿çšããŸãã

圌ãã¯...åãçããããšã瀺ããŸããïŒ
RPS-ç§»åïŒ

RPS-ãšãªã¯ãµãŒïŒ

å¿çæé-ç§»åïŒ

å¿çæé-ãšãªã¯ãµãŒïŒ

è峿·±ã芳å¯
Goã¯åžžã«1ã€ã®ã³ã¢ã§åäœããŸãïŒ

ãšãªã¯ãµãŒãå
šå¡ãšäžåºŠã«ïŒ

ãã®çé¢ãã¹ãã§ã¯ããšãªã¯ãµãŒãåã¡ãŸããã
go vs cowboy wrk -t10 -c100 -d10s httpïŒ//192.168.1.16-00-00000/ Go: sea@sea:~$ wrk -t10 -c100 -d10s http://192.168.1.16:4000/ Running 10s test @ http://192.168.1.16:4000/ 10 threads and 100 connections Thread Stats Avg Stdev Max +/- Stdev Latency 19.04ms 7.70ms 81.05ms 70.53% Req/Sec 531.09 78.11 828.00 77.10% 52940 requests in 10.02s, 6.82MB read Requests/sec: 5282.81 Transfer/sec: 696.46KB Elixir cowboy: sea@sea:~$ wrk -t10 -c100 -d10s http://192.168.1.16:4000/ Running 10s test @ http://192.168.1.16:4000/ 10 threads and 100 connections Thread Stats Avg Stdev Max +/- Stdev Latency 14.27ms 10.54ms 153.60ms 95.81% Req/Sec 753.20 103.47 1.09k 80.40% 74574 requests in 10.04s, 11.53MB read Requests/sec: 7429.95 Transfer/sec: 1.15MB
go vs cowboy wrk -t100 -c100 -d10s httpïŒ//192.168.1.16-00-00000/ Go: sea@sea:~$ wrk -t100 -c100 -d10s http://192.168.1.16:4000/ Running 10s test @ http://192.168.1.16:4000/ 100 threads and 100 connections Thread Stats Avg Stdev Max +/- Stdev Latency 60.14ms 137.57ms 1.52s 94.28% Req/Sec 38.45 20.62 130.00 60.30% 34384 requests in 10.10s, 4.43MB read Requests/sec: 3404.19 Transfer/sec: 448.79KB Elixir cowboy: sea@sea:~$ wrk -t100 -c100 -d10s http://192.168.1.16:4000/ Running 10s test @ http://192.168.1.16:4000/ 100 threads and 100 connections Thread Stats Avg Stdev Max +/- Stdev Latency 13.32ms 5.25ms 90.37ms 73.31% Req/Sec 75.51 22.04 191.00 67.49% 75878 requests in 10.10s, 11.74MB read Requests/sec: 7512.75 Transfer/sec: 1.16MB
go vs cowboy wrk -t100 -c500 -d10s httpïŒ//192.168.1.16-00-00000/ Go: sea@sea:~$ wrk -t100 -c500 -d10s http://192.168.1.16:4000/ Running 10s test @ http://192.168.1.16:4000/ 100 threads and 500 connections Thread Stats Avg Stdev Max +/- Stdev Latency 93.81ms 18.63ms 328.78ms 84.98% Req/Sec 53.13 11.12 101.00 77.60% 52819 requests in 10.10s, 6.80MB read Requests/sec: 5232.01 Transfer/sec: 689.77KB Elixir cowboy: sea@sea:~$ wrk -t100 -c500 -d10s http://192.168.1.16:4000/ Running 10s test @ http://192.168.1.16:4000/ 100 threads and 500 connections Thread Stats Avg Stdev Max +/- Stdev Latency 93.24ms 96.80ms 1.26s 94.47% Req/Sec 62.95 23.33 292.00 79.87% 61646 requests in 10.10s, 9.53MB read Requests/sec: 6106.38 Transfer/sec: 0.94MB
ãããã HiPEã䜿çšããŠerlangãµãŒããŒãèµ·åãããšã©ããªããŸããïŒ
ãããè¡ãã«ã¯ããŸããã®æ¹æ³ãã°ãŒã°ã«ã§æ€çŽ¢ããå¿
èŠããããŸãã Erlangã§ãããè¡ãæ¹æ³ã¯æããã§ãã ããããç§ã¯Elixirã«ã€ããŠGoogleã§æ€çŽ¢ããå¿
èŠããããŸããã ããã«ãHiPEããã¹ããã人ã¯ãHiPEã§æšæºçãªãã®ãããããã«é
ããªãããšãå€ããšæžããŠããŸãã ããã¯ãHiPEãªãã§äŸåé¢ä¿ãæ§ç¯ã§ããïŒãããŠåãã¢ãŒãã§æ§ç¯ããå¿
èŠãããïŒãšããäºå®ã«å ããŠãã³ã³ããã¹ãã¹ã€ããã®ã·ã¹ãã ã«ãŠã³ã¿ãŒãè©äŸ¡ããå¿
èŠãããããã§ããå€ãã®ã¹ã€ãããããå Žåãããã¯ããã©ãŒãã³ã¹ã«æªåœ±é¿ãäžããæªãçµæã瀺ããŸãã
HiPEã³ã³ãã€ã©ãŒã§ãããžã§ã¯ãã®äŸåé¢ä¿ãæ§ç¯ãã
$ ERL_COMPILER_OPTIONS="[native,{hipe, [verbose, o3]}]" mix deps.compile --force
ãããžã§ã¯ãããŸãšãã
$ ERL_COMPILER_OPTIONS="[native,{hipe, [verbose, o3]}]" mix compile
ãã¹ãã§ã¯ãHiPEãæé·ããªãããšã瀺ããŸããããéã«æªãçµæã瀺ããŠããŸãã
ã«ãŠããŒã€vsã«ãŠããŒã€ïŒHiPEïŒwrk -t100 -c500 -d10s httpïŒ//192.168.1.16-00-00000/ Elixir cowboy: sea@sea:~$ wrk -t100 -c500 -d10s http://192.168.1.16:4000/ Running 10s test @ http://192.168.1.16:4000/ 100 threads and 500 connections Thread Stats Avg Stdev Max +/- Stdev Latency 93.24ms 96.80ms 1.26s 94.47% Req/Sec 62.95 23.33 292.00 79.87% 61646 requests in 10.10s, 9.53MB read Requests/sec: 6106.38 Transfer/sec: 0.94MB Elixir cowboy (HiPE): sea@sea:~$ wrk -t100 -c500 -d10s http://192.168.1.16:4000/ Running 10s test @ http://192.168.1.16:4000/ 100 threads and 500 connections Thread Stats Avg Stdev Max +/- Stdev Latency 111.84ms 160.53ms 1.89s 95.42% Req/Sec 59.19 29.68 383.00 81.63% 56425 requests in 10.10s, 8.72MB read Socket errors: connect 0, read 0, write 0, timeout 34 Requests/sec: 5587.39 Transfer/sec: 0.86MB
é襲
Goã1ã€ã®ããã»ããµã§åäœããã®ã¯ãªãã§ããïŒ GoããŸã 1ã€ã®ããã»ããµã§åäœããŠãããšãã«ãå€ãããŒãžã§ã³ã«ããã©ã«ãã§ä»å±ããGoã®ããã±ãŒãžã§ããããïŒ ããã§ãïŒ
sea@OrangePI:~$ go version go version go1.2.1 linux/arm
æŽæ°ããŠç¹°ãè¿ãå¿
èŠããããŸãïŒ armv7çšã«ã¢ã»ã³ãã«ãããGoããŒãžã§ã³1.7.3ã¯ã httpsïŒ //github.com/hypriot/golang-armbuilds/releasesã§èŠã€ãããŸããã
ãã®ããŒãžã§ã³ã§æ§ç¯ãããGolangãµãŒããŒã¯ã4ã€ã®ã«ãŒãã«ãã¹ãŠããã§ã«ããŒãããŠããŸãã

ã«ãŠããŒã€vs Go1.7.4 wrk -t100 -c500 -d10s httpïŒ//192.168.1.16-00-00000/ Elixir cowboy: sea@sea:~$ wrk -t100 -c500 -d10s http://192.168.1.16:4000/ Running 10s test @ http://192.168.1.16:4000/ 100 threads and 500 connections Thread Stats Avg Stdev Max +/- Stdev Latency 93.24ms 96.80ms 1.26s 94.47% Req/Sec 62.95 23.33 292.00 79.87% 61646 requests in 10.10s, 9.53MB read Requests/sec: 6106.38 Transfer/sec: 0.94MB sea@sea:~/tender_pro_bots$ wrk -t100 -c500 -d10s http://192.168.1.16:4000/ Running 10s test @ http://192.168.1.16:4000/ 100 threads and 500 connections Thread Stats Avg Stdev Max +/- Stdev Latency 70.17ms 57.84ms 754.39ms 90.61% Req/Sec 84.09 31.01 151.00 73.20% 78787 requests in 10.10s, 10.14MB read Requests/sec: 7800.43 Transfer/sec: 1.00MB
Goãå
ã«è·³èºããŠããŸãïŒ
Go and fasthttp
Golangã®ããŒãžã§ã³ã®å€æŽãæšå¥šããåŸã fasthttpãšgccgoããã¢ããã€ã¹ãåããŸããã æåã®ãã®ããå§ããŸãããã
https://github.com/UA3MQJ/go-small-fasthttp
ããŠã³ããŒããèŠãŠã¿ãŸãããã 4ã€ã®ã³ã¢ãã¹ãŠãããŒããããŠããããšãããããŸããã100ïŒ
ã§ã¯ãããŸããã

ãã
go vs cowboy wrk -t10 -c100 -d10s httpïŒ//192.168.1.16-00-00000/ Go fasthttp: sea@sea:~/tender_pro_bots$ wrk -t10 -c100 -d10s http://192.168.1.16:4000/ Running 10s test @ http://192.168.1.16:4000/ 10 threads and 100 connections Thread Stats Avg Stdev Max +/- Stdev Latency 43.56ms 85.95ms 738.51ms 89.71% Req/Sec 676.18 351.12 1.17k 70.80% 67045 requests in 10.04s, 9.78MB read Requests/sec: 6678.71 Transfer/sec: 0.97MB Elixir cowboy: sea@sea:~$ wrk -t10 -c100 -d10s http://192.168.1.16:4000/ Running 10s test @ http://192.168.1.16:4000/ 10 threads and 100 connections Thread Stats Avg Stdev Max +/- Stdev Latency 14.27ms 10.54ms 153.60ms 95.81% Req/Sec 753.20 103.47 1.09k 80.40% 74574 requests in 10.04s, 11.53MB read Requests/sec: 7429.95 Transfer/sec: 1.15MB
go vs cowboy wrk -t100 -c100 -d10s httpïŒ//192.168.1.16-00-00000/ Go fasthttp: sea@sea:~/tender_pro_bots$ wrk -t100 -c100 -d10s http://192.168.1.16:4000/ Running 10s test @ http://192.168.1.16:4000/ 100 threads and 100 connections Thread Stats Avg Stdev Max +/- Stdev Latency 8.95ms 3.08ms 42.23ms 75.69% Req/Sec 112.61 16.65 320.00 70.18% 112561 requests in 10.10s, 16.42MB read Requests/sec: 11144.39 Transfer/sec: 1.63MB Elixir cowboy: sea@sea:~$ wrk -t100 -c100 -d10s http://192.168.1.16:4000/ Running 10s test @ http://192.168.1.16:4000/ 100 threads and 100 connections Thread Stats Avg Stdev Max +/- Stdev Latency 13.32ms 5.25ms 90.37ms 73.31% Req/Sec 75.51 22.04 191.00 67.49% 75878 requests in 10.10s, 11.74MB read Requests/sec: 7512.75 Transfer/sec: 1.16MB
go vs cowboy wrk -t100 -c500 -d10s httpïŒ//192.168.1.16-00-00000/ Go fasthttp: sea@sea:~/tender_pro_bots$ wrk -t100 -c500 -d10s http://192.168.1.16:4000/ Running 10s test @ http://192.168.1.16:4000/ 100 threads and 500 connections Thread Stats Avg Stdev Max +/- Stdev Latency 46.44ms 10.69ms 327.50ms 93.21% Req/Sec 107.71 15.10 170.00 82.06% 107349 requests in 10.10s, 15.66MB read Requests/sec: 10627.97 Transfer/sec: 1.55MB Elixir cowboy: sea@sea:~$ wrk -t100 -c500 -d10s http://192.168.1.16:4000/ Running 10s test @ http://192.168.1.16:4000/ 100 threads and 500 connections Thread Stats Avg Stdev Max +/- Stdev Latency 93.24ms 96.80ms 1.26s 94.47% Req/Sec 62.95 23.33 292.00 79.87% 61646 requests in 10.10s, 9.53MB read Requests/sec: 6106.38 Transfer/sec: 0.94MB
fasthttpã䜿çšããGolangã¯ãèªåãããéãããšãªã¯ãµãŒã«ãŠããŒã€ãããé«éã§ããã
枬å®ã®æ£ç¢ºãã«ã€ããŠ
ããæ³šæããããã«ãã«ãŠããŒã€ãšGo-ã¯ç°ãªããã€ãæ°ã§å¿çããããšãããããŸãã ããã¯ãçºè¡ããHTTPããããŒãç°ãªãããã§ãã
çºè¡ã«è¡ãïŒ
HTTP/1.1 200 OK Date: Thu, 30 Mar 2017 14:37:08 GMT Content-Length: 18 Content-Type: text/plain; charset=utf-8
ã«ãŠããŒã€ã®åé¡ïŒ
HTTP/1.1 200 OK server: Cowboy date: Thu, 30 Mar 2017 14:38:17 GMT content-length: 18 cache-control: max-age=0, private, must-revalidate
ã芧ã®ãšãããã«ãŠããŒã€ã¯ãserverïŒCowboyããšããè¡ã远å ããŸããããã¯ãã«ãŠããŒã€ã®å Žåã«è»¢éããããã€ãæ°ã«å¿
ç¶çã«åœ±é¿ããŸãã éä¿¡ãããããŒã¿ã¯ãã以äžã§ãã
æŽæ°ããŸããã BEAMã§epollãæäœãããªãã·ã§ã³ãå«ããã®ãå¿ããŸãã
+ KããŒãæãåºããŠãããnwalkerã«æè¬ããŸãã èµ·åæã«ããã瀺ããŸãïŒ
sea@OrangePI:~/http_tests/elx-small-http-cowboy$ iex --erl '+K true' -S mix Erlang/OTP 19 [erts-8.1] [source] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:true]
ä»åã¯10ç§ã§ã¯ãªãã1åãããŒãããŸãã
ã«ãŠããŒã€vsã«ãŠããŒã€epoll wrk -t100 -c500 -d60s httpïŒ//192.168.1.16-00-00000/ Elixir cowboy: sea@sea:~/tender_pro_bots$ wrk -t100 -c500 -d60s http://192.168.1.16:4000/ Running 1m test @ http://192.168.1.16:4000/ 100 threads and 500 connections Thread Stats Avg Stdev Max +/- Stdev Latency 78.63ms 38.59ms 1.00s 90.17% Req/Sec 65.08 14.19 158.00 54.94% 389764 requests in 1.00m, 60.28MB read Requests/sec: 6485.27 Transfer/sec: 1.00MB Elixir cowboy with epoll: sea@sea:~/tender_pro_bots$ wrk -t100 -c500 -d60s http://192.168.1.16:4000/ Running 1m test @ http://192.168.1.16:4000/ 100 threads and 500 connections Thread Stats Avg Stdev Max +/- Stdev Latency 90.25ms 78.45ms 1.96s 95.36% Req/Sec 59.91 19.71 370.00 64.78% 356572 requests in 1.00m, 55.15MB read Socket errors: connect 0, read 0, write 0, timeout 21 Requests/sec: 5932.94 Transfer/sec: 0.92MB
ããããepollããªã³ã«ããOrangePIã§ã¯ãçµæã¯æªåããŸããã
çµè«
ãããŠã誰ããèªåã§çµè«ãåºããŸãã Go'shniksã¯GoããããŠErlangistsãšElixirsã¯åœŒãã®è£œåãåã¶ã§ãããã 誰ããèªåã®ãŸãŸã«ãªããŸãã Erlangã®æ¯æè
ã¯Goã®é床ã確èªããŸãããGoã®é床ã¯ãæ¡éãã«2åïŒãããã«å°ãªãïŒã§ããããErlangã®ãã¹ãŠã®æ©èœã10åã«å¢ãããŠãæŸæ£ããŸããã§ããã åæã«ãGo'shnikã¯Erlangã«èå³ãæã¡ããã«ãªããé床ãé
ããªãã颿°åããã°ã©ãã³ã°ã®åŠç¿ã§èµ·ãããããã¹ãŠã®å°é£ã«ã€ããŠè³ã«ããŸãã
仿¥ã®äžçã§ã¯ãããã°ã©ããŒã®æéã¯é«äŸ¡ã§ãæã«ã¯æ©åšã®ã³ã¹ããããé«ããªããŸãã ãã¹ãã¯ããçç¶ãã¿ã¹ã¯ã®ãçç¶ãRPSã ãã§ãªããéçºæéãæŽç·Žãšã¡ã³ããã³ã¹ã®è€éãã§ãå¿
èŠã§ãã çµæžçå®çŸå¯èœæ§ã ããããæã«ã¯ããªãã¯æ¬åœã«ãã¹ãŠãdrããããã 銬å ã¡ã¬ãã«ããšåªããäŒç€Ÿã§ããã€ãã®ã¬ãŒã¹ãæé
ããŸãïŒ çŽ æŽãããä¹ãå¿å°ã
