OpenResty 1.19.3.1 正式版正在籌備釋出中,本次先發布 RC0 預覽版,供社群測試,不推薦生產使用。

本次更新包含了不少重要的新 feature 和 重要的效能最佳化。 我們在 i9-9900K 測試環境上,用簡單的 Lua Hello world 介面,單 worker 的 QPS 可以從 221939 rps 提升到 269423 rps,有 20%+ 的提升。

在此致謝所有的貢獻者,也歡迎更多的貢獻者來一起共建 OpenResty。

同時我們也在籌備一個線上分享會議,主要介紹這些新的 feature 以及分享效能最佳化背後的故事。 歡迎掃碼關注我們的微信公眾號,接收會議通知,也歡迎大家來報名分享。

我們的微信公眾號

本次 RC0 包含以下重要變更

  1. 升級 Nginx 核心至 1.19.3.
  2. 升級 LuaJIT,從 Mike Pall 維護的的上游同步
  3. 最佳化:新增協程池來複用 Lua 協程
  4. 最佳化:依靠 LuaJIT 新增 lua_getexdata2()lua_setexdata2() API,將單個請求內協程排程的時間複雜度從 O(n) 降低到 O(1)
  5. 最佳化:在 tcpsock/udpsock:send(LUA_TABLE) 等 API 中避免 Lua number 到 Lua string 的轉化,減少建立不必要的 GC 物件
  6. 改進:SSL_* 階段設定的 ngx.ctx,將被後續階段所繼承
  7. 新增:ngx.ssl 模組的 very_cert() API 允許動態設定 CA 證書,開啟客戶端證書驗證
  8. 新增:exit_worker_by_* 階段,可以更方便的在 worker 退出的階段執行任務
  9. 新增:ngx.balancer 模組的 recreate_request() API,從而可以在 balancer 階段改寫請求資訊,並且透過這個 API 使之生效
  10. 新增:ngx.req.socket(true?) 建立的 tcpsock 物件,也支援 receiveany() 方法
  11. 新增:ngx.ssl 模組的 server_port() API 可以獲取 server_port

完整的 RC0 變更記錄請見:

https://github.com/openresty/openresty/releases/tag/v1.19.3.1rc0

下載原始碼包

歡迎大家下載試用,反饋意見,多謝!

https://openresty.org/download/openresty-1.19.3.1rc0.tar.gz