一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

使用四種框架分別實(shí)現(xiàn)百萬(wàn)websocket常連接的服務(wù)器 | 鳥(niǎo)窩

 huitu_灰兔 2017-11-17

目錄 [?]

事實(shí)上,最近我又增加了幾個(gè)框架,現(xiàn)在包括 Netty, Undertow, Jetty, Spray, Vert.x, Grizzly 和 Node.js七種框架。
測(cè)試數(shù)據(jù)可以看下一篇文章: 七種WebSocket框架的性能比較

著名的 C10K 問(wèn)題提出的時(shí)候, 正是 2001 年。這篇文章可以說(shuō)是高性能服務(wù)器開(kāi)發(fā)的一個(gè)標(biāo)志性文檔,它討論的就是單機(jī)為1萬(wàn)個(gè)連接提供服務(wù)這個(gè)問(wèn)題,當(dāng)時(shí)因?yàn)橛布蛙浖南拗?,單機(jī)1萬(wàn)還是一個(gè)非常值得挑戰(zhàn)的目標(biāo)。但是時(shí)光荏苒,隨著硬件和軟件的飛速發(fā)展,單機(jī)1萬(wàn)的目標(biāo)已經(jīng)變成了最簡(jiǎn)單不過(guò)的事情?,F(xiàn)在用任何一種主流語(yǔ)言都能提供單機(jī)1萬(wàn)的并發(fā)處理的能力。所以現(xiàn)在目標(biāo)早已提高了100倍,變成C1000k,也就是一臺(tái)服務(wù)器為100萬(wàn)連接提供服務(wù)。在2010年,2011年已經(jīng)看到一些實(shí)現(xiàn)C1000K的文章了,所以在2015年,實(shí)現(xiàn)C1000K應(yīng)該不是一件困難的事情。

本文是我在實(shí)踐過(guò)程中的記錄,我的目標(biāo)是使用spran-websocket,netty, undertow和node.js四種框架分別實(shí)現(xiàn)C1000K的服務(wù)器,看看這幾個(gè)框架實(shí)現(xiàn)的難以程度,性能如何。開(kāi)發(fā)語(yǔ)言為Scala和Javascript。

當(dāng)然,談起性能,我們還必須談到每秒每個(gè)連接有多少個(gè)請(qǐng)求,也就是RPS數(shù),還要考慮每條消息的大小。
一般來(lái)說(shuō),我們會(huì)選取一個(gè)百分比,比如每秒20%的連接會(huì)收發(fā)消息。我的需求是服務(wù)器只是push,客戶端不會(huì)主動(dòng)發(fā)送消息。 一般每一分鐘會(huì)為這一百萬(wàn)群發(fā)一條消息。
所以實(shí)現(xiàn)的測(cè)試工具每個(gè)client建立60000個(gè)websocket連接,一共二十個(gè)client。實(shí)際不可能使用20臺(tái)機(jī)器,我使用了兩臺(tái)AWS C3.2xlarge(8核16G)服務(wù)器作為客戶端機(jī)。每臺(tái)機(jī)器10個(gè)客戶端。
服務(wù)器每1分鐘群發(fā)一條消息。消息內(nèi)容很簡(jiǎn)單,只是服務(wù)器的當(dāng)天時(shí)間。

最近看到360用Go實(shí)現(xiàn)的消息推送系統(tǒng),下面是他們的數(shù)據(jù):

目前360消息推送系統(tǒng)服務(wù)于50+內(nèi)部產(chǎn)品,萬(wàn)款開(kāi)發(fā)平臺(tái)App,實(shí)時(shí)長(zhǎng)連接數(shù)億量級(jí),日獨(dú)數(shù)十億量級(jí),1分鐘內(nèi)可以實(shí)現(xiàn)億量級(jí)廣播,日下發(fā)峰值百億量級(jí),400臺(tái)物理機(jī),3000多個(gè)實(shí)例分布在9個(gè)獨(dú)立集群中,每個(gè)集群跨國(guó)內(nèi)外近10個(gè)IDC。

