linux 高性能服務器編程

1. 高性能定時器:時間輪,時間堆 (處理超時時間,如nginx使用紅黑樹,找出最可能超時的事件)nginx

2. 高性能服務器程序框架:(nginx 使用的是基於事件模型,epoll,不阻塞,異步處理)服務器

兩種高效的事件處理模式: Reactor模式 Proactor模式併發

兩種高效的併發模式:半同步/半異步模式  領導者/追隨者模式框架

有限狀態機異步

提升服務器性能的其餘建議:池(如nginx,在獲得一個連接時,會創建ngx_connection_t;  在獲得一份請求的時,會創建ngx_request_t; 這些結構體的分配都在ngx_pool_t上分配,但請求完畢時或斷開連接時,釋放ngx_pool_t; 免除了屢次使用malloc和free,且ngx_pool_t可重用)數據複製,上下文切換和鎖 (nginx worker process 綁定cpu, 省去上下文切換;鎖,在各個worker process shared 數據使用自旋鎖,如ngx_http_limit_req_module, 記錄每個ip的請求次數,這些信息各個進程是共享的)性能

3.進程池和線程池 (基於事件驅動,綁定cpu,高效;支持線程池,為了支持第三方的庫,可能有阻塞I/O操做,或者寫第三方模塊的沒注意處理事件驅動,有導致主線程阻塞的行為)線程

相關文章
相關標籤/搜索