10:00こんにちは。Engineeringの古賀です。今回から新しく始まる連載「今月のケースファイル」は、私がこれまでに扱った印象に残っている案件を紹介していきます。基本的に紹介する内容は事実に基づいていますが、脚色をしていますし、場合によっては一部実際に起きた内容と異なる部分があるかもしれません。硬い内容にするつもりはないので、気楽に読んでもらえたら幸いです。これといって何か勉強できることがあるかはわかりませんが、ひょっとしたら、少しは教訓みたいなものがあるかもしれません。今回取り上げる話は、私が日本マイクロソフトに入社したばかりのころに担当した案件です。内容は、SSISパッケージのパフォーマンスが急激に低下するというもの。入力データが400万件の時は数分で終わるのに、460万件になると急激におそくなり2.3時間もかかるというのです。遅延の原因究明と回避策を提示する必要がありました。仮説と再現この話を最初に聞いたとき、「ああ、460万件になってデータがメモリに乗り切らなくなったんだなぁ」と思いました。400万件の処理では、メモリが足りていたけれど、徐々に件数が増えてきて460万件となった時にデータが全部メモリに乗り切らなくなったのだと思いました。私はこの仮説を証明するために、まずは再現環境を構築することから始めようと思いました。同じような現象が再現できれば、自分の手元で詳細な調査ができるし回避策の有効性も検証できると思ったからです。再現環境を構築するためにいろいろとヒアリングしてみると、どうやらお客様は64ビットのマシンでSSISパッケージを32ビットモードで実行しているらしいことがわかりました。詳しい理由は覚えていませんが、確か64ビットモードで実行すると何か問題があって、32ビットモードだとその問題が発生しないとか、そんなことが理由だったと思います。Serverへ一括登録するという内容でした。パッケージのイメージ図。2005のSSISで作られており、もっと複雑なパッケージでした一通りヒアリングを終えると、早速、再現環境の構築を行いました。お客様から入手したSSISパッケージを自分の環境でも動作するように変更します。2,3件のデータ入力で正しく動作することを確認し、続いてダミーの入力ファイルを生成するプログラムを書きました。460万件のデータを手作業で生成するのは大変だからです。プログラムを書き終えた後、まずは遅延が発生しないという400万件のデータで実行してみました。お客様の環境とは違って数分ではありませんでしたが、私の環境では十数分で終了します。続いて460万件のデータで実行してみます。処理はなかなか終了しません。終了しないどころか、結局その日のうちに処理は終了しませんでした。あまりに遅いのでちょっと困ったなと思いましたが、ひとまずこれで「急激に遅くなる」という現象は再現できたようでした。あとは、「460万件になってメモリに乗り切らなくなった」という仮説を証明するだけです。遅延している箇所がSSISパッケージの処理なのか、それ以外の処理なのかを切り分けることにしました。Server側の処理が遅延しているのかもしれません。したことを確認するため、現象が再現しているときのSSISパッケージの実行ログを確認することにしました。現象が再現しているときに実行ログの出力状況を確認すると、入力ファイルをいろいろと加工しているところまではスムーズにログが出力されるのですが、それらの処理がすべて終了してマージ結合変換タスクの処理に入るところから一向にログが出力されなくなります。マージ結合変換タスクの処理が遅延しているようだということがわかりました。Server側の問題でないことがわかります。これで調査対象をSSISに絞ることができます。※この続きは、会員の方のみお読みいただけます(登録無料)。会員登録(無料)ログインはこちら※この続きは、会員の方のみお読みいただけます(登録無料)。ケイイチロウ)日本マイクロソフト株式会社勤務。謎があると解決せずにはいられない性格。西内啓氏が見据える次の10年。EYACCの森島さんはいかにして生まれたのか319SAPが会津若松で中小企業のものづくりのイノベーションに取り組む理由296AWSでセキュリティを高めるために今すぐやるべき7つのこと262企業のデジタルシフトはIoT、5G、サブスクリプションが牽引。×ログインEメールパスワード※旧SEメンバーシップ会員の方は、同じ登録情報(Eメール&パスワード)でログインいただけます。パソコン「EnterpriseZine」(エンタープライズジン)は、翔泳社が運営する企業のIT活用とビジネス成長を支援するITリーダー向け専門メディアです。イラストの無断転載を禁じます。記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。