ngx_lua与go高并发性能对比
生活随笔
收集整理的這篇文章主要介紹了
ngx_lua与go高并发性能对比
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
nginx在處理高并發能力上非常出色,而go作為新時代互聯網語言,在設計之初就為實現高并發。
ngx_lua由nginx來處理網絡事件,并使用協程來實現非阻塞,從而實現高并發。 go語言級別提供非阻塞的api,同樣使用協程來提供高并發處理。
我們來測試對比一下兩者的性能。
ngx_lua:Tengine/1.4.3+luajit+ngx_lua go:go1.0.3分別實現512字節的內容的輸出,對比在不同并發下的qps。
測試機器:
core 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進行測試,測試結果如下:
| ngx_lua | qps:17329 us:2.6% sy:2.2% | 17744 | 16443 | 15852 | 13589 |
| go | qps:16538 us:9.1% sy:3.6% | 16546 | 15988 | 15032 | 13757 |
| ngx_lua | qps:72274 us:13.8% sy:8.5 | 61204 | 61983 |
| go | qps:39072 us:29% sy:15% | 38688 | 38238 |
從結果中,可以看出短連接時,兩者qps相差不大,而長連接時,兩者相差較大。go的cpu占用比ngx_lua要高不少。另外,go在并發數增加的情況下,性能依然出色。
相關測試代碼。
lua代碼:
ngx.print("aaaaa...512...aaa")go 代碼:
package main import ("net/http""log""fmt""runtime" ) func handler512(w http.ResponseWriter, r *http.Request) {w.Header().Set("Connection", "keep-alive")a := []byte("aaaaa...512...aaa")w.Header().Set("Content-Length", fmt.Sprintf("%d", len(a)))w.Write(a) } func main() {runtime.GOMAXPROCS(runtime.NumCPU())http.HandleFunc("/512b", handler512)log.Fatal(http.ListenAndServe(":8080", nil)) }來源:http://ju.outofmemory.cn/entry/7199
總結
以上是生活随笔為你收集整理的ngx_lua与go高并发性能对比的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 美国经济现在还不能倒下,以布雷顿森林体系
- 下一篇: 拍拍贷还几期可以再借