php与lua性能对比,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。

测试机器:

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

52bd5a81329f543ecc687cf967cb628f.png

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

}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值