MENU
Abo
首都圏たまに横浜勤務。
日々の学びをつらつらと書いています。
モットー:ゆるく熱く
保有資格:
Salesforce認定アドミニストレーター
Salesforce認定Platformデベロッパー
Salesforce認定上級Platformデベロッパー
カテゴリー
アーカイブ

【ガバナ制限】CPU時間の制限とは?【Salesforce】

Apexでいろいろ機能を追加しているうちに、いつの間にか処理が重くなりすぎて「Apex CPU time limit exceeded」エラーが出てしまった、、、

なんてことよくあります。

ということで、今回は「CPU時間の制限とはなんぞや?」と「CPU時間の制限を回避しよう」のテーマで書いてみました。

目次

CPU時間の制限とは?

「CPU時間の制限」とは Salesforceに設けられているガバナ制限の1つで、1つのトランザクションで発生する処理時間の制限を指します。

「Apex CPU time limit exceeded」エラーが出たということは、処理に時間がかかりすぎて、定められている上限を超えてしまったことを意味します。

CPU時間の制限は下表の通りです。

説明 同期処理 非同期処理
Salesforce サーバの最大 CPU 時間10,000 ミリ秒60,000 ミリ秒
参照元:「実行ガバナと制限」

同期処理であれば1トランザクションにつき「 10,000 ミリ秒 」。

非同期処理であれば 同期処理であれば1トランザクションにつき「 60,000 ミリ秒 」がCPU時間の上限となっています。

多いのか少ないのかよくわからん!って感じですが、とりあえずこれを超えてしまうとガバナ制限に引っかかり、 「 Apex CPU time limit exceeded」エラーが出てしまいます。

CPU時間の制限を避けよう

CPU時間の制限に引っかからないようにするためには、非同期処理を使用するのがよさそうですね。

なんといってもCPU時間の制限が同期処理の6倍ありますから。

CPU時間の確認の仕方

CPU時間の確認は「Limits.getCpuTime() 」メソッド使用します。

以下のような感じで、CPU時間を計測したい箇所にデバッグを設置し、デバッグログから確認します。

System.debug('Limits.getCpuTime: ' + Limits.getCpuTime() );

デバッグログの 下部 に CUMULATIVE_LIMIT_USAGE 欄で表示される以下の箇所より
消費したCPU時間を確認できます。

表示例)
14:51:47:079 CUMULATIVE_LIMIT_USAGE 
14:51:42:000 LIMIT_USAGE_FOR_NS   Maximum CPU time: 3 out of 10000

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

某SIer勤務。
新卒文系からエンジニア就職。
日々の学びをつらつらと書いています。
保有資格:Salesforce認定アドミニストレーター
     Salesforce認定Platformデベロッパー
     Salesforce認定上級Platformデベロッパー

コメント

コメントする

CAPTCHA


目次