我有一个分布式Openwhisk设置,当我尝试一次对一个用户执行30多个请求时,我收到以下错误:
错误:无法调用操作"素数":并发过多 请求中(计数:30,允许:30(
知道我如何增加这个数字吗?
如果您使用的是 ansible 方法来部署 OpenWhisk,则可以使用以下 ansible-playbook 环境变量覆盖进行部署
-e limit_invocations_per_minute=999999 -e limit_invocations_concurrent=999999
如果要执行其他类型的部署,则需要使用相应的环境变量来部署控制器容器,以覆盖任何这些相关值。
"LIMITS_ACTIONS_INVOKES_PERMINUTE": "{{ limits.invocationsPerMinute }}"
"LIMITS_ACTIONS_INVOKES_CONCURRENT": "{{ limits.concurrentInvocations }}"
"LIMITS_TRIGGERS_FIRES_PERMINUTE": "{{ limits.firesPerMinute }}"
"LIMITS_ACTIONS_SEQUENCE_MAXLENGTH": "{{ limits.sequenceMaxLength }}"
添加到@csantanapr答案中,您可以将它们添加到openwhisk.yml playbook中。
ansible-playbook -i environments/<environment> -e limit_invocations_per_minute=999999 -e limit_invocations_concurrent=999999 openwhisk.yml
如果您使用非 ansible 方法来运行 openwhisk,您可以在此处参考问题。你也可以参考这个。
您可以修改文件core/standalone/src/main/resources/standalone.conf
。如果你看这部分:
config {
controller-instances = 1
limits-actions-sequence-maxLength = 50
limits-triggers-fires-perMinute = 60
limits-actions-invokes-perMinute = 60
limits-actions-invokes-concurrent = 30
}
您可以修改limits-actions-invokes-concurrent
的值和任何其他限制。
然后,当您运行 openwhisk 时,您需要通过-c
参数、--args
参数提供文件。这样:
sudo ./gradlew core:standalone:bootRun --args='-c /path/to/openwhisk/core/standalone/src/main/resources/standalone.conf'
就是这样。
你也可以"构建然后运行",如下所示:
sudo ./gradlew :core:standalone:build
sudo java -jar ./bin/openwhisk-standalone.jar -c /path/to/openwhisk/core/standalone/src/main/resources/standalone.conf