2.6. 在 OpenShift 4.x 上调整 Fuse 控制台的性能
默认情况下,Fuse 控制台使用以下 Nginx 设置:
-
clientBodyBufferSize: 256k
-
proxyBuffers: 16 128k
-
subrequestOutputBufferSize: 10m
注: 有关这些设置的描述,请参阅 Nginx 文档 :http://nginx.org/en/docs/dirindex.html
要调整 Fuse 控制台的性能,您可以设置任何 clientBodyBufferSize
、proxyBuffers
和 subrequestOutputBufferSize
环境变量。例如,如果您使用 Fuse Console 监控多个 pod 和路由(例如,总共 100 个路由),您可以通过将 Fuse Console 的 subrequestOutputBufferSize
环境变量设置为 100
,从而解决加载超时问题。
m
如何设置这些环境变量取决于您如何在 Openshift 4.x 上安装 Fuse 控制台:
- 使用 Fuse Console Operator
- 使用 Fuse Console 模板
2.6.1. Fuse Console Operator 安装的性能调优
在 Openshift 4.x 上,您可以在部署 Fuse 控制台前或之后设置 Nginx 性能调优环境变量。如果您这样做了,OpenShift 会重新部署 Fuse 控制台。
先决条件
-
具有
集群 admin
访问权限,可以访问 OpenShift 集群。 - 您已安装 Fuse Console Operator,如使用 OperatorHub 在 OpenShift 4.x 上安装和部署 Fuse 控制台 中所述。
流程
您可以在部署 Fuse 控制台前或之后设置环境变量。
在部署 Fuse 控制台前设置环境变量:
- 在 OpenShift web 控制台中,在安装了 Fuse Console Operator 的项目中,选择 Operators> Installed Operators> Red Hat Integration - Fuse Console。
- 单击 Hawtio 选项卡,然后单击 Create Hawtio。
- 在 Create Hawtio 页面中,在 Form view 中滚动到 Config> Nginx 部分。
展开 Nginx 部分,然后设置环境变量。例如:
- clientBodyBufferSize: 256k
- proxyBuffers: 16 128k
- subrequestOutputBufferSize: 100m
- 保存配置。
- 点 Create 部署 Fuse 控制台。
- 部署完成后,打开 Deployments> fuse-console 页面,然后点 Environment 来验证环境变量是否位于列表中。
在部署 Fuse 控制台后设置环境变量:
- 在 OpenShift Web 控制台中,打开部署了 Fuse 控制台的项目。
- 选择 Operators> Installed Operators> Red Hat Integration - Fuse Console。
- 单击 Hawtio 选项卡,然后单击 fuse-console。
- 选择 Actions> Edit Hawtio。
-
在 Editor 窗口中,向下滚动到
spec
部分。 在
spec
部分,添加新的nginx
部分并指定一个或多个环境变量,例如:apiVersion: hawt.io/v1alpha1 kind: Hawtio metadata: name: fuse-console spec: type: Namespace nginx: clientBodyBufferSize: 256k proxyBuffers: 16 128k subrequestOutputBufferSize: 100m . . .
点击 Save。
OpenShift 重新部署 Fuse 控制台。
- 重新部署完成后,打开 Workloads> Deployments> fuse-console 页面,然后点 Environment 查看列表中的环境变量。
2.6.2. Fuse Console 模板安装的性能调优
在 Openshift 4.x 上,您可以在部署 Fuse 控制台前或之后设置 Nginx 性能调优环境变量。如果您这样做了,OpenShift 会重新部署 Fuse 控制台。
先决条件
-
具有
集群 admin
访问权限,可以访问 OpenShift 集群。 - 您已在 OpenShift 上安装 Fuse 控制台模板,如在 OpenShift 4.x 服务器 上安装 Fuse 镜像流和模板 中所述。
流程
您可以在部署 Fuse 控制台前或之后设置环境变量。
在部署 Fuse 控制台前设置环境变量:
确定您要使用的 Fuse Console 模板:
-
集群模板(
fuse-console-cluster-os4.json
) -
带有可配置 RBAC(
fuse-console-cluster-rbac.yml
)的集群模板。 -
命名空间模板(
fuse-console-namespace-os4.json
) -
带有可配置 RBAC(
fuse-console-namespace-rbac.yml
)的命名空间模板。
-
集群模板(
编辑用于 Fuse 控制台模板的本地副本,以包括
NGINX_CLIENT_BODY_BUFFER_SIZE
、NINX_PROXY_BUFFERS
和/或NGINX_SUBREQUEST_OUTPUT_BUFFER_SIZE
环境变量,如下例所示:apiVersion: apps.openshift.io/v1 kind: DeploymentConfig metadata: name: fuse-console spec: template: spec: containers: - env: - name: NGINX_CLIENT_BODY_BUFFER_SIZE value: 256k - name: NGINX_PROXY_BUFFERS value: 16 128k - name: NGINX_SUBREQUEST_OUTPUT_BUFFER_SIZE value: 100m
- 保存您的更改。
- 按照 在 OpenShift 4.x 中设置 Fuse 控制台 中所述,请按照安装和部署 Fuse 控制台 的步骤进行操作。
在部署 Fuse 控制台后设置环境变量:
- 在终端窗口中,登录 OpenShift 集群。
打开在其中部署 Fuse 控制台的项目。例如,如果在
myfuse
项目中部署了 Fuse 控制台,使用以下命令:oc project myfuse
获取 Fuse 控制台部署的名称:
oc get deployments
此命令返回当前项目中运行的部署列表。例如:
NAME READY UP-TO-DATE AVAILABLE AGE fuse-console 1/1 1 1 114m
运行以下一个或多个命令来设置 Fuse 控制台部署的环境变量:
oc set env dc/fuse-console NGINX_CLIENT_BODY_BUFFER_SIZE="256k" oc set env dc/fuse-console NGINX_PROXY_BUFFERS="16 128k" oc set env dc/fuse-console NGINX_SUBREQUEST_OUTPUT_BUFFER_SIZE="10m"
OpenShift 重新部署 Fuse 控制台。
重新部署完成后,验证环境变量设置:
获取 Fuse Console pod 名称:
oc get pods
运行以下命令来查看环境设置
oc exec <fuse-console-podname> -- cat /opt/app-root/etc/nginx.d/nginx-gateway.conf | grep "Performance tuning" -A 3
例如,如果 pod 名称是
fuse-console-6646cbbd4c-9rplg
,请运行以下命令:oc exec fuse-console-6646cbbd4c-9rplg -- cat /opt/app-root/etc/nginx.d/nginx-gateway.conf | grep "Performance tuning" -A 3
2.6.3. 在 Fuse Console 上查看应用程序的性能调整
通过提高 Fuse 控制台的性能调整功能,您可以查看有大量 MBeans 的应用程序。要使用这个功能,请执行以下步骤:
先决条件
-
具有
集群 admin
访问权限,可以访问 OpenShift 集群。 - 您已安装 Fuse Console Operator,如使用 OperatorHub 在 OpenShift 4.x 上安装和部署 Fuse 控制台 中所述。
流程
为应用程序增加内存限值。
将内存限制增加到 512 Mi,因此应用程序在到达 Fuse 控制台前不会发生 OOM 错误。对于 Fuse 快速入门,请编辑应用程序的
src/main/jkube/deployment.yml
文件。spec: template: spec: containers: - resources: [...] limits: cpu: "1.0" memory: 512Mi
- 确保 Fuse Console Deployment 或 DeploymentConfig 有足够内存限制。如果没有足够的值,将限制从 200Mi 增加到 512Mi。
- 如果您在 nginx 日志中看到"too big 子请求响应时发送到客户端"错误,请应用 第 2.6.1 节 “Fuse Console Operator 安装的性能调优” 部分提到的解决方案。