Ngx lua與go高併發效能對比

2021-09-02 10:49:30 字數 1356 閱讀 9637

language

lifeibo

1 comment

nginx在處理高併發能力上非常出色,而go作為新時代網際網路語言,在設計之初就為實現高併發。

ngx_lua由nginx來處理網路事件,並使用協程來實現非阻塞,從而實現高併發。 go語言級別提供非阻塞的api,同樣使用協程來提供高併發處理。

我們來測試對比一下兩者的效能。

ngx_lua:tengine/1.4

.3+luajit+ngx_lua

go:go1.0.3

分別實現512位元組的內容的輸出,對比在不同併發下的qps。

測試機器:

16core intel(r) xeon(r) cpu e5520  @ 2.27ghz  

linux localhost 2.6

.18-164.el5 #1 smp tue aug 18 15:51:48 edt 2009 x86_64 x86_64 x86_64 gnu/linux

使用ab進行測試,測試結果如下:

短連線100

200500

1000

2000

ngx_lua

qps:17329 us:2.6% sy:2.2%

17744

16443

15852

13589

goqps:16538 us:9.1% sy:3.6%

16546

15988

15032

13757

長連線100200

500ngx_lua

qps:72274 us:13.8% sy:8.5

61204

61983

goqps:39072 us:29% sy:15%

38688

38238

從結果中,可以看出短連線時,兩者qps相差不大,而長連線時,兩者相差較大。go的cpu占用比ngx_lua要高不少。另外,go在併發數增加的情況下,效能依然出色。

相關測試**。

三千高併發效能優化

3臺64核的應用伺服器,每個應用伺服器部署4個節點 一台資料庫伺服器 3個負載均衡nginx,每個nginx導向4個節點。高併發大量的系統日誌將導致系統堵塞,日誌只開啟error級別,或者日誌在另一線程批量處理。為了保持乙個編號不重複,每次獲取都到資料庫中加1,這樣將導致資源競爭鎖住,調整為每次取一...

SpringCloud高併發效能優化

當系統的使用者量上來,每秒qps上千後,可能就會導致系統的各種卡頓,超時等情況,這時優化操作不可避免 第一步 優化大sql,對於多表關聯的sql,當單錶資料幾百上千萬行時,執行可能會達到好幾秒,對微服務系統來說,我是不建議join多表操作,除非是資料量少的維表,我們可以將一句大sql拆分成多個過程,...

高併發 效能調優 架構

關於效能需要熟悉三個指標 併發使用者,響應時間,tps 每秒事務處理個數 比如 單個伺服器配置為32核,64g記憶體,jvm記憶體為6g,效能測試結果 平均響應時間為200ms,併發使用者為300個,tps為1500為了滿足未來發展需要,系統需配備多台伺服器,如 4臺.1.通訊 2.應用集群部署 3...