色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

Mysql查詢超時優(yōu)化,apache和nginx性能差很多嗎

錢淋西2年前17瀏覽0評論
Mysql查詢超時優(yōu)化,apache和nginx性能差很多嗎?

Nginx性能要比Apache高,主要是由于網(wǎng)絡(luò)IO模型選擇不同,Nginx使用是最新的epoll網(wǎng)絡(luò)I/O模型,而Apache使用的則是傳統(tǒng)的select模型。Nginx是異步非阻塞,Apache是同步阻塞。

同步與異步

同步:同步是指調(diào)用者發(fā)起一個請求,直到請求返回結(jié)果之后,才進(jìn)行下一步操作。簡單來說,同步就是必須一件事一件事的做,等前一件做完了,才能做下一件事。

異步:調(diào)用者發(fā)起一個請求,在沒有得到返回結(jié)果之前,可以繼續(xù)執(zhí)行后續(xù)操作。異步相對同步來講,二者的區(qū)別主要在于是否需要等待某操作的返回結(jié)果。

阻塞與非阻塞

阻塞:阻塞一般是指在調(diào)用結(jié)果返回之前,當(dāng)前線程會被掛起。調(diào)用線程只有在得到結(jié)果之后才會被喚醒執(zhí)行后續(xù)的操作。

非阻塞:非阻塞是指在調(diào)用結(jié)果沒有返回之前,該調(diào)用不會阻塞住當(dāng)前線程。

epoll

epoll是指當(dāng)文件描述符的內(nèi)核緩沖區(qū)非空的時候,發(fā)出可讀信號進(jìn)行通知,當(dāng)寫緩沖區(qū)不滿的時候,發(fā)出可寫信號的一種I/O事件通知機(jī)制,是linux 內(nèi)核實現(xiàn)IO多路復(fù)用的一個實現(xiàn)。

文件描述符數(shù)目沒有上限:通過epoll_ctl()來注冊一個文件描述符,內(nèi)核中使用紅黑樹的數(shù)據(jù)結(jié)構(gòu)來管理所有需要監(jiān)控的文件描述符。基于事件就緒通知方式:一旦被監(jiān)聽的某個文件描述符就緒,內(nèi)核會采用類似于callback的回調(diào)機(jī)制,迅速激活這個文件描述符,這樣隨著文件描述符數(shù)量的增加,也不會影響判定就緒的性能。維護(hù)就緒隊列:當(dāng)文件描述符就緒,就會被放到內(nèi)核中的一個就緒隊列中,這樣調(diào)用epoll_weit獲取就緒文件描述符的時候,只要取隊列中的元素即可,操作的時間復(fù)雜度恒為O(1)。使用mmap加速內(nèi)核與用戶空間的消息傳遞。selectselect()的可移植性更好,在某些Unix系統(tǒng)上不支持poll()。select() 對于超時值提供了更好的精度:微秒,而poll是毫秒。單個進(jìn)程可監(jiān)視的fd數(shù)量被限制。需要維護(hù)一個用來存放大量fd的數(shù)據(jù)結(jié)構(gòu),這樣會使得用戶空間和內(nèi)核空間在傳遞該結(jié)構(gòu)時復(fù)制開銷大。對fd進(jìn)行掃描時是線性掃描。fd劇增后,IO效率較低,因為每次調(diào)用都對fd進(jìn)行線性掃描遍歷,所以隨著fd的增加會造成遍歷速度慢的性能問題。select() 函數(shù)的超時參數(shù)在返回時也是未定義的,考慮到可移植性,每次在超時之后在下一次進(jìn)入到select之前都需要重新設(shè)置超時參數(shù)。總結(jié)Linux下能夠承受高并發(fā)訪問的Squid、Memcached都采用的是epoll,epoll是一種IO多路復(fù)用技術(shù),可以非常高效的處理數(shù)以百萬計的socket句柄,比起select效率會高一些。epoll不會隨著監(jiān)聽fd(文件描述符)數(shù)目的增長而降低效率。select采用的是輪詢來處理,在高并發(fā)服務(wù)器中,輪詢I/O是最耗時間的操作之一,輪詢的fd(文件描述符)數(shù)目越多,自然耗時越多,性能越低。

Nginx運行效率高、CPU內(nèi)存占用率低、代理功能強(qiáng)大、占用資源少、支持更多的并發(fā)連接,主要用來做動靜分離和負(fù)載均衡。Apache在動態(tài)資源處理和穩(wěn)定性方便要優(yōu)于Nginx,但是靜態(tài)資源處理不如Nginx。

如果解決了你的疑惑,請點點贊,點點關(guān)注,謝謝。