- 在虛擬機(jī) 8c32g ,一個(gè)tomcat 實(shí)現(xiàn)400~500 的并發(fā), 3000QPS 已經(jīng)快是極限, 由于是阻塞式編程, 導(dǎo)致響應(yīng)時(shí)長(zhǎng)的的均值和最值差距相當(dāng)?shù)拇? 通過(guò)webflux 可以增加并發(fā)量, 同時(shí)吞吐量有所改善.
下面是通過(guò)jvm 調(diào)優(yōu)后, 不同的web架構(gòu)的壓力測(cè)試圖.
機(jī)器: 內(nèi)網(wǎng)下 8c32g虛擬機(jī) , 1臺(tái)壓測(cè)機(jī)器, 1臺(tái)服務(wù). 屬于直連壓測(cè), 未經(jīng)過(guò)網(wǎng)關(guān).
下面是壓測(cè)結(jié)果.
- webflux 的吞吐量 高于傳統(tǒng)servlet 的同步io,大約在 %10~15的效果
- webflux 的耗時(shí)相對(duì)于傳統(tǒng)servlet更加均勻
- 耗時(shí)改善不少.
總體來(lái)說(shuō), 全異步的webflux 確實(shí)比傳統(tǒng)的servlet 要優(yōu)秀不少.
jvm 調(diào)優(yōu)參數(shù)相關(guān) 使用g1垃圾垃圾回收,比較激進(jìn). 對(duì)于webflux 來(lái)說(shuō)效果優(yōu)化特別好.
--server.port=8081 -Xms8g -Xmx8g -Xmn4g -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m -Xloggc:/dev/shm/mq_gc_%mxs.log