MC を REST Call した際に 500 エラー が発生する

フォローする

Management Console (リポジトリ) のREST CALL 機能を利用してロボットを呼び出した際に、

 500 Internal Server Error

が発生する場合、より詳細な状況を確認するために、以下の設定をして状況を確認してください。

log4jファイルの出力レベル設定

You will then have to update the log4j.properties file to record more information by altering the first line to this:

log4j.rootLogger=DEBUG, file

The log4j.properties file is located here:

C:\Users\YOUR_USER\AppData\Local\KapowKatalyst\9.2.9\Configuration\log4j.properties

log4jファイルの出力設定

(Kapow Katalyst 9.1 以前の場合)

Settings ツールより Logging の対象に Log4jを追加のうえ、RoboServer再起動

p557_1.png

(Kapow Katalyst 9.2 以降の場合)

MC の Cluster Settings にてLogging の対象に Log4jを追加の上、Save

log4j_configure-768x392.jpg

log4j 設定後、再度同じエラーが発生し、かつlog4j ログ内に以下の記述がある場合。

 x-exception-message: There are no available slots on the cluster named …

ロボサーバ上で一度に実行できるロボット数(-maxConcurrentRobots)の上限に達しており、REST Call によるロボット実行ができなかったという意味である。

これは、通常APIやスケジューラから起動されたロボットの場合上限を超えた呼び出しはQUEUEに入るのに対し、REST Call に拠る場合はQUEUEに入ることなくエラーとして呼び出しもとに返すという仕様による。(Standard Edition におけるRESTの同時呼び出し数が40に制限されている問題とは異なる。)

参考:
That error message is telling us that at that time when the REST service was called, that the RoboServer was already running as many robots as it could. That is a different message than the 40 concurrent REST services because that is a limitation of the Mgmt Console application and not a message from RoboServer.

REST requests cannot be queued like normal robot execution requests so if the RoboServer cannot process the robot execution request when the REST service is called, then the request will fail. The RoboServers in the CLUSTER where the REST service was sent reported back that it had no available execution slots and therefore the error occurred.

 

対応方法としては、以下

同時実行数の拡張

(Kapow Katalyst 9.1 以前の場合)

RoboServer 起動時のパラメータで maxConcurrentRobots の数を調整
http://help.kapowsoftware.com/9.0/index.jsp?topic=/doc/rs/Start.html

(Kapow Katalyst 9.2 以降の場合)

MC の Cluster Settings にて Robot Execution の数を調整

エラー処理の追加
当該エラーが発生した場合には、しばらく時間をおいてから、再度REST CALLを実施するようにロボットを修正する。

参考:
Q1. Is it possible to confirm how many slots were used at that time by log4j log I attached before? and how?
—Robot executions are logged in log4j so you could search through the logs to see what robots were running when you got the error message.

Q2. As a specification of Kapow 9.0 standard edition , how many slots can we use at a time ? and is it possible to change?
—The default number of “max concurrent robots” is 20 and can be changed as a startup parameter from the command line or as a service. You can read about the different parameters here: http://help.kapowsoftware.com/9.0/index.jsp?topic=/doc/rs/Start.html

Q3. Are there any choice as a workaround other than retry?
—No. When you call a REST service the robot either starts if there are available execution slots or it fails. If it fails you must retry as robots called through the API are not queued as they are through the Management Console.

0人中0人がこの記事が役に立ったと言っています

コメント

0件のコメント

ログインしてコメントを残してください。