四個(gè)服務(wù)器的代碼和Client測(cè)試工具代碼可以在github上下載。 (其實(shí)不止四種框架了,現(xiàn)在包括Netty, Undertow, Jetty, Spray-websocket, Vert.x, Grizzly 和 Node.js 七種框架的實(shí)現(xiàn))

測(cè)試下來(lái)可以看到每種服務(wù)器都能輕松達(dá)到同時(shí)120萬(wàn)的websocket活動(dòng)連接,只是資源占用和事務(wù)處理時(shí)間有差別。120萬(wàn)只是保守?cái)?shù)據(jù),在這么多連接情況下服務(wù)器依然很輕松,下一步我會(huì)進(jìn)行C2000K的測(cè)試。

在測(cè)試之前我們需要對(duì)服務(wù)器/客戶機(jī)的一些參數(shù)進(jìn)行調(diào)優(yōu)。

服務(wù)器的參數(shù)調(diào)優(yōu)

一般會(huì)修改兩個(gè)文件,/etc/sysctl.conf/etc/security/limits.conf, 用來(lái)配置TCP/IP參數(shù)和最大文件描述符。

TCP/IP參數(shù)配置

修改文件/etc/sysctl.conf,配置網(wǎng)絡(luò)參數(shù)。

1
2
3
net.ipv4.tcp_wmem = 4096 87380 4161536
net.ipv4.tcp_rmem = 4096 87380 4161536
net.ipv4.tcp_mem = 786432 2097152 3145728

數(shù)值根據(jù)需求進(jìn)行調(diào)整。更多的參數(shù)可以看以前整理的一篇文章: Linux TCP/IP 協(xié)議棧調(diào)優(yōu) 。
執(zhí)行/sbin/sysctl -p即時(shí)生效。

最大文件描述符

Linux內(nèi)核本身有文件描述符最大值的限制,你可以根據(jù)需要更改:

  • 系統(tǒng)最大打開(kāi)文件描述符數(shù):/proc/sys/fs/file-max
    1. 臨時(shí)性設(shè)置:echo 1000000 > /proc/sys/fs/file-max
    2. 永久設(shè)置:修改/etc/sysctl.conf文件,增加fs.file-max = 1000000
  • 進(jìn)程最大打開(kāi)文件描述符數(shù)
    使用ulimit -n查看當(dāng)前設(shè)置。使用ulimit -n 1000000進(jìn)行臨時(shí)性設(shè)置。
    要想永久生效,你可以修改/etc/security/limits.conf文件,增加下面的行:
1
2
3
4
* hard nofile 1000000
* soft nofile 1000000
root hard nofile 1000000
root soft nofile 1000000

還有一點(diǎn)要注意的就是hard limit不能大于/proc/sys/fs/nr_open,因此有時(shí)你也需要修改nr_open的值。
執(zhí)行echo 2000000 > /proc/sys/fs/nr_open

查看當(dāng)前系統(tǒng)使用的打開(kāi)文件描述符數(shù),可以使用下面的命令:

1
2
[root@localhost ~]# cat /proc/sys/fs/file-nr
1632 0 1513506

其中第一個(gè)數(shù)表示當(dāng)前系統(tǒng)已分配使用的打開(kāi)文件描述符數(shù),第二個(gè)數(shù)為分配后已釋放的(目前已不再使用),第三個(gè)數(shù)等于file-max。

總結(jié)一下:

  • 所有進(jìn)程打開(kāi)的文件描述符數(shù)不能超過(guò)/proc/sys/fs/file-max
  • 單個(gè)進(jìn)程打開(kāi)的文件描述符數(shù)不能超過(guò)user limit中nofile的soft limit
  • nofile的soft limit不能超過(guò)其hard limit
  • nofile的hard limit不能超過(guò)/proc/sys/fs/nr_open

應(yīng)用運(yùn)行時(shí)調(diào)優(yōu)

  1. Java 應(yīng)用內(nèi)存調(diào)優(yōu)
    服務(wù)器使用12G內(nèi)存,吞吐率優(yōu)先的垃圾回收器:
1
JAVA_OPTS='-Xms12G -Xmx12G -Xss1M -XX:+UseParallelGC'
  1. V8引擎
