由於是跳着看的,後面看到有提到啥epoll模型,那就補充下前面的知識。web
cat /proc/loadavg
查看運行隊列的狀況。定義:CPU空閒而且等待I/O操做完成的時間比例。數組
進程有兩個運行模式:用戶態和內核態,進程一般運行在用戶態,這時候可使用CPU和內存來完成一些任務,而當進程須要對硬件外設進行操做的時候(讀磁盤文件、發送網絡數據),就必須切換到內核態。瀏覽器
減小沒必要需要的系統調用,優化Web服務器性能。緩存
在Web應用層通訊,因爲HTTP的無狀態特性,使得HTTP通訊絕不依賴於TCP長鏈接,長久以來習慣了「一次性」的HTTP通訊,即一次TCP鏈接處理一個HTTP請求。服務器
HTTP長鏈接須要瀏覽器和Web服務器的共同協做。一方面,瀏覽器須要保持一個TCP鏈接並重複利用,不斷髮送多個請求,另外一方面,服務器不能過早的主動關閉鏈接。網絡
Apache中,經過httpd.conf中的以下參數進行配置:
KeepAliveTimeout 30
瀏覽器的設置能夠經過修改註冊表修改超時時間。數據結構
動機:儘可能減小鏈接次數,儘可能重用鏈接通道。多線程
瞭解如下幾種UNIX:併發
定義:Linux提供一種訪問磁盤文件的特殊方式,它能夠將內存中某塊地址空間和咱們要指定的磁盤文件相關聯,從而把咱們隊這塊內存的訪問轉換爲對磁盤文件的訪問。
* 大多數狀況下,使用內存映射能夠提升磁盤I/O的性能,它無須使用read()或者write()等系統調用來訪問文件,而是經過mmap()系統調用來創建內存和磁盤文件的關聯,而後像訪問內存同樣自由地訪問文件。異步
直接IO
在MySQL中,對應Innodb存儲引擎,其自身能夠進行數據和索引的緩存管理,因此它對於內核緩衝區的依賴不是那麼重要。MySQL提供了一種實現直接I/O的方法,在my.cof配置中,在分配Innodb數據空間文件的時候,使用raw分區跳過內核緩衝區,直接I/O。
sendfile
Linux中,sendfile將磁盤文件的特定部門直接傳送到客戶端的socket描述符,加快了靜態文件的請求速度。
異步I/O
同步和異步是指數據訪問的機制,同步通常指主動請求並等待I/O操做完畢的方式,當數據就緒後在讀寫的時候必須阻塞。異步是指主動請求數據後即可以繼續處理其餘任務,隨後等待I/O操做完畢的通知,這可使進程在數據讀寫時也不發生阻塞。
本質上講,全部到達服務器的請求都封裝在IP包中,位於網卡的接收緩存區中,這時候Web服務器軟件要作的是不斷地讀取這些請求,而後進行處理,並將結果寫到發送緩衝區,這其中包含了一些列I/O操做和CPU計算, 而設計一個併發策略的目的,就是讓I/O操做和CPU計算儘可能重疊進行,一方面要讓CPU在I/O等待時不要空閒,另外一方面讓CPU在I/O調度上儘可能花費最少的時間。