我在golang Cloud Function错误中注意到了很多数字:
Error: quota exceeded (Quota exceeded for quota group 'CPUMilliSeconds' and limit 'CPU allocation in function invocations for us-central1 per 100 seconds' of service
奇怪的是,我的每秒调用次数不超过60次,高峰时运行着30个活动实例云功能。
我知道您最多可以有1000个并发实例,在我的情况下,这要达到CPU限制已经很远了。
控制Cloud Function CPU执行的最佳方法是什么?
您是否建议使用CloudRun代替Cloud Functions来执行更多CPU“需求任务”?
答案 0 :(得分:2)
Google Cloud Functions的配额限制之一是GHz-seconds,这表示所有正在运行的功能消耗的CPU秒总数,当您在100 s的时间内达到该配额时,会出现错误。由于您的函数承担着计算量大的工作量,因此更容易达到极限。
关于如何控制CPU使用率,唯一的方法是延迟您的请求,以将使用率保持在这些限制以下。另一种选择是给该函数较少的memory,这反而会适得其反,因为您的函数将花费更长的时间,并且无论如何您都可能遇到相同的麻烦。
正如Doug所指出的,Cloud Functions不适用于您的用例,Cloud Run都不适用。 GCE实例更适合进行计算密集型操作,因为它没有内存限制,但是提供了您所提供的数量,它们还允许在Container Optimized OS中运行容器化的代码。
希望这会有所帮助。