「WordPressで学ぶPHP(3)関数編」を発売しました。
本書は「WordPressで学ぶPHP(1)変数・制御構造編」「WordPressで学ぶPHP(2)データ構造(配列・オブジェクト)編」の続編にあたり、PHP組み込みの関数や、独自の関数を作る方法などを解説します。
Kindle本で、定価400円です。
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';