鍍金池/ 問(wèn)答/Java  PHP  Linux  網(wǎng)絡(luò)安全/ 如何理解池化技術(shù)?

如何理解池化技術(shù)?

Q1: 如何理解池化技術(shù)?
我的理解是:
比如連接池,就是將連接看作一個(gè)資源,放到一個(gè)pool里,有一個(gè)調(diào)度器(不知道這個(gè)說(shuō)法正不正確)根據(jù)請(qǐng)求來(lái)調(diào)度這些連接。連接池的作用是避免每一次使用都要建立連接、銷毀連接等這方面的開(kāi)銷。

Q2: php-fpm 可以算是一個(gè)連接池嗎?
如果 Q1 我的理解正確,那么 php-fpm 算連接池嗎? 因?yàn)槲矣锌吹?php-fpm 會(huì)有一個(gè) pool.d 的目錄。
如果 php-fpm 算,那么 fastcgi 的其他實(shí)現(xiàn)也都算嗎? nginx 的 master worker 進(jìn)程算嗎?

Q3: 除了連接池,還有其他的池化技術(shù)嗎?

回答
編輯回答
墨小羽

java是內(nèi)存常駐語(yǔ)言,池化技術(shù)比較常見(jiàn),一般池化技術(shù)用在有效控制資源和復(fù)用而節(jié)約系統(tǒng)資源開(kāi)銷;比如
1、假設(shè)每一個(gè)請(qǐng)求需要操作dba,這個(gè)時(shí)候每一個(gè)并發(fā)都需要一個(gè)數(shù)據(jù)庫(kù)鏈接session,如果系統(tǒng)并發(fā)很大,假設(shè)1000,沒(méi)有池化技術(shù)就會(huì)同時(shí)有1000個(gè)session,這很容易導(dǎo)致系統(tǒng)資源崩潰。用上池化技術(shù)后,設(shè)置池中最大數(shù)量上限,高并發(fā)下就限制了數(shù)據(jù)庫(kù)連接session最大數(shù)量了,池化技術(shù)核心是復(fù)用,這也就不存在session頻繁創(chuàng)建和銷毀而浪費(fèi)系統(tǒng)資源,另外一般池化技術(shù)幾乎都是放在內(nèi)存中,所以尋找和管理的效率相當(dāng)高,幾乎沒(méi)有io方面導(dǎo)致的性能問(wèn)題。

2、另外java中還有線程池概念,復(fù)用線程用的;高并發(fā)下,既可以有效控制住系統(tǒng)線程過(guò)多,也避免了線程創(chuàng)建和銷毀浪費(fèi)系統(tǒng)資源。


5年沒(méi)有搞php開(kāi)發(fā)了,對(duì)于php5后面發(fā)展出來(lái)的技術(shù)已經(jīng)沒(méi)有任何了解,見(jiàn)諒不懂php-fpm

2017年12月29日 22:01
編輯回答
賤人曾

php-fpm就是fastgi協(xié)議的的實(shí)現(xiàn),另外還有內(nèi)存池、線程池等,php-fpm和nginx master process一方面屬于算進(jìn)程管理器,需要的時(shí)候才fork新的進(jìn)程,當(dāng)然預(yù)設(shè)部分也就是進(jìn)程池了,池化的技術(shù)可以這么理解,預(yù)設(shè)一部分資源,需要的時(shí)候直接使用,避免創(chuàng)建過(guò)程的開(kāi)銷

2017年5月16日 23:02
編輯回答
澐染

Q1:你說(shuō)的這個(gè)是一個(gè)方面,我認(rèn)為還是并發(fā)量的限制才會(huì)帶來(lái)“池化”技術(shù),假如mysql只能維持256個(gè)長(zhǎng)連接,但是我們有1000000個(gè)用戶每天嗷嗷待哺,那么就得幫mysql請(qǐng)一個(gè)經(jīng)紀(jì)人,不管多少人訪問(wèn),mysql本體都不需要一直處理連接,只需要管好怎么處理數(shù)據(jù)庫(kù)相關(guān)的部分就好了(仔細(xì)想想,這樣事務(wù)獨(dú)立性不就被打破了么....)。

Q2:php-fpm不是連接池(網(wǎng)絡(luò)的),大概可以叫:進(jìn)程池(本地的)。

Q3:只要是有限的資源,都可以被“池化”。

個(gè)人主觀觀點(diǎn),僅供參考,如有不足,評(píng)論交流~

2017年11月12日 20:54