日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Go和PythonWeb服務(wù)器性能對(duì)比

我通常使用Python來(lái)構(gòu)建Web 應(yīng)用。一年前,在興趣的驅(qū)使下,我開(kāi)始學(xué)習(xí)Go。 在此期間,我重寫(xiě)了一些原本由C 開(kāi)發(fā)的CGI 應(yīng)用,包括運(yùn)行于 chroot 環(huán)境下的同 thttpd 服務(wù)器一起的應(yīng)用。我開(kāi)始尋找可以開(kāi)發(fā)易于 chroot、且內(nèi)置 Web 服務(wù)器的獨(dú)立 Web 應(yīng)用的工具。那時(shí),我開(kāi)始玩 web.go 框架、mustache.go 模板、Go 原生 http 包和 GoMySQL 數(shù)據(jù)庫(kù) API。我發(fā)現(xiàn),有 http、mustache.go GoMySQL 包的 Go 可以是我用來(lái)工作的不錯(cuò)的工具組合。因此,我決定使用Go編寫(xiě)我的應(yīng)用。(Go編程語(yǔ)言也可以用來(lái)編寫(xiě)Web應(yīng)用?)

創(chuàng)新互聯(lián)是一家集成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、網(wǎng)站頁(yè)面設(shè)計(jì)、網(wǎng)站優(yōu)化SEO優(yōu)化為一體的專業(yè)的建站公司,已為成都等多地近百家企業(yè)提供網(wǎng)站建設(shè)服務(wù)。追求良好的瀏覽體驗(yàn),以探求精品塑造與理念升華,設(shè)計(jì)最適合用戶的網(wǎng)站頁(yè)面。 合作只是第一步,服務(wù)才是根本,我們始終堅(jiān)持講誠(chéng)信,負(fù)責(zé)任的原則,為您進(jìn)行細(xì)心、貼心、認(rèn)真的服務(wù),與眾多客戶在蓬勃發(fā)展的市場(chǎng)環(huán)境中,互促共生。

在工作過(guò)程中發(fā)現(xiàn),我需要比 mustache.go 更加靈活,比 GoMySQL 更加成熟、沒(méi)有那么多 Bug 的東西。最終,我使用 Kasia.go 模板和 MyMySQL (為我的應(yīng)用定制開(kāi)發(fā)的包,不過(guò)我將其貢獻(xiàn)給了 Go 社區(qū))。重寫(xiě)的應(yīng)用即便是在比以前的負(fù)載更高的運(yùn)營(yíng)環(huán)境下,也工作得很好。我開(kāi)始思考這個(gè)問(wèn)題:用 Go 實(shí)現(xiàn)獨(dú)立 Web 應(yīng)用比 Python 到底快了(或者是慢了)多少。我決定做一些各種框架和服務(wù)器不同的用途的測(cè)試。為了比較,我選擇了下面的 Go 包:

◆ 原始的 Go http包;

◆ web.go 框架(它使用運(yùn)行于獨(dú)立模式[standalone mode] 的 http 包);

◆ twister 框架 (它同樣使用 http 包)。

和下面的 Python Web服務(wù)器/框架:

◆ 使用 CherryPy WSGI 服務(wù)器的 web.py 框架;

◆ 使用 flup FastCGI 做 nginx 服務(wù)器的后臺(tái)處理的 web.py 框架;

◆ tornado 異步服務(wù)器/框架;

◆ nginx 做負(fù)載均衡的 tornado。

每一個(gè)用例,我都編寫(xiě)了一個(gè)小應(yīng)用,略微復(fù)雜一些的、傳統(tǒng)的 Hello World 例子。任何應(yīng)用都包括:

◆ 使用正則表達(dá)式通過(guò) URL 路徑傳遞參數(shù);

◆ 使用語(yǔ)句創(chuàng)建多行輸出;

◆ 使用 printf 形式的格式化函數(shù)/表達(dá)式格式化輸出。

我想,這些都是在 Web 應(yīng)用中常見(jiàn)的操作,所以應(yīng)當(dāng)包含在任何簡(jiǎn)易的性能對(duì)比測(cè)試中。所有測(cè)試應(yīng)用的代碼在下面的鏈接中:

◆ Go http

◆ web.go

◆ twister

◆ web.py

◆tornado

測(cè)試環(huán)境

測(cè)試環(huán)境包括兩臺(tái) 使用千兆以太網(wǎng)鏈接的PC (請(qǐng)求發(fā)起者和應(yīng)用服務(wù)器)。

◆ 請(qǐng)求發(fā)起者:2 x Xeon 2.6 GHz with hyperthreading, Debian SID, kernel: 2.6.33.7.2-rt30-1-686 #1 SMP PREEMPT RT;

◆ 服務(wù)器: MSI Netbook with two core Intel U4100 1.30GHz, AC power connected, 64-bit Ubuntu 10.10, kernel: 2.6.35-25-generic #44-Ubuntu SMP, Python 2.6.6-2ubuntu2, web.py 0.34-2, flup 1.0.2-1, tornado 0.2-1, nginx 0.7.67-3ubuntu1;

為了產(chǎn)生 HTTP 請(qǐng)求并且評(píng)估測(cè)試應(yīng)用的性能,我使用 siege 性能測(cè)試工具。Siege 可以用多線程模擬多個(gè)用戶。我使用了下面的命令產(chǎn)生請(qǐng)求:

siege -c 200 -t 20s http: //SERVER_ADDR :8080 /Hello/100

或者多個(gè)類似的命令,減少參數(shù) -c 的量(在這個(gè)測(cè)試中,我同時(shí)運(yùn)行了多個(gè) Python 腳本)。它模擬了 200 用戶的請(qǐng)求,并持續(xù) 20 秒。這個(gè) URL 使得 Web 應(yīng)用對(duì)每個(gè)請(qǐng)求都輸出 100 行。Go 應(yīng)用使用 Go 發(fā)布版 2011-02-01.1。

結(jié)果

GOMAXPROCS=1, 一個(gè) Python 進(jìn)程:

框架請(qǐng)求速率 [1/sec]
Go http1350
Twister1324
Web.go1141
Tornado882
Tornado+nginx862
Web.py+CheryPy169
Web.py+nginx114

GOMAXPROCS=2, 兩個(gè) Python 并發(fā)進(jìn)程:

GOMAXPROCS=4, 四個(gè) Python 并發(fā)進(jìn)程:

Web.py+nginx 工作的 flup FastCGI 選項(xiàng):multiplexed=False, multithreaded=False。如果 multiplexed=True 它會(huì)運(yùn)行得慢一些。如果 multithreaded=True 而只有一個(gè)進(jìn)程服務(wù)于 nginx 服務(wù)器,會(huì)報(bào)下面的錯(cuò)誤:

結(jié)論

你可以看到 Go 贏得了幾乎所有的測(cè)試用例。web.go 框架的那個(gè)不太理想的結(jié)果可能是由于它先嘗試用指定的 URL 尋找靜態(tài)頁(yè)面,然后才會(huì)執(zhí)行處理方法。讓我驚訝的是 tornado Python 框架如此之高的性能,尤其是跟 web.py 框架相比而言。我同樣對(duì) CherryPy 服務(wù)器比 nginx+flup 快感到驚訝 (我使用 web.py+flup+nginx 跑幾乎所有的 Python Web 應(yīng)用)。

原文:http://www.oschina.net/question/25940_19172


名稱欄目:Go和PythonWeb服務(wù)器性能對(duì)比
文章出自:http://www.dlmjj.cn/article/coecjop.html