![](/img/trans.png)
[英]AppEngine bulkloader, high replication store and python27 runtime
[英]Appengine, performance degradation with python27
我想在appengine上測試python27,所以我從python25遷移了我的應用程序。 每個請求的性能都要慢2倍! 然后我又回到了python25,性能再次像以前一樣。 這是一張圖片:
(毫秒/請求)(cgi處理程序python 27,然后是python25)
我的應用程序使用Werkzeug , Jinja2 ,並且使用了很多memcache。 什么原因會導致性能急劇下降? 或者僅僅是因為appengine上的python2.7還處於測試階段?
關於申請的一些細節:
這是一個非常簡單的網上商店。 有一些延遲的任務與pdf生成,但這些不會影響整體圖形,因為首頁獲得最多的命中。 幾乎所有內容都是memcached。 使用python 2.5加載頁面時,空緩存需要約0.8秒。 非緩存頁面加載時間很長,主要是因為有很多數據庫查詢。 緩存頁面加載時間為60~100 ms。 平均加載時間約為150毫秒。 用python 2.7表現很糟糕。 非緩存頁面需要2秒以上才能加載。 緩存頁面加載時間超過200毫秒。
不幸的是,我沒有任何分析數據,我無法分辨python 2.7中究竟是什么減慢了。
我的頁面加載時間數據是從實時頁面收集的,該頁面提供~10 req / sec和1個常駐python25實例,可以輕松處理此負載。
我還用wsgi和threadsafe:yes
測試了python 2.7 threadsafe:yes
,但與python 2.7和cgi相比,性能提升了一點點。
在Usenet的某個地方,我從Google那里讀到了這樣一句話:“在某些情況下,Python 2.7運行時比Python 2.5運行時慢,而在其他情況下則更快。我們現在還沒有公開原因。” 似乎到目前為止沒有人發現2.7比2.5更快的情況因此......
我讀到了這個
我的分析表明python 2.7多線程應用程序花費大約。 他們35%的時間都在{method 'acquire' of 'thread.lock' objects}
- 而且似乎是在谷歌的RPC代碼中發生的。 還有跡象表明導入存在嚴重的鎖定問題。
除了等待AppEngine修復它之外,基本上你無能為力。 另請參閱有關減速的綜合文檔 。
幾乎肯定不會在這方面發揮重要作用的因素是:
丑陋的是,谷歌在兩個步驟中進行了大規模的價格上漲,但告訴我們“通過使用多線程python 2.7,你可以運行更高效,新價格看起來不那么糟糕”。 不幸的是Python 2.7。 運行時仍然標記為“實驗性”,並且不提供生產質量性能。
Python 2.7支持仍然是實驗性的。 新的和實驗性的一個方面是它沒有Python 2.5具有的那種性能烘焙和調整。
在python 2.7上運行時,您是否將應用程序遷移到使用WSGI而不是CGI?
CGI接口可能只是現在為2.7啟用的WSGI的包裝器。
通過切換到python2.7,我的應用程序在負載下的性能差3倍。
用2.5:
連接時間(ms)min mean [+/- sd]中位數最大連接數:36 48 15.4 41 109處理:685 3010 1893.3 2657 9255等待:685 3009 1893.3 2656 9255總計:725 3058 1900.5 2711 9333
在特定時間內服務的請求百分比(毫秒)50%2711 66%3287 75%3896 80%4521 90%6146 95%7078 98%7934 99%8413 100%9333(最長要求)
用2.7:
連接時間(ms)min mean [+/- sd] max maximum連接:35 46 11.4 41 96處理:1076 7614 4190.5 6711 32284等待:1075 7614 4190.5 6711 32283總計:1124 7660 4195.5 6764 32353
在特定時間內服務的請求百分比(毫秒)50%6764 66%7790 75%8751 80%9392 90%10844 95%13139 98%25219 99%27259 100%32353(最長請求)
來自谷歌本身的一句話
實驗!
Python 2.7運行時是App Engine的實驗性,創新性和快速變化的新功能。 不幸的是,處於前沿意味着我們可能會做出向后不兼容的變化。 一旦Python 2.7運行時不再是實驗性的,我們將通知社區。
它們還沒有真正用於生產用途,它就像beta測試一樣。
因此,請將您的應用程序保存在python2.7中,直到實驗階段結束。
您還可以嘗試僅上載已編譯的.pyc
文件,因為python27運行時支持字節碼上載
據我所知,Python 2.7應該比2.5快。 但是,有一些因素會影響速度:
這是我提出的前三件事,但有很多因素。 即使是天氣也可能在理論上影響性能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.