1
node --nouse-idle-notification --expose-gc --max-new-space-size=1024 --max-new-space-size=2048 --max-old-space-size=8192 ./webserver.js

OutOfMemory Killer

如果服務(wù)器本身內(nèi)存不大,比如8G,在不到100萬(wàn)連接的情況下,你的服務(wù)器進(jìn)程有可能出現(xiàn)'Killed'的問(wèn)題。 運(yùn)行dmesg可以看到

1
Out of memory: Kill process 10375 (java) score 59 or sacrifice child

這是Linux的OOM Killer主動(dòng)殺死的。 開(kāi)啟oom-killer的話,在/proc/pid下對(duì)每個(gè)進(jìn)程都會(huì)多出3個(gè)與oom打分調(diào)節(jié)相關(guān)的文件。臨時(shí)對(duì)某個(gè)進(jìn)程可以忽略oom-killer可以使用下面的方式:
echo -17 > /proc/$(pidof java)/oom_adj
解決辦法有多種,可以參看文章最后的參考文章,最好是換一個(gè)內(nèi)存更大的機(jī)器。

客戶端的參數(shù)調(diào)優(yōu)

在一臺(tái)系統(tǒng)上,連接到一個(gè)遠(yuǎn)程服務(wù)時(shí)的本地端口是有限的。根據(jù)TCP/IP協(xié)議,由于端口是16位整數(shù),也就只能是0到 65535,而0到1023是預(yù)留端口,所以能分配的端口只是1024到65534,也就是64511個(gè)。也就是說(shuō),一臺(tái)機(jī)器一個(gè)IP只能創(chuàng)建六萬(wàn)多個(gè)長(zhǎng)連接。
要想達(dá)到更多的客戶端連接,可以用更多的機(jī)器或者網(wǎng)卡,也可以使用虛擬IP來(lái)實(shí)現(xiàn),比如下面的命令增加了19個(gè)IP地址,其中一個(gè)給服務(wù)器用,其它18個(gè)給client,這樣
可以產(chǎn)生18 * 60000 = 1080000個(gè)連接。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
ifconfig eth0:0 192.168.77.10 netmask 255.255.255.0 up
ifconfig eth0:1 192.168.77.11 netmask 255.255.255.0 up
ifconfig eth0:2 192.168.77.12 netmask 255.255.255.0 up
ifconfig eth0:3 192.168.77.13 netmask 255.255.255.0 up
ifconfig eth0:4 192.168.77.14 netmask 255.255.255.0 up
ifconfig eth0:5 192.168.77.15 netmask 255.255.255.0 up
ifconfig eth0:6 192.168.77.16 netmask 255.255.255.0 up
ifconfig eth0:7 192.168.77.17 netmask 255.255.255.0 up
ifconfig eth0:8 192.168.77.18 netmask 255.255.255.0 up
ifconfig eth0:9 192.168.77.19 netmask 255.255.255.0 up
ifconfig eth0:10 192.168.77.20 netmask 255.255.255.0 up
ifconfig eth0:11 192.168.77.21 netmask 255.255.255.0 up
ifconfig eth0:12 192.168.77.22 netmask 255.255.255.0 up
ifconfig eth0:13 192.168.77.23 netmask 255.255.255.0 up
ifconfig eth0:14 192.168.77.24 netmask 255.255.255.0 up
ifconfig eth0:15 192.168.77.25 netmask 255.255.255.0 up
ifconfig eth0:16 192.168.77.26 netmask 255.255.255.0 up
ifconfig eth0:17 192.168.77.27 netmask 255.255.255.0 up
ifconfig eth0:18 192.168.77.28 netmask 255.255.255.0 up

修改/etc/sysctl.conf文件:

1
net.ipv4.ip_local_port_range = 1024 65535

執(zhí)行/sbin/sysctl -p即時(shí)生效。

服務(wù)器測(cè)試

