kintone REST API 同時接続数の制限値はなぜあるのか

著者名:サイボウズ 性能検証担当

目次

はじめに

この記事では、kintone REST API の制限値の中でも、カスタマイズの構成やアプリの運用を考える際に大きく影響してくる「kintone REST API 同時接続数(以下 API 同時接続数)」について解説していきます。

kintone のカスタマイズをすでにバリバリ行っている人や最近カスタマイズを始めた人も、kintone カスタマイズを行っていく上でとても大切な内容になっているので、ぜひ目を通してみてください。

API 同時接続数について

ではさっそく「API が同時に接続している」状況を図を使って解説してみようと思います。

まず、API リクエストのデータの流れについてざっくり図示してみます。

kintone は、ひとつの API リクエストに対し、上図の流れでリクエストを処理しています。

続いて、API が同時に接続している状況を見てみましょう。

上図は、2 つの API リクエストが kintone サーバー内で処理されているタイミングのイメージを図示したものになります。

API が同時に接続している数というのは、上図のように、kintone サーバー内で複数の API のリクエストを処理している数のことを言います。

kintone では、この値の制限値として、1 ドメインにつき 100という制限値を設けています。

具体的に言い換えると、1 つの kintone 環境に対して、同時に REST API を接続できるのは 100 リクエストまでですよ、という意味になります。

同時接続数 100 に到達すると何が起きるのか

この同時接続数が 100 を超えると、REST API の実行時に HTTP ステータスコード 429 のレスポンスが返ってきます

こうなってしまうと、同時接続数が 100 を下回らない限り、REST API によるリクエストが通らない、といった状況に陥ってしまいます。

REST API のリクエストが通らない状況とは、以下のような状況です。

  • kintone REST API を curl 等で kintone 外部から実行した場合、 429 のレスポンスが返ってくる。

API 同時接続数が 100 を超えた状態で kintone を利用すると…

さらに、100 を超える同時接続が長時間にわたって続く状況、つまり kintone サーバーの負荷が高い状況で kintone を利用し続けると、REST API を利用していないアプリに影響することがあります。
具体的には、REST API を利用していないアプリのレスポンスが遅延し、場合によっては「429 エラー」の画面が表示されます。

同時接続数 100 を設けている理由

同時接続数を 100 に設定している理由は、kintone サーバー側の負荷を抑えるため、です。

仮にこの制限値を設けていない場合、API リクエストが kintone サーバー側に積み重なることで、kintone サーバーへの負荷が膨大になり、最悪の場合、サーバーのダウンが考えられます。

そうなると、kintone REST API どころか、kintone 自体を利用できないといった状況に陥ってしまう可能性があるため、この制限値を設けています。

同時接続数はどのような状況で上昇しやすいのか

同時接続数が上昇しやすいのは、kintone サーバー側の負荷が高まっている時、です。

先ほどの図でいうと、アプリケーションサーバーとデータベースサーバー間の処理が増加している時、になります。

なお、同時接続数が増加する状況としては、kintone サーバー側に以下のような負荷がかかる処理をリクエストしているケースが考えられます。

  • レコード一括取得 API といった kintone サーバー側に負荷の高い処理を必要とする API を短期間で複数回叩いた場合
  • レコード一括読み込み、一括削除、アプリの更新等々の重い処理による影響により、kintone サーバー側の負荷が高まっている場合
  • 一度にまたは、短期間に多くの REST API をたたくようなカスタマイズ/プログラムを走らせた場合
  • etc...

kintone サーバー側の負荷が高まる原因としては、API に限らず、ユーザーの利用状況や、ネットワーク環境等のさまざまな要因が重なることによって引き起こされるため、ここに挙げたパターンはあくまで一例となります。

同時接続数の調べ方と対策について

同時接続数の増加は複合的な要因によって引き起こされるため、残念ながら同時接続数の増加を防ぐ確実な方法はありません。
ですが、現時点でできる同時接続数の対策方法としては、以下のような対策が考えられます。

  • プログラム開発時に必要のない REST API リクエストを減らすような設計にする。
  • 429 エラーが発生しないように、API 同時接続数を取得して、同時接続数の値によって処理を分岐させるしくみをプログラム側に取り込んでおく。

ちなみに API 同時接続数を調べる方法には、以下の 2 つがあります。

また、同時接続数を取得する API を利用したカスタマイズ方法については、以下の記事が参考になります。

kintone REST APIの同時接続数によって処理を制限する

同時接続数が 100 に満たない状況でも、API 同時接続数の増加が続く場合、タイミングによっては API 同時接続数 100 の制限に到達する可能性も考えられます。
運用方法やプログラムの構成等を見直すことも視野に入れたほうがよいかもしれません。

まとめ

この記事では、kintone REST API 同時接続数 100 の制限値について解説してみました。

API 同時接続数の増加に関しては、さまざまな要因に紐づいて発生する現象です。
ユーザーのみなさまに快適に kintone を利用していただけるよう、これから性能検証チームで考えられうるユースケースを検証し、記事にしていけたらな、と考えています。

本記事がこれから実装する kintone REST API を利用したカスタマイズやプログラム開発の設計、既存のカスタマイズの構成等を見直すきっかけになれば幸いです。

information

この Tips は、2018 年 10 月版 kintone で動作を確認しています。