OpenMPが有効なImageMagickとMovable Typeを組み合わせた際の不具合の回避策

先日、とあるお客様のMovable Typeの管理画面を見ていたところ、以下のような現象が発生しました。

  • 画像が入っている記事やウェブページを開こうとすると、500エラーが発生することがある
  • アイテム一覧でページ送りすると、500エラーと表示されてページ送りができないことがある

この不具合の回避策を紹介します。

1.原因

不具合が発生した環境で、Apacheのログを見たところ、以下のようなエラーメッセージがありました。

libgomp: Thread creation failed: Resource temporarily unavailable

このエラーから検索してみると、以下の記事にたどり着きました。

Image::Magick && OpenMP有効なImageMagickでエラー回避策

ImageMagickをOpenMPに対応させると、マルチスレッドで動作させて処理を高速化できるはずだそうです。
ところが、ImageMagickのOpenMP対応に不具合があるらしく、上記のエラーが発生しています。

2.対処

mt.cgiを書き換えて、ImageMagickがマルチスレッドで処理をしないようにしました。
mt.cgiに以下の赤字の行を追加します。

#!/usr/bin/perl -w

# Movable Type (r) (C) 2001-2016 Six Apart, Ltd. All Rights Reserved.
# This code cannot be redistributed without permission from www.sixapart.com.
# For more information, consult your Movable Type license.
#
# $Id$

use strict;
use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/lib" : 'lib';

BEGIN { 
  $ENV{MAGICK_THREAD_LIMIT}=1; 
} 

use MT::Bootstrap App => 'MT::App::CMS';