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 控制台监控大量 pod 和路由(例如,共 100 个路由),您可以通过将 Fuse Console 的 subrequestOutputBufferSize
环境变量设置为在 60m
到 100m
之间来解决加载超时问题。
如何设置这些环境变量取决于您在 Openshift 4.x 上安装 Fuse 控制台:
- 使用 Fuse Console Operator
- 通过使用 Fuse Console 模板
2.6.1. Fuse Console Operator 安装的性能调整
在 Openshift 4.x 上,您可以在部署 Fuse 控制台之前或之后设置 Nginx 性能调优环境变量。如果您随后这样做,OpenShift 会重新部署 Fuse 控制台。
先决条件
-
有
集群管理员
对 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 视图中,向下滚动到 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 控制台。
先决条件
-
有
集群管理员
对 OpenShift 集群的访问权限。 - 您已在 OpenShift 上安装 Fuse 控制台模板,如在 OpenShift 4.x 服务器 上安装 Fuse 镜像流和模板 中所述。
步骤
您可以在部署 Fuse 控制台之前或之后设置环境变量。
在部署 Fuse 控制台前设置环境变量:
确定您要使用的 Fuse 控制台模板:
-
集群模板(
fuse-console-cluster-os4.json
) -
带有可配置的 RBAC 的集群模板(
fuse-console-cluster-rbac.yml
) -
命名空间模板(
fuse-console-namespace-os4.json
) -
带有可配置的 RBAC (
fuse-console-namespace-rbac.yml
)的命名空间模板
-
集群模板(
编辑您要用于 Fuse 控制台的 Fuse Console 模板的本地副本,使其包含
NGINX_CLIENT_BODY_BUFFER_SIZE
、NGINX_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 控制台中查看应用程序的性能调整
通过增强的 Fuse 控制台性能调优功能,您可以查看具有大量 MBeans 的应用程序。要使用此功能,请执行以下步骤。
先决条件
-
有
集群管理员
对 OpenShift 集群的访问权限。 - 您已安装 Fuse Console Operator,如使用 OperatorHub 在 OpenShift 4.x 上安装和部署 Fuse 控制台 中所述。
步骤
增加应用程序的内存限值。
需要增加内存限值,例如从 256Mi 增加到 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 subrequest 响应 while to client" 错误,请应用 第 2.6.1 节 “Fuse Console Operator 安装的性能调整” 部分中提到的解决方案。