これまた社内チャットをちょっとだけご紹介。ベテランA、B、それに新米君の会話です(勝手に書いていいのかな・・・)
B[14:08:29]
ん、サーバ君55号の上で、identify と convert が鬼のように走っていますね?ごっつう重いです。
新米君[14:20:02]
ああ、すいません、私です。一旦convert&identifyプロセスをkillして、動作回復させます。うお、自分権限ないかもしれません。SSHできなう。
B[14:21:22]
55号君、コマンドプロンプトが戻ってこないので、原状手も足も出ませんね。まあ、負荷試験にはなっているようですが(笑)。
A[14:23:55]
swapたりなくなってるんだ。
swap_pager_getswapspace(2): failed
一杯でてる。
B[14:38:05]
あぁ、プロンプトが戻りました。SSH来ました。
A[14:39:30]
生きてる窓あったら、適当にプロセス殺しtえ
B[14:39:52]
はい。と思ったら、また、プロンプトが無反応になってしまいましたが・・
新米君[14:40:22]
こちらも動かなくなりました。
A[14:41:00]
またぞろ走り出した。
46706 apache 1 103 0 0K 0K START 0:00 0.51% sh
46938 apache 1 96 0 52896K 20688K pfault 0:01 0.15% convert
46972 apache 1 96 0 57916K 5976K pfault 0:00 0.10% identify
46823 apache 1 96 0 44724K 10228K pfault 0:01 0.10% identify
ものすごい行数なので割愛・・・・・・・
たしかにこんなに平行したらひとたまりもないな。
A[14:45:38]
killall identify
killall convert
すて
B[14:46:05]
はい.。が、kill しても kill しても、またぞろ立ち上がってきます。ゾンビみたいな
A[14:48:05]
やっとhttp殺せた
B[14:48:11]
はい
A[14:48:32]
ちょっと、55号君のssh殺す。
B[14:49:24]
55号君 の apache 再起動してもいいでしょうか?
A[14:49:35]
まってくんろ
B[14:49:39]
りょうかい
A[14:49:43]
55号君自体を再起動する。
A[14:55:31]
起動した
新米君[16:45:37]
すいません。。。お手数おかけしますた。。
GIFやPNG変換も特に問題なく、大丈夫だとおもいます
先のidentifyなどのプロセス問題なのですが、
以前はPHP getimagesizeにて画像情報の取得でしたが、
BMP画像やpnm画像の点からImageMagickのidentifyを使うようにしたのですが、
新米君[16:48:22]
どちらが資源を消費するのかなどの点は正直どのように調べたらよいかわからないのですが、getimagesizeno
新米君[16:48:37]
の利用の法がよろしいのでしょうか
新米君[16:50:03]
元画像情報取得時と中間ファイル情報から作成画像の算出があるので、
フィッター利用で2度ほど取得しなければならない現状プログラムなのですが
A[17:38:41]
先週いったでしょ、systemで起動するのは、リソース食うの
新米君[17:39:21]
ああ、はい、でした。 ではgetimagesizeにて取得できない場合はidentifyを使うように修正します
A[17:44:01]
あと、identifyを使うときは、中間ファイル作成せずに。proc_open()にしてください。あそこのcgiwrapper()を、参考にして。
新米君[17:44:19]
はい
A[17:47:32]
出力だけでいいから、popenの方が楽かもしれない。
新米君[18:03:07]
ちょっと気になったのですが、
->identifyを使うときは、中間ファイル作成せずに。
こちらの点ですが、
$getinfo = "identify ~~~";
list($w,$h,$type) = explode(",",exec($getinfo);
としてあるのですが、中間ファイルは作成されますでしょうか?
A[18:08:47]
ああ、それなら、中間できないね。popenしてるのと同じだ。
A[18:11:15]
ただ。exec(escapeshellcmd($getinfo))する様に
新米君[18:11:19]
了解です。では上記はそのままにしておき、
getimagesizeを使えないときにidentifyに修正します。
#prepend.phpを参考にし、escapeshellcmd()をexec()前にするようにしうます
新米君[18:11:38]
了解です。
#ちょうど書いてました
A[18:11:53]
よく気がつきました。○
コメント