るぅもも園営業部-多趣味おやぢの動物事情-

アカビタイムジオウム情報メイン。ペット情報、IT技術や料理等いろんなことを書きまくっています。

【SFDC】DataLoaderを使っているときに heap space エラーが出る場合の対処

time 2016/06/22

【SFDC】DataLoaderを使っているときに heap space エラーが出る場合の対処

原因:メモリ不足
ファッキン!!!作り悪いぞこら!!!!
heap_space
まぁ、普通にデータローダを使っていても、このようなエラーは出ないと思うのですが、
今回はコンテンツ(ファイル)をデータローダを使ってアップロードしていたわけですね。
1ファイル2mとして、100ファイルを一度に上げれば最低200M になるわけですね。

DataLoaderは裏はJavaで動いていて、Javaは確か1.7ぐらいから、何も指定しないと
保有メモリの64分の1をヒープとして使う、だったかなぁ。
そうすると、4GBのメモリのマシンは、64Mしかメモリが使えないわけで、落ちますよと。

sponsored link

対処方法としては、大きく分けて以下の3つ

そして、下に行くほど効果がでかい!!!というより、一番下だけやっておけばいいんじゃね?という結果となりました。

1.DataLoaderの起動時にメモリを指定する

以下のように、DataLoadrの起動ショートカットを右クリックして、プロパティを開く

propmemorysetup
そして、おもむろに、Java.exeの後ろあたりに以下のようなメモリ確保用の一文を突っ込む!!
-Xmx1024M -Xms800M

2.DataLoaderにかますCSVのサイズを減らす

つまり、一度にアップロードするファイル数を制限する

そんなわけで、CSVファイルを50件に絞って、これならイケルヤローと、実行したら、
次のようなエラーがでおった!!!

“Maximum size of request reached. Maximum size of request is 52428800 bytes”

uplimit

リクエストサイズが上限超えてるよ!!!50Mまでしかダメだぞこら!!!
……え?
WebAPIを使った場合、一度に50Mまでしかリクエストできないとな?たぶん、ファイルにおいては、
Base64にファイルを一度コンバートしているはずなので、元の容量の2倍かかるはず。、

つまり、WebAPI経由だと、25Mのファイルまでしかアップロードできないと

また、複数のファイルを1つのリクエストで送ろうとするのは、計25Mを超えない保証がない限り、
やめたほうがよいということですね。

そんなわけで、以下の対応が一番確実、というところに行き着いた。

3. バッチ実行サイズを変更する

バッチは、1度のクエリーで何件処理する、というような指定ができます。
つまり、1000行のCSVがあったとしても、1度に処理するのを200件までだよ。
200件を5回やるよ、というような仕組みです。

これを、1回について1件しか処理しないよ!!

という風に設定を変えてしまえばいいわけです。データローダのSettingsから変更できます

bach1
※変えたら元戻すの忘れないでね!

sponsored link

コメント

  • > 1ファイル2mとして、100ファイルを一度に上げれば最低200M になるわけですね。
    メートル法(2m)からバイト(200M)になると話についていけないっす。

    >DataLoaderは裏はJavaで動いていて、Javaは確か1.7ぐらいから、何も指定しないと
    >保有メモリの64分の1をヒープとして使う、だったかなぁ。
    >そうすると、4GBのメモリのマシンは、64Mしかメモリが使えないわけで、落ちますよと。
    ここはjvmのエディション(Server、Client)とOSのbit数(32,64)でも初期値変わりますですよ。
    詳しくは「インフラ屋さん」に聞いてくださいまし。
    ※このあたりはエンジニアの方々でも誤解している人が多いです、はい。

    開発と運用は必要知識が異なるのでって、師匠に対して言うまでも無いですが・・・

    >Base64にファイルを一度コンバートしているはずなので、元の容量の2倍かかるはず。
    4/3 だから1.33倍だったかと。XML等のエンベロープを含めば2倍かもですが・・・

    もう、今後一生使うことの無い知識を思い出しましたよ、ありがとうございます。

    難儀しているようですが、相変わらず問題解決能力が高いようで安心しましたよ。

    by yas0083 €2016年6月23日 00:51

  • >ここはjvmのエディション(Server、Client)とOSのbit数(32,64)でも初期値変わりますですよ。
    まぁ大体1/64って覚えておけば何とかなると思います!!
    というよりか最低それぐらい知っておいて!ぐらいの感じですね~。
    昔はデフォルトで固定○○Mとかひどい状態でしたねぇ(遠い目

    >Base64にファイルを一度コンバートしているはずなので、元の容量の2倍かかるはず。
    >4/3 だから1.33倍だったかと。
    あれ?そうでしたっけ・・・?なんかと混同してしまった!!!
    ご指摘ありがとうございますです。

    by 葉月 要 €2016年6月23日 09:13

down

コメントする




ペット

ライフハック

雑記

技術情報

ランキング

amazon

このブログを書いている人

葉月 要

葉月 要

SE歴13年。 Webでもクラサバでもなんでもござれのオールラウンダー。 Java、C#、ExcelVBA等の言語から、DynamicsCRM、Salesfroceなども手掛ける。 洞察、検証から最適解を探そうとする合理主義的かつ動物好き 文章作成や技術相談などがありましたらクラウドワークス等でお受けいたします。 連絡はこちらまでkaname_connect☆rulumomo.ddo.jp



sponsored link

検索