欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
高性能服務(wù)器設計|高性能服務(wù)器,設計

高性能服務(wù)器設計

作者:      來(lái)源:xiaosuo.cublog.cn     發(fā)表時(shí)間:2007-01-30     瀏覽次數:3170      字號:    

先后查看了haproxy,l7swlighttpd的相關(guān)源碼,無(wú)一例外,他們一致認為多路復用是性能最好的服務(wù)器架構。事實(shí)也確實(shí)應該如此,進(jìn)程的出現一方面就是為了保存任務(wù)的執行上下文從而簡(jiǎn)化應用程序設計,如果程序的邏輯結構不是很復雜,那么用整個(gè)進(jìn)程控制塊來(lái)保存執行上下文未免有些大材小用,加上進(jìn)程調度和其他的一些額外開(kāi)銷(xiāo),程序設計上的高效很可能會(huì )被執行時(shí)的低效所抵消。代價(jià)也是有的:程序設計工作將更加具有挑戰性。

體系結構選定之后,我們就要考慮更加細節的部分,比如說(shuō)用什么操作系統,用操作系統提供的那些API。在這方面,前輩們已經(jīng)做過(guò)很多,我們只需要簡(jiǎn)單的“拿來(lái)”即可,如果再去枉費唇舌,簡(jiǎn)直就是浪費時(shí)間,圖財害命。High-Performance Server Architecture從根本上分析了導致服務(wù)器低效的罪魁禍首:數據拷貝、(用戶(hù)和內核)上下文切換、內存申請(管理)和鎖競爭;The C10K Problem列舉并分析了UNIX、Linux甚至是部分Windows為提高服務(wù)器性能而設計的一些系統調用接口,這篇文檔的難能可貴之處還在于它一致保持更新;Benchmarking BSD and Linux更是通過(guò)實(shí)測數據用圖表的形式把BSD和Linux的相關(guān)系統調用的性能直觀(guān)地陳列在我們眼前,結果還是令人激動(dòng)的:Linux 2.6的相關(guān)系統調用的時(shí)間復雜度竟然是O(1)。

簡(jiǎn)單的總結如下:

  1. 操作系統采用Linux 2.6.x內核,不僅因為它的高性能,更因為它大開(kāi)源(這并不是說(shuō)其他的UNIX或者是BSD衍生物不開(kāi)源)給程序設計帶來(lái)的便利,我們甚至可以把服務(wù)做到內核空間。
  2. 多路復用采用epoll的“電平觸發(fā)”(Level Triggered)模式,必要時(shí)可以采用“邊緣觸發(fā)”(Edge Triggered),但要注意防止數據停滯。
  3. 為避免數據拷貝可以采用sendfile系統調用發(fā)送小文件,或者是文件的小部分,注意避免sendfile因磁盤(pán)IO而導致的阻塞。
  4. 如果服務(wù)操作設計大量磁盤(pán)IO操作,應選用Linux內核提供的異步IO機制,其對應的用戶(hù)空間庫為libaio,注意:這里提到異步IO庫并非目前glibc中附帶的異步IO實(shí)現。
  5. 如果同時(shí)有多個(gè)數據需要傳輸,采用writev/readv來(lái)減少系統調用所帶來(lái)的上下文切換開(kāi)銷(xiāo),如果數據要寫(xiě)到網(wǎng)絡(luò )套接字文件描述符,這也能在一定程度上防止網(wǎng)絡(luò )上出現比較小幀,為此,還可以有選擇地開(kāi)啟TCP_CORK選項。
  6. 實(shí)現自己的內存管理,比如說(shuō)緩存數據,復用常用數據結構等。
  7. 用多線(xiàn)程替代多進(jìn)程,線(xiàn)程庫當然選擇nptl。
  8. 避免進(jìn)程/線(xiàn)程間非必要的同步,保持互斥區的短小。
上面這些瑣碎的細節在ESR看來(lái)可能都是過(guò)早優(yōu)化,他可能又會(huì )建議我們等待硬件的升級。哈哈,提醒還是不無(wú)道理的,算法的設計部分,我們更要下大力氣,因地制宜地降低算法的時(shí)間復雜度。為什么不提空間復雜度呢??jì)却娴膬r(jià)格還是相對低廉吧,不過(guò)還是不要忘記現在的計算機瓶頸多在內存的訪(fǎng)問(wèn)。

有一點(diǎn)需要提醒一下,目前SMP系統和多核心CPU比較常見(jiàn),如果還是僅采用單進(jìn)程(線(xiàn)程)的多路復用模型,那么同一時(shí)間將只有一個(gè)CPU為這個(gè)進(jìn)程(線(xiàn)程)服務(wù),并不能充分發(fā)揮CPU的計算能力,所以需要至少CPU(CPU核心)數目個(gè)進(jìn)程(線(xiàn)程)來(lái)分擔系統負擔。有一個(gè)變通的解決方案:不用修改源碼,在服務(wù)器上運行兩個(gè)服務(wù)程序的實(shí)例,當然這個(gè)時(shí)候服務(wù)端口應該是不同的,然后在其前端放置負載均衡器將流量和連接平均分配到兩個(gè)服務(wù)端口,可以簡(jiǎn)單的通過(guò)DNAT來(lái)實(shí)現負載均衡。其實(shí),這個(gè)時(shí)候我們已經(jīng)把多CPU或者是多核系統看成了多個(gè)系統組成的集群。

為了提高服務(wù)器的性能,單純的依靠提高單個(gè)服務(wù)器的處理能力似乎不能奏效,況且配置越高的服務(wù)器花銷(xiāo)也就越高,為此人們經(jīng)常采用服務(wù)器集群的方式,通過(guò)把計算盡可能地分配到相對比較廉價(jià)的機器上單獨完成,籍此來(lái)提升服務(wù)器的整體性能,事實(shí)證明,這種體系結構不僅是切實(shí)可行的,而且還能提高服務(wù)器的可用性,容錯能力也較強。在網(wǎng)絡(luò )服務(wù)器方面,Linux內核中的由國人章文嵩先生設計的IP層負載均衡解決方案LVS比較有名,還有就是工作于應用層的haproxy和剛剛起步的l7sw。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
服務(wù)器并發(fā)處理能力
如何提高服務(wù)器并發(fā)處理能力
CPU
Linux性能監控(1)
?萬(wàn)字詳文:Linux 常見(jiàn)的 CPU 性能問(wèn)題及解決方案梳理
Python 中的進(jìn)程、線(xiàn)程、協(xié)程、同步、異步、回調
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久