Apigee 的已知问题

您正在查看 Apigee Edge 文档。
转到 Apigee X 文档
信息

以下各部分介绍了 Apigee 的已知问题。在大多数情况下,列出的问题会在未来的版本中更正。

Miscellaneous Edge 已知问题

以下部分介绍了 Edge 的其他已知问题。

领域 已知问题
缓存过期导致 cachehit 值不正确

如果在 LookupCache 政策之后使用 cachehit 流变量,由于为异步行为分派调试点的方式,LookupPolicy 会在执行回调之前填充 DebugInfo 对象,从而导致错误。

权宜解决方法:在第一次调用后立即再次重复该过程(进行第二次调用)。

将 InvalidateCache 政策 PurgeChildEntries 设置为 true 无法正常工作

在 InvalidateCache 政策中设置 PurgeChildEntries 应仅完全清除 KeyFragment 元素值,但会清除整个缓存。

权宜解决方法:使用 KeyValueMapOperations 政策迭代缓存版本控制,并避免缓存失效。

Edge 界面的已知问题

以下部分介绍了 Edge 界面的已知问题。

已知问题
在将组织映射到身份区域后,无法通过导航栏访问 Edge SSO 区域管理页面 将组织连接到身份区域后,您无法再通过选择“管理”>“SSO”从左侧导航栏访问 Edge SSO 区域管理页面。如需解决此问题,请使用以下网址直接导航至页面:https://apigee.com/sso

集成式门户的已知问题

以下部分介绍了集成式门户的已知问题。

领域 已知问题
SmartDocs
  • 当您使用规范编辑器创建规范并在门户上使用 SmartDocs 发布 API 时,Apigee Edge 支持 OpenAPI 规范 3.0,但部分功能尚不受支持。

    例如,OpenAPI 规范 3.0 的以下功能不受支持:

    • 用于组合和扩展架构的 allOf 属性
    • 远程引用

    如果 OpenAPI 规范中引用了不受支持的功能,则在某些情况下,工具会忽略该功能,但仍呈现 API 参考文档。在其他情况下,不受支持的功能将导致错误,进而导致 API 参考文档无法成功呈现。无论哪种情况,您都需要修改 OpenAPI 规范,以避免使用不受支持的功能,直到将来的版本支持它为止。

    注意:在呈现 API 参考文档时,规范编辑器比 SmartDocs 的限制更宽松,因此您在不同工具之间可能会获得不同的结果。

  • 在门户中使用“试用此 API”时,无论如何设置 OpenAPI 规范中 consumes 的值,Accept 标头都设置为 application/json
SAML 身份提供方 自定义网域不支持使用 SAML 身份提供方的单点登录 (SLO)。如需启用具有 SAML 身份提供方的自定义网域,请在配置 SAML 设置时将退出网址字段留空。
门户管理员
  • 目前不支持多用户同时进行门户更新(例如页面、主题背景、CSS 或脚本修改)。
  • 如果您从门户中删除 API 参考文档页面,则无法重新创建该页面;您需要删除然后重新添加 API 产品,再重新生成 API 参考文档。
  • 配置内容安全政策时,所做更改最长可能需要 15 分钟才能完全应用。
  • 自定义门户主题背景时,更改最多可能需要 5 分钟才能完全生效。
门户功能
  • 在未来版本中,将把搜索集成到集成式门户中。

Edge for Private Cloud 的已知问题

以下各部分介绍了 Edge for Private Cloud 的已知问题。

已知问题
4.53.00 SSO 和新界面安装

此问题会影响尝试在启用了 FIPS 的 RHEL 8 上安装 SSO 或新界面的 Edge Private Cloud 4.53.00 用户。

受影响的组件:单点登录和新界面

问题:如果您在启用了 FIPS 的 RHEL 8 操作系统上安装 SSO 或新界面,安装会失败。

解决方法:我们建议您使用功能齐全且符合界面功能需求的经典界面。

Edge for Private Cloud 4.52.01 Mint 更新

此问题仅影响使用 MINT 或在 Edge for Private Cloud 安装中启用了 MINT 的用户。

受影响的组件:edge-message-processor

问题:如果您已启用创收功能,并以全新安装的方式安装 4.52.01 或从旧版私有云升级,则会遇到消息处理器问题。打开的线程数会逐渐增加,导致资源耗尽。edge-message-processor system.log 中显示以下异常:

Error injecting constructor, java.lang.OutOfMemoryError: unable to create new native thread
Apigee HTTP/2 漏洞

最近在 HTTP/2 协议的多个实现中发现了拒绝服务 (DoS) 漏洞 (CVE-2023-44487),包括 Apigee Edge for Private Cloud。该漏洞可能会导致 Apigee API 管理功能遭受 DoS 攻击。如需了解详情,请参阅 Apigee 安全公告 GCP-2023-032

Edge for Private Cloud 路由器管理服务器组件会向互联网公开,因此可能容易受到攻击。虽然 Edge for Private Cloud 的其他 Edge 专用组件的管理端口上启用了 HTTP/2,但这些组件都不会向互联网公开。在非 Edge 组件(如 Cassandra、Zookeeper 等)上,未启用 HTTP/2。我们建议您采取以下步骤来解决 Edge for Private Cloud 漏洞:

如果您使用的是 Edge Private Cloud 4.51.00.11 或更高版本,请按以下步骤操作:

  1. 更新管理服务器

    1. 在每个管理服务器节点上,打开 /opt/apigee/customer/application/management-server.properties
    2. 将以下代码行添加到属性文件中:
      conf_webserver_http2.enabled=false
    3. 重启管理服务器组件:
      apigee-service edge-management-server restart
  2. 更新消息处理器

    1. 在每个消息处理器节点上,打开 /opt/apigee/customer/application/message-processor.properties
    2. 将以下代码行添加到属性文件中:
      conf_webserver_http2.enabled=false
    3. 重启消息处理器组件:
      apigee-service edge-message-processor restart
  3. 更新路由器

    1. 在每个路由器节点上,打开 /opt/apigee/customer/application/router.properties
    2. 将以下代码行添加到属性文件中:
      conf_webserver_http2.enabled=false
    3. 重启消息处理器组件:
      apigee-service edge-router restart
  4. 更新 QPID

    1. 在每个 QPID 节点上,打开 /opt/apigee/customer/application/qpid-server.properties
    2. 将以下代码行添加到属性文件中:
      conf_webserver_http2.enabled=false
    3. 重启消息处理器组件:
      apigee-service edge-qpid-server restart
  5. 更新 Postgres

    1. 在每个 Postgres 节点上,打开 /opt/apigee/customer/application/postgres-server.properties
    2. 将以下代码行添加到属性文件中:
      conf_webserver_http2.enabled=false
    3. 重启消息处理器组件:
      apigee-service edge-postgres-server restart

如果您使用的是低于 4.51.00.11 的 Edge for Private Cloud 版本,请按以下步骤操作:

  1. 更新管理服务器

    1. 在每个管理服务器节点上,打开 /opt/apigee/customer/application/management-server.properties
    2. 将以下两行代码添加到属性文件中:
      conf_webserver_http2.enabled=false
      conf/webserver.properties+http2.enabled=false
    3. 重启管理服务器组件:
      apigee-service edge-management-server restart
  2. 更新消息处理器

    1. 在每个消息处理器节点上,打开 /opt/apigee/customer/application/message-processor.properties
    2. 将以下两行代码添加到属性文件中:
      conf_webserver_http2.enabled=false
      conf/webserver.properties+http2.enabled=false
    3. 重启消息处理器组件:
      apigee-service edge-message-processor restart
  3. 更新路由器

    1. 在每个路由器节点上,打开 /opt/apigee/customer/application/router.properties
    2. 将以下两行代码添加到属性文件中:
      conf_webserver_http2.enabled=false
      conf/webserver.properties+http2.enabled=false
    3. 重启消息处理器组件:
      apigee-service edge-router restart
  4. 更新 QPID

    1. 在每个 QPID 节点上,打开 /opt/apigee/customer/application/qpid-server.properties
    2. 将以下两行代码添加到属性文件中:
      conf_webserver_http2.enabled=false
      conf/webserver.properties+http2.enabled=false
    3. 重启消息处理器组件:
      apigee-service edge-qpid-server restart
  5. 更新 Postgres

    1. 在每个 Postgres 节点上,打开 /opt/apigee/customer/application/postgres-server.properties
    2. 将以下两行代码添加到属性文件中:
      conf_webserver_http2.enabled=false
      conf/webserver.properties+http2.enabled=false
    3. 重启消息处理器组件:
      apigee-service edge-postgres-server restart
