LoginSignup
4
3

More than 5 years have passed since last update.

php+gearman+supervisiorをインストールして使ってみた。

Last updated at Posted at 2014-01-30

Gearman

インストール(peclのインストールのためにgccを入れる場合には少し時間がかかる)

    yum install php-gearman* *gearman*
    pecl install gearman

設定

    vi /etc/php.ini
    extension=...

DB作成(メモリかsqliteにするほうがいいかと思いつつ。。)

    CREATE DATABASE gearman;
    CREATE TABLE queue ( 
        unique_key VARCHAR(255),
        function_name VARCHAR(255),
        priority INT,
        data LONGBLOB,
        when_to_run BIGINT,
        unique key (unique_key, function_name)
    );

    vi /etc/sysconfig/gearman
    OPTION=" -q MySQL --mysql-user=… --mysql-password=… --mysql-db=gearman --mysql-table=queue "

ログローテートとかchkconfigとか

    chkconfig ...
    /var/log/gearman.log {
           missingok
           weekly
           notifempty
           nocompress
    }

supervisior

いんすと。。(後述だがpipでインストールする)

    yum install supervisor

せってい。。

    vi /etc/supervisord.conf
    [program:…-01]
    略
    [program:…-02]
    略

ろぐろーてーととか、、

やってみてどうだったかとか

苦労したのがsupervisior。
複数プロセスの設定で、設定ファイルがバージョンでだいぶ違ったりsocketファイルのファイル権限とか。。
やりやすさで、yumのバージョンで、多分ちょっと古いやりかたを採用。numprocとか使いたかった。。
あとはfuelPHPからきゅーしました。

追記:

この後、exit 1などの終了コードでプロセス監視が途絶えてしまうことが課題となり、pip installで3.0をインストールして、オプション設定することで対応できた。easy_installではなくpipでinstallしたらうまくいった気がいする。今回virtualenvは使わなかった。numprocをつかえるようになって便利になって良かった。

追記:

gearmanのcpuの占有がタスクが無くても大きくなっていたかもしれない。
バッチでのタスクを無くしても占有率が高かった。
再起動したら解消された。まあ、移行したからいらないんだけど。

追記:

service supervisord restartだと失敗するときがある。
プロセスの再起動だけならsupervisorctl restart hoge

supervisorctl status 子プロセスの様子を見る
supervisorctl stop 子プロセスを停止する
supervisorctl start 子プロセスを開始する
supervisorctl restart 子プロセスを再起動する
supervisorctl reload Supervisord自体を再起動する
supervisorctl reread 設定ファイルを読みなおして変更を反映させる
supervisorctl avail 全プロセスの情報を表示

参考:
PHP+Kestrel+Supervisorでお手軽タスクキューイング
http://blog.asial.co.jp/875

http://cultureeen.hatenablog.jp/entry/2014/05/11/155933
http://yulii.net/entries/54
http://qiita.com/yushin/items/15f4f90c5663710dbd56

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3