ngx_lua与go高并发性能对比

weiyuefei · · 7344 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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进行测试,测试结果如下:

从结果中,可以看出短连接时,两者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))
}

 

link: http://os.51cto.com/art/201307/403474.htm


有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:weiyuefei

查看原文:ngx_lua与go高并发性能对比

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

7344 次点击  
加入收藏 微博
1 回复  |  直到 2022-02-22 23:25:25
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传