Apigee 的已知问题

您正在查看 Apigee Edge 文档。
前往 Apigee X 文档
信息

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

其他 Edge 已知问题

以下各部分介绍了 Edge 的各种已知问题。

区域/摘要 已知问题
缓存过期导致 cachehit 值不正确

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

解决方法:在第一次通话后立即重复此过程(进行第二次通话)。

将 InvalidateCache 政策 PurgeChildEntries 设置为 true 不起作用

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

解决方法:使用 KeyValueMapOperations 政策迭代缓存版本,从而无需进行缓存失效。

对 SharedFlow 或 API 代理的并发部署请求可能会导致管理服务器中出现不一致的状态,其中多个修订显示为已部署。

例如,当使用不同修订版本实现 CI/CD 部署流水线的并发运行时,可能会发生这种情况。为避免此问题,请避免在当前部署完成之前部署 API 代理或 SharedFlow。

解决方法:避免并发 API 代理或 SharedFlow 部署。

Edge API Analytics 中显示的 API 调用次数可能包含重复数据。

Edge API Analytics 有时可能会包含 API 调用的重复数据。在这种情况下,Edge API Analytics 中显示的 API 调用次数高于第三方分析工具中显示的类似值。

解决方法导出 Google Analytics 数据,然后使用 gateway_flow_id 字段删除数据中的重复项。

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
  • 138438484:不支持 多个服务器
SAML 身份提供方 自定义网域不支持具有 SAML 身份提供商的单一退出 (SLO)。如需通过 SAML 身份提供商启用自定义网域,请在配置 SAML 设置时将退出网址字段留空。
门户管理员
  • 目前不支持多用户同时进行门户更新(例如页面、主题背景、CSS 或脚本修改)。
  • 如果您从门户中删除 API 参考文档页面,则无法重新创建该页面;您需要删除然后重新添加 API 产品,再重新生成 API 参考文档。
  • 配置内容安全政策时,更改最多可能需要 15 分钟才能完全生效。
  • 自定义门户主题背景时,更改最多可能需要 5 分钟才能完全生效。
门户功能
  • 在未来版本中,将把搜索集成到集成式门户中。

Edge for Private Cloud 的已知问题

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

领域 已知问题
Edge for Private Cloud 4.53.00 412696630:启动时无法加载密钥库

edge-message-processor 组件可能会在启动时间歇性地无法加载一个或多个密钥库,导致 API 代理使用密钥库时出现流量错误。 重新启动 edge-message-processor 组件通常可以解决此问题。

Edge for Private Cloud 4.53.00 Java Callout

尝试使用名称“BC”加载 Bouncy Castle 加密提供程序的客户 Java 回调可能会失败,因为默认提供程序已更改为 Bouncy Castle FIPS 以支持 FIPS。要使用的新提供程序名称为 “BCFIPS”

Edge for Private Cloud 4.52.01 Mint 更新

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

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

问题:如果您已启用创收功能,并且要全新安装 4.52.01 或从之前的 Private Cloud 版本升级,则会遇到消息处理器问题。打开的线程数会逐渐增加,最终导致资源耗尽。在 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 之前执行 初步步骤

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。