成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Go和Python Web服務器性能對比

開發 前端
我通常使用Python來構建Web 應用。一年前,在興趣的驅使下,我開始學習Go。我發現,有 http、mustache.go GoMySQL 包的 Go 可以是我用來工作的不錯的工具組合。因此,我決定使用Go編寫我的應用

我通常使用Python來構建Web 應用。一年前,在興趣的驅使下,我開始學習Go。 在此期間,我重寫了一些原本由C 開發的CGI 應用,包括運行于 chroot 環境下的同 thttpd 服務器一起的應用。我開始尋找可以開發易于 chroot、且內置 Web 服務器的獨立 Web 應用的工具。那時,我開始玩 web.go 框架、mustache.go 模板、Go 原生 http 包和 GoMySQL 數據庫 API。我發現,有 http、mustache.go GoMySQL 包的 Go 可以是我用來工作的不錯的工具組合。因此,我決定使用Go編寫我的應用。(Go編程語言也可以用來編寫Web應用?

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

◆ 原始的 Go http包;

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

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

和下面的 Python Web服務器/框架:

◆ 使用 CherryPy WSGI 服務器的 web.py 框架;

◆ 使用 flup FastCGI 做 nginx 服務器的后臺處理的 web.py 框架;

◆ tornado 異步服務器/框架;

◆ nginx 做負載均衡的 tornado。

每一個用例,我都編寫了一個小應用,略微復雜一些的、傳統的 Hello World 例子。任何應用都包括:

◆ 使用正則表達式通過 URL 路徑傳遞參數;

◆ 使用語句創建多行輸出;

◆ 使用 printf 形式的格式化函數/表達式格式化輸出。

我想,這些都是在 Web 應用中常見的操作,所以應當包含在任何簡易的性能對比測試中。所有測試應用的代碼在下面的鏈接中:

Go http

web.go

twister

web.py

tornado

測試環境

測試環境包括兩臺 使用千兆以太網鏈接的PC (請求發起者和應用服務器)。

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

◆ 服務器: 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;

為了產生 HTTP 請求并且評估測試應用的性能,我使用 siege 性能測試工具。Siege 可以用多線程模擬多個用戶。我使用了下面的命令產生請求:

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

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

結果

GOMAXPROCS=1, 一個 Python 進程:

框架 請求速率 [1/sec]
Go http 1350
Twister 1324
Web.go 1141
Tornado 882
Tornado+nginx 862
Web.py+CheryPy 169
Web.py+nginx 114

GOMAXPROCS=2, 兩個 Python 并發進程:

GOMAXPROCS=4, 四個 Python 并發進程:

Web.py+nginx 工作的 flup FastCGI 選項:multiplexed=False, multithreaded=False。如果 multiplexed=True 它會運行得慢一些。如果 multithreaded=True 而只有一個進程服務于 nginx 服務器,會報下面的錯誤:

結論

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

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

【編輯推薦】

  1. Go編程語言也可以用來編寫Web應用?
  2. 揭秘Google+技術架構
  3. 揭秘Google是如何做代碼審查的
  4. Google首頁電吉他Doodle源代碼搶先下載
  5. 想成為更好的程序員嗎?學習Prolog語言吧
責任編輯:陳貽新 來源: 開源中國社區
相關推薦

2009-02-01 15:17:00

6核服務器服務器性能

2009-02-09 18:02:00

2010-01-22 11:06:03

GNUkFreeBSDLinux

2013-07-17 17:03:23

Ngx_luaNginx

2019-08-12 14:46:56

Web服務器性能

2019-02-26 16:20:52

FTP服務器

2011-08-25 17:29:40

LUAPHPWEB

2011-04-07 13:39:24

WebHTTP

2012-06-01 09:54:03

2012-03-09 09:51:35

2024-10-09 11:31:51

2019-12-25 09:53:01

虛擬機技術固態硬盤

2019-05-08 14:54:16

PythonWeb服務器

2011-08-08 14:31:49

服務器

2018-01-04 09:23:21

WEB服務器性能

2012-02-23 10:02:08

Web服務器應用服務器

2013-11-08 10:59:17

Hadoop虛擬化VMware vSph

2022-01-10 09:33:59

Firefox 95Chrome 97 Linux

2023-02-16 08:03:01

開源Kubernetes

2009-07-02 13:46:17

JSP引擎Web服務器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久免费精品视频 | 欧美亚洲国产一区二区三区 | 中文字幕在线观看一区二区 | 日韩精品一区二区三区 | 不卡一区二区三区四区 | 国产视频在线一区二区 | 久久精品成人一区 | 国产精品久久久久久久三级 | 在线观看视频亚洲 | 国产一区在线免费观看 | 免费视频一区二区三区在线观看 | 久久免费精品视频 | 大陆一级毛片免费视频观看 | 国产精品国产 | 九九热视频这里只有精品 | 国产午夜精品一区二区 | 91在线视频免费观看 | 国产精品久久久久久久模特 | 亚洲视频第一页 | 一区二区三区在线 | 国产精品视频在线免费观看 | 精品久久一区 | 色眯眯视频在线观看 | 国产乱码精品1区2区3区 | 亚洲免费毛片 | 成人在线免费 | 91精品国产91久久久久福利 | 久久精品二区 | 国产一级一级国产 | 日韩一区二区在线看 | 日本三级电影免费 | 亚洲视频免费观看 | 99九九视频 | 精品视频在线观看 | 国产欧美在线观看 | 91视频在线| 另类视频区 | 亚洲精品一区中文字幕乱码 | 伊人久久在线观看 | 亚洲精品aⅴ | 成人在线免费观看 |