為什麼tornado的併發效能不及java servlet?

時間 2021-06-01 15:35:16

1樓:

測試操作同為請求後端靜態擋板並解析返回的xml內容,無其他操作。後來總結的原因是,在沒有複雜邏輯且IO不是瓶頸的情況下,python本身的語言效率問題被顯現出來了。無關框架。

當然,tornado4.0+版本的QPS不如3.2版本,也是乙個原因,降級使用3.

2版本,竟然有了很大的提高。

2樓:羅然

使用tornado的前提是你的服務是IO密集型的,並且你得寫非同步api,也可以請參考我簽名中的框架,把tornado改造成eventloop+threadpool (GitHub - nikoloss/iceworld: tonado的multi-thread 多執行緒封裝)。我們公司的android ios wap後台全是這套框架在提供服務。

目前已經切換到乙個分布式http響應群組裡面了,此時tornado只是作為乙個中繼的gateway存在:GitHub - nikoloss/cellnest: 分布式service

在沒有阻塞的情況下,python的效能肯定不如編譯型語言。這種全非同步的模型的優勢也無法體現出來,一旦有IO操作了,這種全非同步模型的第一步accpet新連線的操作並不會暫停,也就是只要有內容抵達,至少ioloop這個環節是可以照單全收的,接收之後協程處理,隨著併發量增長它的效能下降是平穩且平滑的。反觀執行緒模型,如果消費資料趕不上新連線新資料的生產,效能就會直線下降。

你的700qps差不多,你可以換3.1或者3.2的tornado試試,1100~1400應該可以跑出來。

當然追求乙個靜態文字的輸出效能是否有必要,我覺得實際情況比這種單純的壓測要複雜的多。

為什麼 Tornado 在呼叫 self finish 以後不終止 RequestHandler 中相關處理函式的執行?

xiaojieluo 想要終止函式執行,可以丟擲Finish 異常 from tornado.web import Finishclass IndexHandler RequestHandler def get selfself.write Hello raise Finishself.write ...

為什麼Ant Design的Table效能這麼低?

ant design引用的也是rc table,通過components可以定製tr,td等來優化效能的,官方文件裡也提供有 Refector hover 導致重新計算虛擬 dom,加上 diff 時間是比較耗時,200 行資料考慮加上分頁和過濾,20行的列表嘗試耗時是多少?想一想,做react元件...

突發性耳聾是什麼導致的?

海之聲興源 內耳供血障礙學說認為,突發性耳聾可因血栓或栓塞形成 出血 血管痙攣等引起。在耳蝸的微環境中,血管紋是調節代謝的重要場所。而血管紋中的血管內皮細胞極其敏感,耐受能力差,極細微的缺血 缺氧因素,即可出現細胞代謝異常 血管通透性的改變,影響細胞功能,導致突發性耳聾。精神緊張 壓力大 情緒波動 ...