1、今天被問一個(gè)問題:請問具體到PHP的代碼層面,改善高并發(fā)的措施有哪些?
面對高并發(fā)問題我首先想到的是集群、緩存(apt、redis、mem、內(nèi)存...),但具體到PHP代碼層面除了想到隊(duì)列、減少網(wǎng)絡(luò)請求,想不到別的了,所以開了這個(gè)討論貼,希望大神留下可行方案。
具體到代碼方面,現(xiàn)在通常談到提高并發(fā)能力,可以借鑒nodejs的思路,就是異步,非阻塞式的訪問,以保證高并發(fā),所以你可以談?wù)刾hp都有哪些異步操作的擴(kuò)展,比如我搜了一下有個(gè)叫做swoole的擴(kuò)展。還有就是把計(jì)算任務(wù)更多的交到前端,減少服務(wù)器端的計(jì)算,提高響應(yīng)速度。還有就是操作數(shù)據(jù)庫,可能談一談如何修改數(shù)據(jù)庫的組織形式(減少join之類的操作)也不錯(cuò)
10ms一次的請求, 比100ms一次的請求, 壓力會(huì)小10倍, 因?yàn)槟愕牟l(fā)是有限的, 如果一個(gè)連接進(jìn)來后, 遲遲不完結(jié), 就會(huì)占用資源不釋放, 容易發(fā)生同一時(shí)間內(nèi)存在大量并發(fā)連接. CPU和內(nèi)存滿的時(shí)候, 會(huì)惡性循環(huán)卡死, 所以要設(shè)好連接數(shù)上限.
估計(jì)是面試公司實(shí)際開發(fā)時(shí)候遇到相關(guān)的問題,就拿來當(dāng)面試問題
對象資源復(fù)用 例如單例模式 實(shí)例化一個(gè)數(shù)據(jù)庫對象 這個(gè)對象共用減少對數(shù)據(jù)的IO開銷
是面試時(shí)候的問題嗎?
唯快不破!