如何通过修改 Nginx 源码实现高效 worker 进程隔离机制?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2059个文字,预计阅读时间需要9分钟。
背景:最近我们线上网关替换为了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分钟。
背景:最近我们线上网关替换为了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 插件采集信息的分析,采集的数据条数如下。