實(shí)際測(cè)試中我使用一臺(tái)AWS C3.4xlarge (16 cores, 32G memory)作為應(yīng)用服務(wù)器,兩臺(tái)AWS C3.2xlarge (8 cores, 16G memory)服務(wù)器作為客戶端。
這兩臺(tái)機(jī)器作為測(cè)試客戶端綽綽有余,每臺(tái)客戶端機(jī)器創(chuàng)建了十個(gè)內(nèi)網(wǎng)虛擬IP, 每個(gè)IP創(chuàng)建60000個(gè)websocket連接。

客戶端配置如下
/etc/sysctl.conf配置

1
2
3
fs.file-max = 2000000
fs.nr_open = 2000000
net.ipv4.ip_local_port_range = 1024 65535

/etc/security/limits.conf配置

1
2
3
4
5
* soft nofile 2000000
* hard nofile 2000000
* soft nproc 2000000
* hard nproc 2000000

服務(wù)端配置如下
/etc/sysctl.conf配置

1
2
3
fs.file-max = 2000000
fs.nr_open = 2000000
net.ipv4.ip_local_port_range = 1024 65535

/etc/security/limits.conf配置

1
2
3
4
5
* soft nofile 2000000
* hard nofile 2000000
* soft nproc 2000000
* hard nproc 2000000

Netty服務(wù)器

  • 建立120萬(wàn)個(gè)連接,不發(fā)送消息,輕輕松松達(dá)到。內(nèi)存還剩14G未用。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[roocolobu ~]# ss -s; free -m
Total: 1200231 (kernel 1200245)
TCP: 1200006 (estab 1200002, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 4
Transport Total IP IPv6
* 1200245 - -
RAW 0 0 0
UDP 1 1 0
TCP 1200006 1200006 0
INET 1200007 1200007 0
FRAG 0 0 0
total used free shared buffers cached
Mem: 30074 15432 14641 0 9 254
-/+ buffers/cache: 15167 14906
Swap: 815 0 815
  • 每分鐘給所有的120萬(wàn)個(gè)websocket發(fā)送一條消息,消息內(nèi)容為當(dāng)前的服務(wù)器的時(shí)間。這里發(fā)送顯示是單線程發(fā)送,服務(wù)器發(fā)送完120萬(wàn)個(gè)總用時(shí)15秒左右。
1
2
02:15:43.307 [pool-1-thread-1] INFO com.colobu.webtest.netty.WebServer$ - send msg to channels for c4453a26-bca6-42b6-b29b-43653767f9fc
02:15:57.190 [pool-1-thread-1] INFO com.colobu.webtest.netty.WebServer$ - sent 1200000 channels for c4453a26-bca6-42b6-b29b-43653767f9fc

發(fā)送時(shí)CPU使用率并不高,網(wǎng)絡(luò)帶寬占用基本在10M左右。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
0 0 100 0 0 0| 0 0 | 60B 540B| 0 0 | 224 440
0 0 100 0 0 0| 0 0 | 60B 870B| 0 0 | 192 382
0 0 100 0 0 0| 0 0 | 59k 74k| 0 0 |2306 2166
2 7 87 0 0 4| 0 0 |4998k 6134k| 0 0 | 169k 140k
1 7 87 0 0 5| 0 0 |4996k 6132k| 0 0 | 174k 140k
1 7 87 0 0 5| 0 0 |4972k 6102k| 0 0 | 176k 140k
1 7 87 0 0 5| 0 0 |5095k 6253k| 0 0 | 178k 142k
2 7 87 0 0 5| 0 0 |5238k 6428k| 0 0 | 179k 144k
1 7 87 0 0 5| 0 24k|4611k 5660k| 0 0 | 166k 129k
1 7 87 0 0 5| 0 0 |5083k 6238k| 0 0 | 175k 142k
1 7 87 0 0 5| 0 0 |5277k 6477k| 0 0 | 179k 146k
1 7 87 0 0 5| 0 0 |5297k 6500k| 0 0 | 179k 146k
1 7 87 0 0 5| 0 0 |5383k 6607k| 0 0 | 180k 148k
1 7 87 0 0 5| 0 0 |5504k 6756k| 0 0 | 184k 152k
1 7 87 0 0 5| 0 48k|5584k 6854k| 0 0 | 183k 152k
1 7 87 0 0 5| 0 0 |5585k 6855k| 0 0 | 183k 153k
1 7 87 0 0 5| 0 0 |5589k 6859k| 0 0 | 184k 153k
1 5 91 0 0 3| 0 0 |4073k 4999k| 0 0 | 135k 110k
0 0 100 0 0 0| 0 32k| 60B 390B| 0 0 |4822 424

客戶端(一共20個(gè),這里選取其中一個(gè)查看它的指標(biāo))。每個(gè)客戶端保持6萬(wàn)個(gè)連接。每個(gè)消息從服務(wù)器發(fā)送到客戶端接收到總用時(shí)平均633毫秒,而且標(biāo)準(zhǔn)差很小,每個(gè)連接用時(shí)差不多。

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
Active WebSockets for eb810c24-8565-43ea-bc27-9a0b2c910ca4
count = 60000
WebSocket Errors for eb810c24-8565-43ea-bc27-9a0b2c910ca4
count = 0
-- Histograms ------------------------------------------------------------------
Message latency for eb810c24-8565-43ea-bc27-9a0b2c910ca4
count = 693831
min = 627
max = 735
mean = 633.06
stddev = 9.61
median = 631.00
75% <= 633.00
95% <= 640.00
98% <= 651.00
99% <= 670.00
99.9% <= 735.00
-- Meters ----------------------------------------------------------------------
Message Rate for eb810c24-8565-43ea-bc27-9a0b2c910ca4
count = 693832
mean rate = 32991.37 events/minute
1-minute rate = 60309.26 events/minute
5-minute rate = 53523.45 events/minute
15-minute rate = 31926.26 events/minute

平均每個(gè)client的RPS = 1000, 總的RPS大約為 20000 requests /seconds.
latency平均值為633 ms,最長(zhǎng)735 ms,最短627ms。

Spray服務(wù)器

  • 建立120萬(wàn)個(gè)連接,不發(fā)送消息,輕輕松松達(dá)到。它的內(nèi)存相對(duì)較高,內(nèi)存還剩7G。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@colobu ~]# ss -s; free -m
