目前手上的项目是 fork 的 nginx ,业务因为觉得默认设置一个大的 worker_connections 会占用太多容器内存,所以想实现一个动态调整 ngx_connection_t 的功能,目前我设想了两个方案,希望可以讨论一下可行性。
- 直接使用 nginx 自带的 reload 的方法,这个实现起来应该比较简单。
- 调整数组 ngx_connection_t 的大小,这个就必须 new 一个新的数组再拷贝原数组的内容到新数组,同时可能还会涉及到一些并发的问题,如果在这里加锁也许会导致拷贝期间 nginx 不能对外服务?但是 new 一个新的数组开销可能比 new 一个 worker 小一点。
目前我可能更倾向于方法 1 ,总体工作量小一点而且不影响对外服务。