我是用nginx轉(zhuǎn)發(fā)到workerman,
經(jīng)過(guò)測(cè)試,訪(fǎng)問(wèn)http是訪(fǎng)問(wèn)https的qps十倍左右.
就算ssl加密有消耗也不會(huì)這么多吧?
后來(lái)又測(cè)試tp框架下http和https的差距,只是60/30的差距
現(xiàn)在懷疑問(wèn)題和proxy_pass轉(zhuǎn)發(fā)有關(guān)系,請(qǐng)問(wèn)有沒(méi)有什么方法優(yōu)化
你這個(gè)測(cè)試場(chǎng)景,可以分成以下幾個(gè)耗時(shí)環(huán)節(jié):
① HTTP 請(qǐng)求(https 或者 http,前者開(kāi)銷(xiāo)要大很多)
② Nginx 轉(zhuǎn)發(fā)和回傳(proxy_pass 或者 fastcgi_pass,前者開(kāi)銷(xiāo)大一些,但總體影響應(yīng)該不大)
③ PHP 程序執(zhí)行過(guò)程(TP 或者 WM)
重點(diǎn)在第 ③ 個(gè)環(huán)節(jié),倒不是 PHP 程序本身效率高低的問(wèn)題(雖然 TP 框架復(fù)雜一點(diǎn)),主要是兩者的進(jìn)程模型不一樣,TP 是在 PHP-FPM 里面跑的,受進(jìn)程數(shù)的限制,測(cè)試過(guò)程中會(huì)有很多 request 處于等待狀態(tài);而 WM 是單進(jìn)程異步處理,更適合高并發(fā),在你這個(gè)測(cè)試規(guī)模下幾乎不會(huì)有等待。
所以再看你的測(cè)試結(jié)果,WM 時(shí) http 比 https 性能高十倍,這個(gè)大體上可以看做是 SSL 真實(shí)的性能比,而在 TP 時(shí),即使用 http,第 ① 個(gè)環(huán)節(jié)全速跑起來(lái),到了第 ③ 個(gè)環(huán)節(jié)還是堵住了,所以無(wú)法達(dá)到十倍。