OpenResty® 通过 Lua 扩展 NGINX 实现的可伸缩的 Web 平台

最新! 新博客文章 在终端上用 restydoc 查看 OpenResty 文档 已发布。
最新! 新博客文章 在 OpenResty 中跨请求共享数据 已发布。
最新! 新博客文章 在 CentOS 8 上通过 dnf 安装 OpenResty 已发布。
最新! Test::Nginx 0.29 已发布。
最新! OpenResty 1.19.3.1 已发布。

OpenResty 1.19.3.1 Released

Johnny Wang , 10 Nov 2020 (created 07 Nov 2020)

We are happy to announce the new formal release, 1.19.3.1, of the OpenResty web platform based on NGINX and LuaJIT.

Download this version here.

The (portable) source code distribution, the Win32/Win64 binary distributions, and the pre-built binary Linux packages for Ubuntu, Debian, Fedora, CentOS, RHEL, Alpine, OpenSUSE, Amazon Linux are provided on this Download page.

Version Highlights

On the Intel Core i9-9900K CPU test environment, with the simple Lua Hello world interface, we can increase the QPS of a single worker from 221,939 rps to 269,423 rps, with a 20%+ improvement.

  • Upgraded the nginx core to 1.19.3.
  • Upgraded the LuaJIT, synchronized code from the official LuaJIT repository.
  • Now we recycle lua thread GC objects for our "light threads".
  • Added new Lua API functions thread.exdata2 as well as C API funcs lua_getexdata2 and lua_setexdata2, and reduced the time complexity of lookup meta info within a single request concatenation from O(n) to O(1).
  • Avoided use of lua_tolstring in ngx_http_lua_calc_strlen_in_table and other APIs which may result in the creation of unnecessary gc objects.
  • Shared ngx.ctx among SSL_* phases and the following phases.
  • Added exit_worker_by* to run Lua code upon nginx worker process exit.
  • Added the balancer.recreate_request function, which allows user to recreate request buffer in balancer phase.
  • Supported receiveany on ngx.req.socket(true?) socks.
  • Implemented the new ngx.ssl.server_port() API to get server port.
  • Now we detect SSE 4.2 instruction set support at runtime in our LuaJIT to support older Intel and AMD CPUs without this instruction set with the same LuaJIT binary, otherwise binaries built on newer hardware would not work on older CPUs due to the "Invalid instruction" CPU exception.
  • The ngx.flush(true) Lua API can now work properly for HTTP 2.0 requests.

Full Change logs

Complete change logs since the last (formal) release, 1.17.8.2, can be browsed in the page Change Log for 1.19.3.x.

Testing

We have run extensive testing on our Amazon EC2 test cluster and ensured that all the components (including the Nginx core) play well together. The latest test report can always be found here:

https://qa.openresty.org/

We also always run our OpenResty Edge commercial software based on the latest open source version of OpenResty in our own global CDN network (dubbed "mini CDN") powering our openresty.org and openresty.com websites. See https://openresty.com/ for more details.

Community Support

See the Community Page.

Commercial Support

Commercial technical support and real-time noninvasive online monitoring and profiling solution is provided through the official OpenResty XRay product.

Feedback

Feedback on this release is more than welcome. Feel free to create new GitHub issues or send emails to one of our mailing lists.