![nginx 动态模块如何工作?](https://linux22.com/image/779882/nginx%20%E5%8A%A8%E6%80%81%E6%A8%A1%E5%9D%97%E5%A6%82%E4%BD%95%E5%B7%A5%E4%BD%9C%EF%BC%9F.png)
我想知道动态模块实际上是如何与 Nginx 的自定义安装一起工作的。
- 它们已经编译好了吗?
- 在这种情况下,是否意味着工作进程在子进程中使用它们?
- 如果没有,它们如何添加到核心二进制文件中?
- 为什么我们不将它们包含在核心二进制文件中以提高性能?
请帮帮我,我很困惑。
答案1
它们已经编译好了吗?
这取决于包创建者是否已经编译并包含动态模块。
在这种情况下,是否意味着工作进程在子进程中使用它们?
我不太明白你的意思。动态模块中的代码与 nginx 中的其他代码一样。只是加载机制不同。
如果没有,它们如何添加到核心二进制文件中?
它们在启动时加载到内存中并挂入请求处理流程。它们不会被添加到核心二进制文件中。
为什么我们不将它们包含在核心二进制文件中以提高性能?
我认为动态模块和静态模块之间的性能没有任何差异。
将所有模块都包含在核心二进制文件中是没有意义的,因为对大多数人来说,这些代码都是死代码。加载时,死代码仍会占用内存。
此外,发布过程会非常痛苦。除了核心模块之外,您还需要决定在发布中包含其他模块的哪些更改。这会增加发布所需的时间。