天天看點

Lwan —— 每秒處理32萬請求的高性能Web伺服器

lwan 是一個高性能和可伸縮的 web 伺服器軟體,支援 glibc/linux 平台。

lwan 開發了将近 3 年時間,目前還是個人研究的成果。主要是為了建構一個堅固、輕量級高性能的 web 伺服器。

特點:

占用記憶體低 (1萬個空閑連接配接隻占用 ~500kib)

最小化的記憶體配置設定和拷貝

最小化的系統調用

精确的 http 請求解析

使用最高效的方法來處理檔案服務

大于 16k 的檔案不需要進行核心和使用者層的拷貝

更小的檔案使用記憶體映射緩沖向量 i/o 發送

處理壓縮小檔案時考慮header 開銷

大多數無等待、多線程設計

核心代碼隻有 7200 行左右

性能:

在一台使用 i7 處理器的筆記本上可以達到每秒 32 萬無磁盤通路的 http 請求。當通路磁盤,測試檔案在 16kb 時可達到每秒 29 萬個請求;而更大的檔案可到每秒 18.5 萬請求。以上測試使用 keep-alive 連接配接,如果不使用 keep-alive 這個數字可能降低 6 倍左右。

下圖是不同并發連接配接數測試的每秒請求數:

Lwan —— 每秒處理32萬請求的高性能Web伺服器

其中綠線是使用如下示例代碼的 hello world 擴充應用,棕色線是 100 位元組的檔案。

此外 lwan 也提供 api 擴充,示例代碼:

繼續閱讀