github:http://github.com/brewlin/im-...
- im-cloud builds distributed push middleware based on swoole native collaboration
- Installation and deployment of im-cloud distributed middleware
- IM-cloud <> GOIM distributed middleware concurrent pressure measurement comparison
- Analysis of im-cloud distributed middleware (1) - Communication Protocol
- Analysis of im-cloud distributed middleware (2) - Implementation of cloud node
- Analysis of im-cloud distributed middleware (3) - Implementation of job node
- im-cloud Distributed Middleware Analysis (IV) - logic Node Implementation
System environment
The test environment is ubuntu14 for Windows 8.1 to start virtual box virtual machine deployment
- goim does not need to worry about process configuration, im-cloud testing needs to change worker processes and task processes according to machine configuration. It is best to keep the same number of cpu cores, too large will greatly reduce performance.
goim im-cloud
- GOIM
- im-cloud (referring to goim's native implementation of swoole, self-validated.)
hardware environment
CPU: 4 nucleus cpu MEM: 2G Memory System: Ubunutu 14.04 (64bit)
software environment
Single Node Startup im-cloud: cloud(2 worker processes and 2 subprocesses) Job (2 worker processes, 2 task processes and 1 subprocess) logic(2 worker processes, 2 task processes and 1 subprocess) goim : Comet (single process) Job (single process) Logic (single process)
Evaluation results
c : concurrent Concurrent request n : number Total number of requests ----------------------------------- c:500 | n:2000 | n:5000 | n:20000 im-cloud: 6300 6082 3815 goim : 5377 5540 5894 ----------------------------------- c:1000 | n:20000 im-cloud: 5014 goim : 5950 -----------------------------------
@Concurrent:500 @Number:2000
im-cloud as a whole as high as 6300 QPS GOIM as high as 5300 QPS
im-cloud
Server Software: swoole-http-server Server Hostname: 127.0.0.1 Server Port: 9600 Concurrency Level: 500 Time taken for tests: 0.321 seconds Complete requests: 2000 Failed requests: 0 Total transferred: 354000 bytes Total body sent: 374000 HTML transferred: 58000 bytes Requests per second: 6239.74 [#/sec] (mean) Time per request: 80.131 [ms] (mean) Time per request: 0.160 [ms] (mean, across all concurrent requests) Transfer rate: 1078.55 [Kbytes/sec] received 1139.48 kb/s sent 2218.03 kb/s total Connection Times (ms) min mean[+/-sd] median max Connect: 10 22 5.0 21 35 Processing: 6 33 11.3 30 74 Waiting: 4 25 10.1 24 68 Total: 31 54 11.1 54 98
goim
Document Path: /goim/push/mids?mids=123&operation=1000 Document Length: 23 bytes Concurrency Level: 500 Time taken for tests: 0.372 seconds Complete requests: 2000 Failed requests: 0 Total transferred: 292000 bytes Total body sent: 356000 HTML transferred: 46000 bytes Requests per second: 5377.91 [#/sec] (mean) Time per request: 92.973 [ms] (mean) Time per request: 0.186 [ms] (mean, across all concurrent requests) Transfer rate: 766.77 [Kbytes/sec] received 934.83 kb/s sent 1701.60 kb/s total Connection Times (ms) min mean[+/-sd] median max Connect: 0 14 11.8 11 46 Processing: 17 65 27.7 62 149 Waiting: 16 59 24.1 57 136 Total: 31 79 22.0 75 162
@Concurrent:500 @Number:5000
Up to 6100qps im cloud at 5000 requests
im-cloud
Server Software: swoole-http-server Server Hostname: 127.0.0.1 Server Port: 9600 Document Path: /im/push/mids?mids=123&operation=9&msg=push_mids Document Length: 29 bytes Concurrency Level: 500 Time taken for tests: 0.822 seconds Complete requests: 5000 Failed requests: 0 Total transferred: 885000 bytes Total body sent: 935000 HTML transferred: 145000 bytes Requests per second: 6082.98 [#/sec] (mean) Time per request: 82.196 [ms] (mean) Time per request: 0.164 [ms] (mean, across all concurrent requests) Transfer rate: 1051.45 [Kbytes/sec] received 1110.86 kb/s sent 2162.31 kb/s total
goim
Document Path: /goim/push/mids?mids=123&operation=1000 Document Length: 23 bytes Concurrency Level: 500 Time taken for tests: 0.907 seconds Complete requests: 5000 Failed requests: 0 Total transferred: 730000 bytes Total body sent: 890000 HTML transferred: 115000 bytes Requests per second: 5514.84 [#/sec] (mean) Time per request: 90.664 [ms] (mean) Time per request: 0.181 [ms] (mean, across all concurrent requests) Transfer rate: 786.30 [Kbytes/sec] received 958.63 kb/s sent 1744.93 kb/s total Connection Times (ms) min mean[+/-sd] median max Connect: 0 18 13.4 16 54 Processing: 20 64 25.0 63 143 Waiting: 17 55 20.5 54 117 Total: 35 82 21.3 80 161
@Concurrent:500 @Number:20000
Request 20000 concurrent 500
goim
Document Path: /goim/push/mids?mids=123&operation=1000 Document Length: 23 bytes Concurrency Level: 500 Time taken for tests: 3.393 seconds Complete requests: 20000 Failed requests: 0 Total transferred: 2920000 bytes Total body sent: 3560000 HTML transferred: 460000 bytes Requests per second: 5894.30 [#/sec] (mean) Time per request: 84.828 [ms] (mean) Time per request: 0.170 [ms] (mean, across all concurrent requests) Transfer rate: 840.40 [Kbytes/sec] received 1024.60 kb/s sent 1864.99 kb/s total Connection Times (ms) min mean[+/-sd] median max Connect: 0 30 129.4 10 1025 Processing: 10 50 19.2 47 128 Waiting: 6 42 16.1 40 125 Total: 16 80 131.8 60 1100
im-cloud
Server Software: swoole-http-server Server Hostname: 127.0.0.1 Server Port: 9600 Document Path: /im/push/mids?mids=123&operation=9&msg=push_mids Document Length: 29 bytes Concurrency Level: 500 Time taken for tests: 5.242 seconds Complete requests: 20000 Failed requests: 0 Total transferred: 3540000 bytes Total body sent: 3740000 HTML transferred: 580000 bytes Requests per second: 3815.33 [#/sec] (mean) Time per request: 131.050 [ms] (mean) Time per request: 0.262 [ms] (mean, across all concurrent requests) Transfer rate: 659.49 [Kbytes/sec] received 696.75 kb/s sent 1356.23 kb/s total
@Concurrent:1000 @Number:20000
Request 20000 concurrent 1000
goim
Document Path: /goim/push/mids?mids=123&operation=1000 Document Length: 23 bytes Concurrency Level: 1000 Time taken for tests: 3.361 seconds Complete requests: 20000 Failed requests: 0 Total transferred: 2920000 bytes Total body sent: 3560000 HTML transferred: 460000 bytes Requests per second: 5950.20 [#/sec] (mean) Time per request: 168.061 [ms] (mean) Time per request: 0.168 [ms] (mean, across all concurrent requests) Transfer rate: 848.37 [Kbytes/sec] received 1034.31 kb/s sent 1882.68 kb/s total
im-cloud
Server Software: swoole-http-server Server Hostname: 127.0.0.1 Server Port: 9600 Document Path: /im/push/mids?mids=123&operation=9&msg=push_mids Document Length: 29 bytes Concurrency Level: 500 Time taken for tests: 3.988 seconds Complete requests: 20000 Failed requests: 0 Total transferred: 3540000 bytes Total body sent: 3740000 HTML transferred: 580000 bytes Requests per second: 5014.66 [#/sec] (mean) Time per request: 99.708 [ms] (mean) Time per request: 0.199 [ms] (mean, across all concurrent requests) Transfer rate: 866.79 [Kbytes/sec] received 915.76 kb/s sent 1782.56 kb/s total