如何通过修改 Nginx 源码实现高效 worker 进程隔离机制?

2026-05-27 23:150阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2059个文字,预计阅读时间需要9分钟。

如何通过修改 Nginx 源码实现高效 worker 进程隔离机制?

背景:最近我们线上网关替换为了APISIX,也遇到了一些问题,其中有一个比较难解决的问题是APISIX的进程隔离问题。

APISIX不同类型请求的相互影响:首先,我们遇到的问题是APISIX的Prometheus插件问题。

背景

最近我们线上网关替换为了 APISIX,也遇到了一些问题,有一个比较难解决的问题是 APISIX 的进程隔离问题。

APISIX 不同种类请求的互相影响

首先我们遇到的就是 APISIX Prometheus 插件在监控数据过多时影响正常业务接口响应的问题。当启用 Prometheus 插件以后,可以通过 HTTP 接口获取 APISIX 内部采集的监控信息然后展示到特定的看板中。

curl 172.30.xxx.xxx:9091/apisix/prometheus/metrics

我们网关接入的业务系统非常繁杂,有 4000+ 路由,每次拉取 Prometheus 插件时,metrics 条数超过 50 万条,大小超过 80M+,这部分信息需要在 lua 层拼装发送,当请求时会造成处理此请求的 worker 进程 CPU 占用非常高,处理的时间超过 2s,导致此 worker 进程处理正常业务请求会有 2s+ 的延迟。

当时临时想到的措施是修改 Prometheus 插件,减少采集发送的范围和数量,先临时绕过了此问题。经过对 Prometheus 插件采集信息的分析,采集的数据条数如下。

阅读全文

本文共计2059个文字,预计阅读时间需要9分钟。

如何通过修改 Nginx 源码实现高效 worker 进程隔离机制?

背景:最近我们线上网关替换为了APISIX,也遇到了一些问题,其中有一个比较难解决的问题是APISIX的进程隔离问题。

APISIX不同类型请求的相互影响:首先,我们遇到的问题是APISIX的Prometheus插件问题。

背景

最近我们线上网关替换为了 APISIX,也遇到了一些问题,有一个比较难解决的问题是 APISIX 的进程隔离问题。

APISIX 不同种类请求的互相影响

首先我们遇到的就是 APISIX Prometheus 插件在监控数据过多时影响正常业务接口响应的问题。当启用 Prometheus 插件以后,可以通过 HTTP 接口获取 APISIX 内部采集的监控信息然后展示到特定的看板中。

curl 172.30.xxx.xxx:9091/apisix/prometheus/metrics

我们网关接入的业务系统非常繁杂,有 4000+ 路由,每次拉取 Prometheus 插件时,metrics 条数超过 50 万条,大小超过 80M+,这部分信息需要在 lua 层拼装发送,当请求时会造成处理此请求的 worker 进程 CPU 占用非常高,处理的时间超过 2s,导致此 worker 进程处理正常业务请求会有 2s+ 的延迟。

当时临时想到的措施是修改 Prometheus 插件,减少采集发送的范围和数量,先临时绕过了此问题。经过对 Prometheus 插件采集信息的分析,采集的数据条数如下。

阅读全文