我使用Java客户端库的MetricServiceClient来获取StackDriver时间序列。我使用用户oauth令牌进行身份验证(此用户可以访问多个项目),但似乎在多个项目之间存在某种全局配额,因为当我一次只获取一个或两个项目时,我没有限制,但当我一次获取四个或五个不同的项目时,我开始受到如下错误的限制:
io.grpc.StatusRuntimeException: RESOURCE_EXHAUSTED: Insufficient tokens for quota 'DefaultGroup' and limit 'USER-100s' of service 'monitoring.googleapis.com' for consumer 'project_number:764086051850'.
我已经通过交替获取哪些项目来确认这一点,这样我就可以说它不是任何单个项目--它们都开始受到速率限制。另一件奇怪的事情是,错误消息中的project_number并不对应于我正在获取的任何项目,甚至没有访问它的权限--这对我来说毫无意义。
这似乎是每100秒请求数的配额,但我在所有项目上都将其设置为10,000,并且我几乎没有执行那么多请求,正如web控制台中的配额历史图表所确认的那样。
是否真的存在一些跨多个项目的全局配额,如果是,有什么方法可以解决它吗?对我来说,让单个用户访问多个项目要简单得多,而不必为所有项目制作服务帐户令牌。
发布于 2018-01-25 04:06:18
您正在使用的token quota是为使用Application Default Credentials (它使用一个共享的gcloud项目进行计费)的用户而设计的,虽然它的存在是为了让用户快速启动和运行,但不推荐用于实际的生产使用。因此,强烈建议您使用绑定到用户项目的适当service account来解决此问题。
https://stackoverflow.com/questions/47117779
复制相似问题