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で動作を確認しています。