更新到版本 4.52 时升级 Postgresql

Apigee-postgresql 在从 Edge for Private Cloud 4.50 或 4.51 升级到 4.52 时遇到问题。这些问题主要出现在表数量超过 500 时。

您可以通过运行以下 SQL 查询来检查 Postgres 中的表总数:

select count(*) from information_schema.tables

解决方法 将 Apigee Edge 4.50.00 或 4.51.00 升级到 4.52.00时,请务必先执行 预处理步骤,然后再升级 Apigee-postgresql。

RHEL 8.0 上的 apigee-mirror

apigee-mirror 不适用于 Red Hat Enterprise Linux (RHEL) 8.0。

解决方法:作为解决方法,请在搭载较低版本 RHEL 或其他受支持的操作系统的服务器上为 Apigee 安装 apigee-mirror。然后,即使您在 RHEL 8.0 服务器上安装了 Apigee,也可以使用镜像添加软件包。

LDAP 政策

149245401:通过 LDAP 资源配置的 JNDI 的 LDAP 连接池设置未反映,并且 JNDI 默认设置会导致每次都建立一次性连接。 因此,每次都会打开和关闭连接以供单次使用,从而每小时与 LDAP 服务器建立大量连接。

临时解决方法:

如需更改 LDAP 连接池属性,请按以下步骤在所有 LDAP 政策中设置全局更改。

  1. 如果配置属性文件尚不存在,请创建一个:
    /opt/apigee/customer/application/message-processor.properties
  2. 将以下内容添加到该文件中(根据您的 LDAP 资源配置要求替换 Java 命名和目录接口 [JNDI] 属性的值)。
    bin_setenv_ext_jvm_opts="-Dcom.sun.jndi.ldap.connect.pool.maxsize=20
    -Dcom.sun.jndi.ldap.connect.pool.prefsize=2
    -Dcom.sun.jndi.ldap.connect.pool.initsize=2
    -Dcom.sun.jndi.ldap.connect.pool.timeout=120000
    -Dcom.sun.jndi.ldap.connect.pool.protocol=ssl"
  3. 确保文件 /opt/apigee/customer/application/message-processor.properties 归 apigee:apigee 所有。
  4. 重启每个消息处理器。

如需验证连接池 JNDI 属性是否生效,您可以执行 tcpdump 来观察 LDAP 连接池随时间的推移而发生的行为。

请求处理延迟时间过高

139051927:消息处理器中发现的代理处理延迟时间过长,影响了所有 API 代理。症状包括处理时间比正常 API 响应时间延迟 200-300 毫秒,即使 TPS 较低,也可能会随机发生。如果消息处理器建立的目标服务器超过 50 个,就可能会出现这种情况。

根本原因:消息处理程序会保留一个缓存,用于将目标服务器网址映射到 HTTPClient 对象,以便与目标服务器建立出站连接。默认情况下,此设置设为 50,对于大多数部署而言可能过低。如果部署在设置中包含多个组织/环境组合,并且目标服务器数量总计超过 50 个,则目标服务器网址会不断被从缓存中驱逐,从而导致延迟。

验证:如需确定目标服务器网址驱逐是否导致了延迟问题,请在消息处理器 system.logs 中搜索关键字“onEvict”或“Eviction”。如果日志中存在这些错误,则表示目标服务器网址因缓存大小过小而被从 HTTPClient 缓存中驱逐。

解决方法:对于 Edge for Private Cloud 版本 19.01 和 19.06,您可以修改和配置 HTTPClient 缓存 /opt/apigee/customer/application/message-processor.properties

conf/http.properties+HTTPClient.dynamic.cache.elements.size=500

然后重启消息处理器。对所有消息处理器进行相同的更改。

例如,值为 500。设置的最佳值应大于消息处理器要连接到的目标服务器数量。将此属性设置得更高不会产生任何副作用,唯一的影响是消息处理器代理请求处理时间会缩短。

注意:Edge for Private Cloud 50.00 版的默认设置为 500。

键值对映射的多个条目

157933959:对范围限定为组织级别或环境级别的同一键值对映射 (KVM) 进行并发插入和更新会导致数据不一致和更新丢失。

注意:此限制仅适用于 Edge for Private Cloud。Edge for Public Cloud 和 Hybrid 没有此限制。

如需在 Edge for Private Cloud 中使用权宜解决方法,请在 apiproxy 作用域中创建 KVM。