Hatena::Grouphimotech

HimoTech::rAdio このページをアンテナに追加 RSSフィード

2013,1,21

CakePHPとmemcached

|  CakePHPとmemcached - HimoTech::rAdio を含むブックマーク はてなブックマーク -  CakePHPとmemcached - HimoTech::rAdio  CakePHPとmemcached - HimoTech::rAdio のブックマークコメント

CakePHPを触っている。

memcachedまわりの機能について、以下のようなことがしたいんだけど、できるだけcoreに手を入れるのは避けたい。

  1. PECL::memcachedの方を使いたい。
  2. MemcacheEngineのデフォルト設定を上書きする方法を知りたい。

あるいは、公式の意向を知りたいと思った。

1. PECL::memcacheだけではなく、より高パフォーマンスなPECL::memcachedを使いたい。

ちょうど以下のようなやりとりがあった。

#3511 Memcached instead of Memcache - CakePHP - cakephp
http://cakephp.lighthouseapp.com/projects/42648/tickets/3511-memcached-instead-of-memcache

これによると、CakePHP 2.4のマイルストーンには入れられたらしい。で、Memcacheの方は2.4で非推奨にして、3.0では非対応とする、とのこと。

なるほど、とりあえずはtrunkを観察するか。

余談

古い比較結果にあるバイナリプロトコル対応の有無については、PECL::memcacheも、2007-11-26に出たバージョン3.0.0からは対応しているので、現在はバイナリプロトコル対応についての違いはなくなっている。


2. デフォルト127.0.0.1を設定に追加してくれているけれど、これを自分の設定だけにしたい。

  • サーバは読まない、あるいは複数サーバで同じ設定でクラスタ利用したい。
    • たかだか設定項目に、「そのIPが自分のものかどうか」という処理を入れたくない。

trunkではデフォルト設定の挿入方法が変更されているみたいだけど、それでもやはり標準で自サーバを追加してることには変わりがない…。

MemcacheEngine.phpを書き換えればいいんだけど、できればそれは避けたいな、と。

じゃあインフラ側でProxyするには…

あと、それならいっそインフラ側で対応しようかとも考えたんだけど、memcachedクラスタリングしてProxyできるツール、といいうのはどういうのがあるのか分からない。

HAProxyで単純に振るだけじゃあ、ただの分散になってしまう(?)ので、PHPのMemcache::addServer()みたいに、適切にまとめてくれる機能を持ったものでないといけないように思うんだけど、どんなのがあるのだろうか…。

こんな情報があった。
Twemproxy - MemCachedとRedis用のプロキシ
http://www.infoq.com/jp/news/2012/12/twemproxy
AWS ElastiCache と twemproxyを使ってみた - まめ畑
http://d.conma.me/entry/20121227/1356596553
suz-lab - blog: TwemproxyからElastiCacheに分散(同じキーは同じElastiCacheへ)してみる
http://blog.suz-lab.com/2012/12/twemproxyelasticacheelasticache.html

おお、まさにこれだ。設定ファイルもHAProxyっぽくて分かりやすい。

データ分散に対応したMemcached Porxyですか、求めていたのはこれだ。

さっそく実証に入ろう。

トラックバック - http://himotech.g.hatena.ne.jp/rAdio/20130121

2011,9,17

(nginxで)PHPをFastCGIで動かす

| (nginxで)PHPをFastCGIで動かす - HimoTech::rAdio を含むブックマーク はてなブックマーク - (nginxで)PHPをFastCGIで動かす - HimoTech::rAdio (nginxで)PHPをFastCGIで動かす - HimoTech::rAdio のブックマークコメント

よくある構成だけど、nginxでPHPを動かす際の各種手法に、一体どんな違いがあるのか気になったので調査中…。

環境

OS

CentOS 5.5

PHP
バージョン
5.3.3
nginx
バージョン
1.0.6
spawn-fcgi
バージョン
1.6.3
php-fpm

未導入

  • CentOS Updateのphp53に合わせたいのだけど、ちょうど良いパッケージ(バージョン5.3.3のphp53-fpm)がない
    • IUSは最新のみみたいだし…。

nginx + PHP を動かす手法

  1. SysVinitを利用してphp-cgiを直接起動
  2. spawn-fcgiを利用
  3. php-fpmを利用

知りたいこと

  • SysVinitを利用してphp-cgiを直接起動してnginxから呼べば、間に何も噛んでないから一番シンプルで良さげなんだけど、spawn-fcgiphp-fpmを間に噛ますことで、どんなメリットが生じるのか?

リニューアルしたQiitaにも質問を投げてみた。

nginx + PHP を動かす際に、spawn-fcgiを使うのと、使わずにSysVinit(init.d)でphp-cgiを直接起動するのとでは、一体何が違うのでしょうか? 何らかのパフォーマンス的な違いがあるのでしょうか? #FastCGI #Linux #PHP #nginx - Qiita
http://qiita.com/items/104/chunk

参考資料

php-cgiデーモンスクリプト
RedHatPHPFCGIInitScript
http://wiki.nginx.org/RedHatPHPFCGIInitScript
nginx, PHP 5.3 and FastCGI on CentOS 5.5, Fedora 13, Red Hat RHEL 5.5/6
http://www.if-not-true-then-false.com/2009/install-nginx-php-5-3-and-fastcgi-on-centos-fedora-red-hat-rhel/
  • RedHatPHPFCGIInitScriptにspawn-fcgiを噛ましたやつ
SysVinitって何だろう…?
/etc/init.d/functions を読む - tashenの日記
http://d.hatena.ne.jp/tashen/20081124/1227548098
PHPFastCGIで動かすって、どういうこと?
PHP: Lighttpd 1.4 (Unix システム用) - Manual
http://php.net/manual/ja/install.unix.lighttpd-14.php
CentOSで新しめphpyumで入れる
CentOS 5.6 で PHP 5.3.6 にアップグレード | 複眼中心
http://rewse.jp/blog/p/3467
CentOSPHPが5.1で困っているときの代替策 - 近況
http://d.hatena.ne.jp/pekeq/20100706/p1
  • 4系まで揃えろとは言わんけど、5系ぐらいは全バージョンのパッケージがあって欲しいところ…
トラックバック - http://himotech.g.hatena.ne.jp/rAdio/20110917

2011,2,11 このエントリーを含むブックマーク このエントリーのブックマークコメント

トラックバック - http://himotech.g.hatena.ne.jp/rAdio/20110211