置頂隨筆 #
2013年11月5日 #
2013年10月16日 #
2013年10月13日 #
2013年10月8日 #
2013年9月22日 #
2013年9月15日 #
2013年9月11日 #
2013年8月17日 #
2013年8月5日 #
2013年2月24日 #
2012年12月26日 #
2012年9月25日 #
2012年6月26日 #
2012年6月7日 #
2012年5月27日 #
2012年5月22日 #
2012年5月11日 #
2012年5月10日 #
2012年4月12日 #
2012年3月28日 #
2012年3月15日 #
2012年3月9日 #
2012年2月29日 #
2012年2月16日 #
2012年2月8日 #
2012年1月29日 #
2011年12月31日 #
2011年12月30日 #
2011年12月29日 #
并發(fā)最常見用于線程池,顯然使用線程池可以有效的提高吞吐量。
最常見、比較復(fù)雜一個(gè)場(chǎng)景是Web容器的線程池。Web容器使用線程池同步或者異步處理HTTP請(qǐng)求,同時(shí)這也可以有效的復(fù)用HTTP連接,降低資源申請(qǐng)的開銷。通常我們認(rèn)為HTTP請(qǐng)求時(shí)非常昂貴的,并且也是比較耗費(fèi)資源和性能的,所以線程池在這里就扮演了非常重要的角色。
在線程池的章節(jié)中非常詳細(xì)的討論了線程池的原理和使用,同時(shí)也提到了,線程池的配置和參數(shù)對(duì)性能的影響是巨大的。不盡如此,受限于資源(機(jī)器的性能、網(wǎng)絡(luò)的帶寬等等)、依賴的服務(wù),客戶端的響應(yīng)速度等,線程池的威力也不會(huì)一直增長(zhǎng)。達(dá)到了線程池的瓶頸后,性能和吞吐量都會(huì)大幅度降低。
一直增加機(jī)器的性能或者增大線程的個(gè)數(shù),并不一定能有效的提高吞吐量。高并發(fā)的情況下,機(jī)器的負(fù)載會(huì)大幅提升,這時(shí)候機(jī)器的穩(wěn)定性、服務(wù)的可靠性都會(huì)下降。
盡管如此,線程池依然是提高吞吐量的一個(gè)有效措施,配合合適的參數(shù)能夠有效的充分利用資源,提高資源的利用率。 閱讀全文
前面談了很多并發(fā)的特性和工具,但是大部分都是和鎖有關(guān)的。我們使用鎖來保證線程安全,但是這也會(huì)引起一些問題。
鎖順序死鎖(lock-ordering deadlock):多個(gè)線程試圖通過不同的順序獲得多個(gè)相同的資源,則發(fā)生的循環(huán)鎖依賴現(xiàn)象。
動(dòng)態(tài)的鎖順序死鎖(Dynamic Lock Order Deadlocks):多個(gè)線程通過傳遞不同的鎖造成的鎖順序死鎖問題。
資源死鎖(Resource Deadlocks):線程間相互等待對(duì)方持有的鎖,并且誰都不會(huì)釋放自己持有的鎖發(fā)生的死鎖。也就是說當(dāng)現(xiàn)場(chǎng)持有和等待的目標(biāo)成為資源,就有可能發(fā)生此死鎖。這和鎖順序死鎖不一樣的地方是,競(jìng)爭(zhēng)的資源之間并沒有嚴(yán)格先后順序,僅僅是相互依賴而已。 閱讀全文
2011年12月6日 #
非常令人吃驚的是C++語言依然不夠堅(jiān)挺,由于Windows 7/Windows 8的發(fā)力,C#很快就會(huì)搶占C++的市場(chǎng),估計(jì)很快就會(huì)將C++從前三名中擠下去。
iPhone/iPad的熱銷讓Object C繼續(xù)火熱,前十的位置還是可以持續(xù)很久的,這一點(diǎn)毋庸置疑。移動(dòng)設(shè)備開發(fā)的高端人才現(xiàn)在是高薪難求,如果有時(shí)間我也要繼續(xù)關(guān)注下。 閱讀全文
2011年12月5日 #
Session失效問題
通常客戶端主動(dòng)關(guān)閉連接認(rèn)為是一次session失效。另外也有可能因?yàn)槠渌粗颍缇W(wǎng)絡(luò)超時(shí)導(dǎo)致的session失效問題。在服務(wù)端看來,無法區(qū)分session失效是何種情況,一次一旦發(fā)生session失效,一定時(shí)間后就會(huì)將session持有的所有watcher以及瞬時(shí)節(jié)點(diǎn)刪除。
而對(duì)于Zookeeper客戶端而言,一旦發(fā)生失效不知道是否該重連,這涉及到watcher和瞬時(shí)節(jié)點(diǎn)問題,因此Zookeeper客戶端認(rèn)為,一旦發(fā)生了seesion失效,那么就認(rèn)為客戶端死掉了。從而所有操作都不能夠進(jìn)行。參考 How should I handle SESSION 閱讀全文
2011年11月21日 #
有人說Redis的作者是一個(gè)勤奮的人,深表同意!
本來升級(jí)是為了增加批量操作從而提高性能,沒想到內(nèi)存占用節(jié)省了很多。
對(duì)于32位的操作系統(tǒng)而言,節(jié)省內(nèi)存62%,對(duì)于64位操作系統(tǒng)而言節(jié)省73%。非常可觀。 閱讀全文
2011年10月10日 #
2011年7月21日 #
2011年7月12日 #
2011年6月17日 #
2011年6月12日 #