【OpenPNE】DB肥大化対策 (2)【2.14系】

その1の続き。

 

【OpenPNE】DB肥大化対策 (1)【2.14系】

 

 

検証する環境を作る段階で四苦八苦していて、本題に近づけていないw

 

[]

 

 

VM検証環境に構築(3)

 

新しいOSに古い物を入れようとするから変になるのであって、

古いOSならなんとかなるんじゃないだろうか。

古いリポジトリは消えてるだろうから、自動でインストールはできないだろうけど。

 

というわけで、

昔使っていたFedora 15が確かPHP5系で、そこで動かした実績があるので、

ISOファイルを配布しているところを探してダウンロード。

 

それをそのまま仮想光学ドライブにマウントして、新たにVM環境を作ってインストール。

流石に今回はHDD容量を30GBにしたw

 

見ていたら、確認する事もなく問答無用でGUIでセットアップを始めた。

ちょっw( ;゚;ж;゚;)

 

しかもインストールするアプリ/パッケージを選択させてもくれず、

勝手に色々入れはじめる始末。

マジか勘弁してくれ・・・(ノ∀`)

 

要らないアプリやゲームなんかが入った状態でインストール完了。

確かに昔入れたときもそうだったけどさ・・・。

 

GUIに「ソフトウェアの追加/削除」があったので起動してみたが

(多分)古いリポジトリを見に行っているらしく、何を選んでも

 

見つかりませんでした。

 

要らないもの消すことすらできないのか(#^ω^)

 

仕方なくマウントしているISO(=DVD)から

  • httpd
  • mysql
  • php
  • samba

のパッケージをインストールしようとして、依存関係の都合で入れられない物は

そのパッケージを探して と気の遠くなる作業を開始。

ディレクトリの同じ階層にあるんだから、必要なものは自動でインストールしろよ。

 

・・・が、以下の3つ

  • php-gd-5.3.6-2.fc15.x86_64.rpm
  • php-mbstring-5.3.6-2.fc15.x86_64.rpm
  • t1lib-5.1.2-7.fc15.x86_64.rpm

だけはDVDの中には入っていなかったので、探しに行って入手。

http://rpm.pbone.net/

ここから落とした。

 

ターミナルからコマンドを打ってインストール。

rpm -ivh ※ファイル名※.rpm

 

 

で、ようやく環境が整った。

アプリ自体のセットアップは過去に作った手順書があるのでサクサク進む。

(ほぼコピペで済ませるようにしてあるので)

 

やっと動いた・・・。

 

 

 

仕組み

 

OpenPNEは画像をアップロードすると、

  • キャッシュとして指定したパスにファイルを出力
  • 画像ファイルをバイナリにしてDBに格納

を行う。(2.14は。3は知らない)

 

一番最初にSNSのサーバ引っ越しをしたのはディスク容量が足りなくなったからで、

引っ越し完了後に、一定期間経った古いキャッシュ画像は削除するような

シェルを自作してcronで回しておいた。

今となってはディスク容量は潤沢にある(100GB中0.1%しか使ってないw)ので、

このシェルはもう不要だろう。

 

この画像をDBに格納するという仕様のために、DBの総容量の

90%以上が画像

という事態に。

 

つまり、DBに格納されている画像データを減らすことができれば、問題は簡単に解決する。

 

・・・と思う(何

 

 

 

探ってみる

 

まずは消す云々より、DBを使わないようにできるか?というところから探ってみる。

そういうコアな設定はconfig.phpに書かれているのでチェックする。

画像に関係しそうなのは

// 確認画面用の一時画像をDBに保存するかどうか
define('OPENPNE_TMP_IMAGE_DB', false);
// 確認画面用の一時ファイルをDBに保存するかどうか
define('OPENPNE_TMP_FILE_DB', false);

// 画像データ保存用DB(オプション)
//$GLOBALS['_OPENPNE_DSN_LIST']['image'] = array(
//'dsn' => array(
//    'phptype'  => 'mysql',
//    'username' => '',
//    'password' => '',
//    'hostspec' => 'localhost',
//    'database' => '',
//    ),
//);

// 画像を別サーバに設定する場合に指定する
//define('OPENPNE_IMG_URL', 'http://img.example.com/');

//// 画像サーバ用設定 ////
//define('OPENPNE_IS_IMG_SERVER', false);

// 画像キャッシュをpublic_html以下に置くかどうか(要mod_rewrite)
define('OPENPNE_IMG_CACHE_PUBLIC', false);

// 画像キャッシュディレクトリ(要書き込み権限)
if (OPENPNE_IMG_CACHE_PUBLIC) {
    define('OPENPNE_IMG_CACHE_DIR', OPENPNE_PUBLIC_HTML_DIR . '/public_html/img');
} else {
    define('OPENPNE_IMG_CACHE_DIR', OPENPNE_VAR_DIR . '/img_cache');
}

// 画像変換時に許可する解像度のリスト (幅x高さ)
// (空の配列を指定すると無制限になります)
$GLOBALS['_OPENPNE_IMG_ALLOWED_SIZE'] = array('76x76', '120x120', '180x180', '240x320', '600x600');

// 画像キャッシュのファイル名のprefix
define('OPENPNE_IMG_CACHE_PREFIX', 'img_cache_');

// 画像変換後のJPEGのQUALITY値
define('OPENPNE_IMG_JPEG_QUALITY', 75);

// ImageMagick使用設定
// 0: off ... ImageMagickを使わない
// 1: on  ... GIFのみImageMagickを使う
// 2: on  ... JEPG,PNG,GIFにImageMagickを使う(ただし、GDも必要)
define('USE_IMAGEMAGICK', 0);

// ImageMagick の convertコマンドのパス
define('IMGMAGICK_APP', '/usr/bin/convert');

// ImageMagick のオプション(デフォルトは -resize)
//define('IMGMAGICK_OPT', '-thumbnail');

// アップロード画像のファイルサイズ制限(KB)
define('IMAGE_MAX_FILESIZE', 200);

// アップロード画像の大きさ制限(ピクセル)
// 0 を指定した場合は無制限
define('IMAGE_MAX_WIDTH', 0);
define('IMAGE_MAX_HEIGHT', 0);

// 携帯版「大」サイズ画像表示時の解像度制限
// ($GLOBALS['_OPENPNE_IMG_ALLOWED_SIZE'] で許可された解像度を指定してください)
define('OPENPNE_IMG_KTAI_MAX_WIDTH', 240);
define('OPENPNE_IMG_KTAI_MAX_HEIGHT', 320);

これだけあった。

無効にされていたり、今回の件に直接関係なさそうなところは灰色にしてある。

 

 

 

 

・画像データ保存用DB(オプション)

これはSNSがメインで使っているDBとは別に画像ファイルだけを出力させることができそうだ。

外部からアクセスできるDBがあれば逃がすことはできそうだ。

検証してみないと実際のところはわからないけど。

 

ドキュメントを読むと負荷分散することが目的のようだ。

 

 

・画像を別サーバに設定する場合に指定する OPENPNE_IMG_URL

これに過剰に反応。これ良いんじゃね?(・∀・)

OPENPNE_IMG_URLにサーバのURLを指定して・・・

ん?これどうやって使うんだ?

別サーバに置いてある画像を表示するのなら理解できるけど、書き込みできないだろ。

(そもそもそういう設定項目ないし)

本サーバから別サーバにファイル連携するようなシェルを自分で作ってなんとかしろ

ってことか?

ググってみたけど、何故か情報全くなし。

 

皆無っ・・・!圧倒的皆無っ・・・・!!

 

使えないなコレ。

 

 

・画像サーバ用設定 OPENPNE_IS_IMG_SERVER

これは・・・!?

 

・・・がググってみても、例のごとく情報全くなし。

セットアップガイドでも触れられていなくて、完全に謎項目。

 

試しにtrueにしてみたら動かなくなったw

 

 

・画像キャッシュをpublic_html以下に置くかどうか OPENPNE_IMG_CACHE_PUBLIC

・画像キャッシュディレクトリ(要書き込み権限)

設定をtrueにしたら、指定した/public_html/img配下に画像ファイルを出力。

そうでない場合は指定したvar/img_cache配下の画像ファイルを出力。

 

なんだこの設定(・ω・)

 

デフォルト設定では

OPENPNE_VAR_DIR=~OPENPNE_DIR/var
OPENPNE_PUBLIC_HTML_DIR=~OPENPNE_DIR/public_html

になっている。

これだけ見るとどっちにしても変わらんやないか と思える。(思ったw)

 

OpenPNEはpublic_html配下を外部に公開する という思想みたいなので

"キャッシュ"は外部からアクセスできないディレクトリ(var)配下に格納するのが

デフォルト設定になっているのではないかと思う。

 

 

で、目的の「DBに画像を保存しないようにできるか」は

設定ファイルを見る限りそれっぽい項目がないので、できない・・・と思われる。

 

さて、どうしたものか。

 

To Be Continued

 

 

カテゴリー: Web, ソフトウェア, 技術的 タグ: , , , , , , , ,  [パーマリンク]

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です