2012年5月31日木曜日

ppBlog: 写真のアップロードから動かなくなる

写真のアップロードがとても重たい。
そもそもルータに対してやらせる処理ではないということは明らかですけど(笑)
最初は時間がかかりすぎて処理が止まって編集画面がうんともすんとも言わなくなり勘でタイムアウトかな?ということで/etc/php.ini のmax_execution_timeoutの設定値を30→300に変更しました。
アップロードは行われるようになったのですが、やはり時間が…。
luciの表示が行われなくなるのでターミナルからtopを叩いて直接見てみると。
Mem: 28296K used, 1132K free, 0K shrd, 128K buff, 2944K cached
CPU:  99% usr   0% sys   0% nic   0% idle   0% io   0% irq   0% sirq
Load average: 1.10 0.69 0.45 2/49 8774
  PID  PPID USER     STAT   VSZ %MEM %CPU COMMAND
 8774  1435 root     R    40808 139%  97% /usr/bin/php-cgi /www/blog/upload.php
 1443  1442 root     S     5096  17%   3% motion
 4017  2378 root     R     1380   5%   0% top
 1438     1 root     R     5096  17%   0% motion
 1444  1442 root     S     5096  17%   0% motion
 1442  1438 root     S     5096  17%   0% motion
 1476     1 root     S N   2632   9%   0% smbd -D
 1478     1 root     S     2132   7%   0% nmbd -D
 1487     1 nobody   S     1960   7%   0% proftpd: (accepting connections)
 1006     1 root     S     1516   5%   0% wpa_supplicant -B -P /var/run/wifi-wl
  387     1 root     S     1500   5%   0% syslogd -C128
 2378  2377 root     S     1392   5%   0% -ash
 1279     1 root     S     1388   5%   0% udhcpc -t 0 -i wlan0 -b -p /var/run/d
    1     0 root     S     1384   5%   0% init
  367     1 root     S     1384   5%   0% init
  529     1 root     S     1380   5%   0% udhcpc -t 0 -i eth1 -b -p /var/run/dh
 1498     1 root     S     1380   5%   0% watchdog -t 5 /dev/watchdog
  369   366 root     S     1376   5%   0% logger -s -p 6 -t sysinit
  366     1 root     S     1376   5%   0% /bin/sh /etc/init.d/rcS S boot
  389     1 root     S     1372   5%   0% klogd
こんな感じでメモリーも完全にスワップアウトしてシステムがロックしてる感じになってしまいます。
アップロードのオプションでリサイズ指定があるのがあるのに指定しても使用量は小さくなりません。
ソースを見ていませんが、一度jpegをメモリー展開してから処理に入っている感じがします。
とりあえず画像の扱い方を内部展開しないでファイルとしてそのまま処理できるように改良するのがよいのかも。

参考
PHPのタイムアウト対策 http://kikky.net/pc/php_timeout.html

0 件のコメント:

コメントを投稿