densuke
(densuke)
1
お世話になっております。
APIのリクエスト数がデフォルトでは1アプリ10000ですが、最近圧迫する事が何回かありました。
どのリクエストが多く使われているのかを確認したい&リクエスト軽減したいのですが、リクエスト詳細を調べる方法ありますでしょうか。
また、リクエスト軽減方法のヒント等あればご教授いただいたいです。
監査ログの閲覧とダウンロード の
モジュール:“API operation” でログを確認したのですが、10000リクエストでのアラートがでた日時範囲で件数的には400件程度でした。
よろしくお願い致します。
puppet
2
こんにちは。
kintoneトップ画面の右上、「全体検索」の2つ左にある歯車マーク
↓
kintoneシステム管理
↓
メニュー一番上の「アプリ管理」
にある「1日のAPIリクエスト数」列で、当日9時起点として1日のAPIコール数を確認できます。
列タイトルをクリックすることで昇順/降順ソートができます。
またリクエスト数軽減についてですが…1リクエストで複数件の更新を行うなどの節約方法くらいしかないかなと思います…。
puppet
3
すみません、record.jsonなどの、そのアプリ内でどんなリクエストが多いのか?という意図でしたかね?
であれば私は存じ上げません…、すみません。
Maple
(もみじ)
4
こんな感じでリクエストのたびに
リクエスト数をカウントする変数を1増やすのはどうでしょうか。
これで数えたリクエスト数は
アプリ管理の「1日のAPIリクエスト数」と一致していました。
// APIリクエスト数を格納する変数
let requestCount = 0;
/**
* APIリクエスト数をインクリメントさせる関数。
* この関数が呼ばれるたびにAPIリクエスト数を1増やし、
* 現在までの累積リクエスト数をコンソールに出力する。
*/
const countApiRequest = () => {
requestCount++;
console.log("APIリクエスト数: " + requestCount);
};
const fetchRecords = () => {
countApiRequest(); // リクエストの前にAPIリクエスト数を増やす
// 現在のアプリのレコードを取得するリクエスト
kintone.api(kintone.api.url('/k/v1/records.json', true), 'GET',
{ app: kintone.app.getId() },
(resp) => {
// 取得したレコードのレスポンスをコンソールに表示
console.log(resp);
}
);
};
// レコード一覧画面にボタンを設置
kintone.events.on('app.record.index.show', () => {
const button = document.createElement('button');
button.innerText = 'レコード取得';
// ボタンがクリックされたときにfetchRecords関数を呼び出す
button.onclick = fetchRecords;
// 集計アイコンの右側をボタン設置位置にする
kintone.app.getHeaderMenuSpaceElement().appendChild(button);
});
リクエストの減らし方は以下のような方法があるようです。
densuke
(densuke)
5
有難うございます。
はい。どの部分がリクエスト数のネックになっているのかを調べて対策したいのです
1 Like
densuke
(densuke)
6
ご回答ありがとうございます。
サンプルコード試してみます。
densuke
(densuke)
7
追加でもし方法が判ればなのですが、
自作部分はサンプルいただきましたコード等でカウントできると思うのですが、
別プラグイン内でAPI使用していた場合の、プラグイン別APIリクエスト数等が判る方法等ないでしょうか。
使われているAPIの詳細は、現状だと cybozu.com共通管理 の 監査ログ からしか追うことはできません。
APIごとのログの出力例はこのページに載っています。
(なんか前はもっとシンプルな表にまとまっていた気がしますが…私が見つけられないだけかも)
既にやっていただいている通り、ログの補足からアプリIDを読み取って絞り込めば件数は確認できると思いますが、
kintoneの仕様として「レコードの取得」のログは残らないため、監査ログの件数とAPIリクエスト回数は一致しません。
基本的にユーザーが発するAPIはレコード操作が中心になるので、400/10000件しか監査ログに出力されていないのであれば、残りの9600件はレコード取得なのではないか?と推測はできます。
後は、入れているプラグインやカスタマイズがどういう通信をしているか確認したり、可能であればソースを確認して発行しているAPIが何かを確認したりすれば、確証に近づくのではないかと思います。
リクエストの軽減方法としては、既出ですが、JavaScriptカスタマイズで利用しているレコード更新などのAPIを、1件のレコードごとではなく複数のレコードまとめて処理するように変更する…とか、
そもそも、そのアプリに求めている役割が大きすぎる可能性があるので、アプリを分割するとか、定期的に集計値を別アプリに吐き出すカスタマイズを作成するなど、運用面の対処も必要になるかなと思います。
densuke
(densuke)
9
ご回答ありがとうございます。やはり確認は監査ログだけな感じですね。
教えていただいた方法等試してみたいと思います。
system
(system)
Closed
10
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。