Total: 1200234 (kernel 1200251)
TCP: 1200006 (estab 1200002, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 4
Transport Total IP IPv6
* 1200251 - -
RAW 0 0 0
UDP 1 1 0
TCP 1200006 1200006 0
INET 1200007 1200007 0
FRAG 0 0 0
total used free shared buffers cached
Mem: 30074 22371 7703 0 10 259
-/+ buffers/cache: 22100 7973
Swap: 815 0 815
  • 每分鐘給所有的120萬(wàn)個(gè)websocket發(fā)送一條消息,消息內(nèi)容為當(dāng)前的服務(wù)器的時(shí)間。
    CPU使用較高,發(fā)送很快,帶寬可以達(dá)到46M。群發(fā)完一次大約需要8秒左右。
1
2
05/22 04:42:57.569 INFO [ool-2-worker-15] c.c.w.s.WebServer - send msg to workers 。for 8454e7d8-b8ca-4881-912b-6cdf3e6787bf
05/22 04:43:05.279 INFO [ool-2-worker-15] c.c.w.s.WebServer - sent msg to workers for 8454e7d8-b8ca-4881-912b-6cdf3e6787bf. current workers: 1200000
1
2
3
4
5
6
7
8
9
10
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
74 9 14 0 0 3| 0 24k|6330k 20M| 0 0 | 20k 1696
70 23 0 0 0 6| 0 64k| 11M 58M| 0 0 | 18k 2526
75 11 6 0 0 7| 0 0 |9362k 66M| 0 0 | 24k 11k
82 4 8 0 0 6| 0 0 | 11M 35M| 0 0 | 24k 10k
85 0 14 0 0 1| 0 0 |8334k 12M| 0 0 | 44k 415
84 0 15 0 0 1| 0 0 |9109k 16M| 0 0 | 36k 425
81 0 19 0 0 0| 0 24k| 919k 858k| 0 0 | 23k 629
76 0 23 0 0 0| 0 0 | 151k 185k| 0 0 | 18k 1075

客戶端(一共20個(gè),這里選取其中一個(gè)查看它的指標(biāo))。每個(gè)客戶端保持6萬(wàn)個(gè)連接。每個(gè)消息從服務(wù)器發(fā)送到客戶端接收到總用時(shí)平均1412毫秒,而且標(biāo)準(zhǔn)差較大,每個(gè)連接用時(shí)差別較大。

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
Active WebSockets for 6674c9d8-24c6-4e77-9fc0-58afabe7436f
count = 60000
WebSocket Errors for 6674c9d8-24c6-4e77-9fc0-58afabe7436f
count = 0
-- Histograms ------------------------------------------------------------------
Message latency for 6674c9d8-24c6-4e77-9fc0-58afabe7436f
count = 454157
min = 716
max = 9297
mean = 1412.77
stddev = 1102.64
median = 991.00
75% <= 1449.00
95% <= 4136.00
98% <= 4951.00
99% <= 5308.00
99.9% <= 8854.00
-- Meters ----------------------------------------------------------------------
Message Rate for 6674c9d8-24c6-4e77-9fc0-58afabe7436f
count = 454244
mean rate = 18821.51 events/minute
1-minute rate = 67705.18 events/minute
5-minute rate = 49917.79 events/minute
15-minute rate = 24355.57 events/minute

Undertow

  • 建立120萬(wàn)個(gè)連接,不發(fā)送消息,輕輕松松達(dá)到。內(nèi)存占用較少,還剩余11G內(nèi)存。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@colobu ~]# ss -s; free -m
