ブックマーク / watson.hatenablog.com (2)

  • RMagick のメモリ使用量を改善した - @watson1978 の日記

    【追記 2019/06/17】パッチを含んだ RMagick v3.2.0 がリリースされました。 RMagick を使用すると馬鹿みたいにメモリ使用量があがると言われ続けてましたが、修正方法の見込みがたちようやく直しました。 何が起きていたか RubyKaigi 2019 で登壇した際にも話しましたが、RMagick が引き起こしていた多数のメモリリークは修正済み だったので、Ruby の GC が動作すると抱え込んでいる不要なメモリ領域は解放されていました。 問題は Ruby の GC がなかなか動作してくれないことにありました。例えば RMagick で画像用のオブジェクトを生成しても、サイズはたかだか 40 bytes しかありません。 require 'rmagick' require 'objspace' img = Magick::Image.new(1000, 1000)

    RMagick のメモリ使用量を改善した - @watson1978 の日記
  • バッチ処理の一部で 30 分以上かかっていた処理を 14 秒で終わるようにした話 - @watson1978 の日記

    Ubiregi Advent Calendar 2018 の 18 日目です。 ユビレジではたくさんのお客様の大量の POS データをお預かりしており、様々なバッチ処理も実行されています。今回は特定のケースでバッチ処理の一部が 30 分以上かかっていた処理を 14 秒で終わるようにした話について書きたいと思います。前回の Ruby 2.5 の SEGV と闘った話 - @watson1978 の日記 に引き続き DTrace を使った話になります。 はじめに ユビレジでは CSV ファイルでお客様が特定のデータをダウンロードしたりアップロードできる機能があります。CSV ファイルにエクスポートしたり、CSV ファイルから DB に取り込む処理を Worker を起動してバッチ処理しています。 大量のデータを保有しているアカウントと同量のデータを用意して手元の環境で試したところ時間がかかるこ

    バッチ処理の一部で 30 分以上かかっていた処理を 14 秒で終わるようにした話 - @watson1978 の日記
  • 1