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...