Total: 1200234 (kernel 1200240)
TCP: 1200006 (estab 1200002, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 4
Transport Total IP IPv6
* 1200240 - -
RAW 0 0 0
UDP 1 1 0
TCP 1200006 1200006 0
INET 1200007 1200007 0
FRAG 0 0 0
total used free shared buffers cached
Mem: 30074 18497 11576 0 10 286
-/+ buffers/cache: 18200 11873
Swap: 815 0 815
  • 每分鐘給所有的120萬(wàn)個(gè)websocket發(fā)送一條消息,消息內(nèi)容為當(dāng)前的服務(wù)器的時(shí)間。
    群發(fā)玩一次大約需要15秒。
1
2
03:19:31.154 [pool-1-thread-1] INFO c.colobu.webtest.undertow.WebServer$ - send msg to channels for d9b450da-2631-42bc-a802-44285f63a62d
03:19:46.755 [pool-1-thread-1] INFO c.colobu.webtest.undertow.WebServer$ - sent 1200000 channels for d9b450da-2631-42bc-a802-44285f63a62d

客戶端(一共20個(gè),這里選取其中一個(gè)查看它的指標(biāo))。每個(gè)客戶端保持6萬(wàn)個(gè)連接。每個(gè)消息從服務(wù)器發(fā)送到客戶端接收到總用時(shí)平均672毫秒,而且標(biāo)準(zhǔn)差較小,每個(gè)連接用時(shí)差別不大。

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
Active WebSockets for b2e95e8d-b17a-4cfa-94d5-e70832034d4d
count = 60000
WebSocket Errors for b2e95e8d-b17a-4cfa-94d5-e70832034d4d
count = 0
-- Histograms ------------------------------------------------------------------
Message latency for b2e95e8d-b17a-4cfa-94d5-e70832034d4d
count = 460800
min = 667
max = 781
mean = 672.12
stddev = 5.90
median = 671.00
75% <= 672.00
95% <= 678.00
98% <= 684.00
99% <= 690.00
99.9% <= 776.00
-- Meters ----------------------------------------------------------------------
Message Rate for b2e95e8d-b17a-4cfa-94d5-e70832034d4d
count = 460813
mean rate = 27065.85 events/minute
1-minute rate = 69271.67 events/minute
5-minute rate = 48641.78 events/minute
15-minute rate = 24128.67 events/minute
Setup Rate for b2e95e8d-b17a-4cfa-94d5-e70832034d4d

node.js

node.js不是我要考慮的框架,列在這里只是作為參考。性能也不錯(cuò)。

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
Active WebSockets for 537c7f0d-e58b-4996-b29e-098fe2682dcf
count = 60000
WebSocket Errors for 537c7f0d-e58b-4996-b29e-098fe2682dcf
count = 0
-- Histograms ------------------------------------------------------------------
Message latency for 537c7f0d-e58b-4996-b29e-098fe2682dcf
count = 180000
min = 808
max = 847
mean = 812.10
stddev = 1.95
median = 812.00
75% <= 812.00
95% <= 813.00
98% <= 814.00
99% <= 815.00
99.9% <= 847.00
-- Meters ----------------------------------------------------------------------
Message Rate for 537c7f0d-e58b-4996-b29e-098fe2682dcf
count = 180000
mean rate = 7191.98 events/minute
1-minute rate = 10372.33 events/minute
5-minute rate = 16425.78 events/minute
15-minute rate = 9080.53 events/minute

參考文檔

  1. HTTP長(zhǎng)連接200萬(wàn)嘗試及調(diào)優(yōu)
  2. Linux最大打開(kāi)文件描述符數(shù)
  3. 100萬(wàn)并發(fā)連接服務(wù)器筆記之1M并發(fā)連接目標(biāo)達(dá)成
  4. 知乎:如何實(shí)現(xiàn)單服務(wù)器300萬(wàn)個(gè)長(zhǎng)連接的?
  5. 構(gòu)建C1000K的服務(wù)器
  6. 千萬(wàn)級(jí)并發(fā)實(shí)現(xiàn)的秘密
  7. C1000k 新思路:用戶態(tài) TCP/IP 協(xié)議棧
  8. https://github.com/xiaojiaqi/C1000kPracticeGuide
  9. 600k concurrent websocket connections on AWS using Node.js
  10. https:///blog/memory-leaks/out-of-memory-kill-process-or-sacrifice-child?utm_source=feedly&utm_reader=feedly&utm_medium=rss&utm_campaign=rss
  11. http://it./java/2014/06/12/out-of-memory-kill-process-or-sacrifice-child.html
  12. https://access./documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Performance_Tuning_Guide/s-memory-captun.html
  13. http://www./linux-network-tuning-for-2013.html#.VV0s6kawqgQ
  14. http://warmjade./2014_03_22_archive.html
  15. http://mp.weixin.qq.com/s?__biz=MjM5NzAwNDI4Mg==&mid=209282398&idx=1&sn=9ffef32b3ab93d1e239c9dc753a3a9bb

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    91人妻丝袜一区二区三区| 欧美大胆女人的大胆人体| 欧美不卡午夜中文字幕| 久久精品一区二区少妇| 人妻一区二区三区多毛女| 日韩人妻一区中文字幕| 丝袜诱惑一区二区三区| 亚洲国产91精品视频| 东京热电东京热一区二区三区| 国产精品免费不卡视频| 在线观看免费视频你懂的| 欧美午夜一区二区福利视频| 又大又长又粗又黄国产| 日本理论片午夜在线观看| 九九热最新视频免费观看| 色老汉在线视频免费亚欧| 亚洲伊人久久精品国产| 91亚洲国产成人久久| 欧美三级大黄片免费看| 欧美综合色婷婷欧美激情| 成人精品日韩专区在线观看 | 绝望的校花花间淫事2| 香蕉尹人视频在线精品| 日韩三级黄色大片免费观看| 亚洲欧美日韩精品永久| 熟女体下毛荫荫黑森林自拍| 亚洲欧美黑人一区二区| 亚洲最新av在线观看| 国产日韩欧美国产欧美日韩| 国产精品亚洲综合色区韩国 | 免费在线成人激情视频| 黄片美女在线免费观看| 不卡中文字幕在线视频| 日韩人妻一区二区欧美| 国产亚洲精品久久久优势| 日本高清视频在线播放| 在线视频三区日本精品| 亚洲最新av在线观看| 国产又黄又猛又粗又爽的片| 女人精品内射国产99| 国产日产欧美精品大秀|