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