OpenResty 1.19.3.1 預覽版釋出 & 線上分享會預告
OpenResty 1.19.3.1 正式版正在籌備釋出中,本次先發布 RC0 預覽版,供社群測試,不推薦生產使用。
本次更新包含了不少重要的新 feature 和 重要的效能最佳化。 我們在 i9-9900K 測試環境上,用簡單的 Lua Hello world 介面,單 worker 的 QPS 可以從 221939 rps 提升到 269423 rps,有 20%+ 的提升。
在此致謝所有的貢獻者,也歡迎更多的貢獻者來一起共建 OpenResty。
同時我們也在籌備一個線上分享會議,主要介紹這些新的 feature 以及分享效能最佳化背後的故事。 歡迎掃碼關注我們的微信公眾號,接收會議通知,也歡迎大家來報名分享。
本次 RC0 包含以下重要變更
- 升級 Nginx 核心至 1.19.3.
- 升級 LuaJIT,從 Mike Pall 維護的的上游同步
- 最佳化:新增協程池來複用 Lua 協程
- 最佳化:依靠 LuaJIT 新增
lua_getexdata2()
和lua_setexdata2()
API,將單個請求內協程排程的時間複雜度從 O(n) 降低到 O(1) - 最佳化:在
tcpsock/udpsock:send(LUA_TABLE)
等 API 中避免 Lua number 到 Lua string 的轉化,減少建立不必要的 GC 物件 - 改進:SSL_* 階段設定的
ngx.ctx
,將被後續階段所繼承 - 新增:
ngx.ssl
模組的very_cert()
API 允許動態設定 CA 證書,開啟客戶端證書驗證 - 新增:
exit_worker_by_*
階段,可以更方便的在 worker 退出的階段執行任務 - 新增:
ngx.balancer
模組的recreate_request()
API,從而可以在 balancer 階段改寫請求資訊,並且透過這個 API 使之生效 - 新增:
ngx.req.socket(true?)
建立的 tcpsock 物件,也支援receiveany()
方法 - 新增:
ngx.ssl
模組的server_port()
API 可以獲取server_port
完整的 RC0 變更記錄請見:
https://github.com/openresty/openresty/releases/tag/v1.19.3.1rc0
下載原始碼包
歡迎大家下載試用,反饋意見,多謝!