nginx_lua为什么比PHP性能高

之前做过测试用nginx_lua实现简易的API是PHP的8倍,线上复杂逻辑API是PHP的4倍。

最近在回顾之前实践经验的时候,有一个问题一直想来想去,之前并没有深入思考过,为什么nginx_lua的性能比PHP高这么多?

以下是最近思考的以下原因:
0、nginx_lua是把lua作为nginx的一个模块,是异步非阻塞的方式
1、lua运行时占用内存特别少。
2、Openresty是让Web服务直接跑在Nginx服务内部,充分利用Nginx非阻塞I/O模型。

一、同步和异步
同步和异步是一种消息通信机制【个人理解是一种调用后的返回时机】
同步是指调用者发出一个调用后,主动等待这个调用结果。
异步是指调用者发出一个调用后,没有结果直接返回,被调用者通过状态、通知来告知调用者,或通过回调函数来处理这个调用。

二、阻塞和非阻塞
阻塞和非阻塞关注的是程序【当前线程?】在等待调用结果时的状态。
阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。
非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。

参考:
知乎:怎样理解阻塞非阻塞与同步异步的区别?
深入理解并发 / 并行,阻塞 / 非阻塞,同步 / 异步
深入浅出 nginx lua 为什么高性能
OpenResty搭建高性能服务端

发表评论

电子邮件地址不会被公开。 必填项已用*标注