apiTimeout

调用API时传入timeout参数

ZStack的RESTful API支持在HTTP header中通过X-API-Timeout传入timeout,单位为秒,例如:
X-API-Timeout: 300

该timeout会自动赋值给API产生的下游消息和agent command。

通过全局配置设置API的默认timeout

如果API调用者未通过X-API-Timeout HTTP Header指定timeout,ZStack会通过全局配置获得该API的默认timeout。

所有操作类API(非读API,例如query api)都有一个全局配置项控制其默认timeout。其全局配置如下:
category: apiTimeout
name: API的java class全名,例如:org.zstack.header.vm.APICreateVmInstanceMsg

单位为毫秒。

全局配置也支持字符串配置timeout的方式,例如300s, 1h, 2m, 3d, 10w, 1y,这里s/m/h/d/w/y分别代表:秒/分/小时/天/周/年,如没有后缀则代表毫秒。

配置创建云主机的timeout示例:
UpdateGlobalConfig category=apiTimeout name=org.zstack.header.vm.APICreateVmInstanceMsg value=3h

兼容历史版本的zstack.properties配置API timeout

历史版本(3.2.0之前)可以在zstack.properties配置API的默认超时时间,例如:
ApiTimeout.org.zstack.header.image.APIAddImageMsg = timeout::3h
3.2.0兼容这种方式。当升级到3.2.0时,在创建对应API的全局配置时,使用zstack.properties中配置的API timeout值作为该API全局配置的默认值。
Note: 升级到3.2.0后,通过zstack.properties配置API timeout的方式已不再需要,所有API的超时可通过全局配置设置。

注意事项

  • 读API未提供全局配置设置超时时间。
    读API主要为数据库读取操作,不应过长,默认超时时间为5分钟,可以在zstack.properties中通过api.timeout.syncCallAPI配置所有读API的超时时间,例如:
    api.timeout.syncCallAPI = 10m
  • 非API触发的内部消息的超时时间只能通过zstack.properties配置。
    非API触发的内部消息是指该消息是内部服务发起的,例如HA服务发出的StartVmInstanceMsg,此类内部消息的超时时间也只能通过zstack.properties配置,默认为30分钟:
    api.timeout.internalMessage = 30m