日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

nginx lua mysql 性能_深入浅出 nginx lua 为什么高性能

發(fā)布時(shí)間:2023/12/1 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nginx lua mysql 性能_深入浅出 nginx lua 为什么高性能 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近很多人問我nginx lua的優(yōu)勢(shì)是什么?為什么?

一、同步和異步、阻塞和非阻塞

如果要說清楚這個(gè)問題首先要了解:同步和異步、阻塞和非阻塞的關(guān)系

同步:php、java的正常代碼都是同步執(zhí)行的

異步:javascript的回調(diào)函數(shù)就是異步的

說白了自己寫的程序里面如果沒有回調(diào)函數(shù)都是同步的,常見的php、python等語言少有異步代碼,當(dāng)前大量使用異步代碼的有javascript。

阻塞:查詢數(shù)據(jù)庫或者讀寫文件,如果沒有獲取結(jié)果就一直等待,說明是阻塞的。

非阻塞:執(zhí)行之后立刻返回是非阻塞的

比如:nginx的模塊調(diào)用,程序請(qǐng)求了一個(gè)讀數(shù)據(jù)庫的操作,然后該干嘛干嘛,等到讀取結(jié)果返回之后,再做剩下的事情。

二、nginx的非阻塞模型

很多人分不清楚異步和非阻塞的區(qū)別,按照我的理解主要是主體不同,異步指的是自己寫的程序是否有類似回調(diào)函數(shù)的功能,而非阻塞指的是nginx主體調(diào)用讀寫操作,當(dāng)數(shù)據(jù)庫沒有返回結(jié)果的時(shí)候,不影響其他的用戶請(qǐng)求。

由于咱們使用的是lua,使用這個(gè)腳本語言大多場(chǎng)景也是同步的,很好理解,所以咱們主要說一下nginx-lua如何實(shí)現(xiàn)非阻塞的。其實(shí)非阻塞的功能使用nginx實(shí)現(xiàn)的,基本與lua無關(guān),那么nginx如何實(shí)現(xiàn)非阻塞的哪?

一般的web服務(wù)器都是建立在tcp請(qǐng)求基礎(chǔ)之上的非阻塞事件模型,例如:

比如咱們使用tomcat服務(wù)器或者apache服務(wù)器處理一個(gè)請(qǐng)求,肯定是建立一個(gè)線程或者進(jìn)程中完成并返回給服務(wù)器

那么nginx則不然:

他把請(qǐng)求分成了幾個(gè)階段,每個(gè)階段由不同的模塊來處理,這樣就實(shí)現(xiàn)了更全面的非阻塞處理http請(qǐng)求

三、性能

上面分析完了基本的原理,那么為何么nginx-lua的性能由于nginx-php哪?如果并發(fā)數(shù)量不高,那么兩者其實(shí)沒什么區(qū)別,只有并發(fā)數(shù)量上來之后,由于lua運(yùn)行時(shí)占用內(nèi)存特別少,放入了nginx模塊內(nèi)部,可以最大限度的承接nginx提供的非阻塞功能,只要后端數(shù)據(jù)庫io跟的上,那么nginx-lua就能并發(fā)處理很多請(qǐng)求,更詳細(xì)的原因可以參考王曉哲的分析文章:http://developer.51cto.com/art/201207/350070.htm

總結(jié)

以上是生活随笔為你收集整理的nginx lua mysql 性能_深入浅出 nginx lua 为什么高性能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。