Gearman Manager安装及碰到的问题

2013-02-22
gearman manager安装的时候由于官方文档不太全,转了几大圈才搞定
现在记录下来</p>

安装前需要php安装pecntl
php -m|grep pcntl 命令可查看
如果没有任何输出就是没安装

首先去官方https://github.com/brianlmoon/GearmanManager
把他下载下来,解压

进入目录install执行install.sh
会列出一个菜单让你选择那种方式管理worker
我选的pecl
系统会自动把文件拷贝到几个地方:

启动脚本保存路径: /usr/local/bin/gearman-manager
pid 文件保存路径: /var/run/gearman
log日志文件: /var/log/gearman-manager.log
配置:/etc/gearman-manager
worker文件放置目录 在/etc/gearman-manager/workers/
具体的php系统文件在 /usr/local/share/gearman-manager
服务启动关闭文件在 /etc/init.d/gearman-manager

列出这几个地方是有原因的,因为一会儿修整让他能工作这些目录都要知道……

安装完毕

启动gearman manager命令如下
/etc/init.d/gearman-manager start

关闭用
/etc/init.d/gearman-manager stop

如果启动提示/usr/bin/env:php 找不到指定文件
这个时候需要我们去path环境变量内指定php执行文件所在,并且
/usr/bin/php
保证上面这个目录有php可执行文件,可以拷贝过去或者ln过去

搞定上面问题后,在worker代码放置目录下放一两个官方指定格式的worker文件进去,启动服务后
执行ps -aux|grep gearman-manager
如果发现一个都没有,那么很有可能碰到了以下问题

故障排除解决方法如下
———————————————————-
故障现象
执行 start后会在第一行输出gearmand user not found
类似提示
那么修改
vim /etc/init.d/gearman-manager
GEARMANUSER=”系统内已经有的用户名”
这个是因为服务启动的时候要指定一个用户身份,但是系统没有脚本默认的gearmand这个用户,所以会报错

如果碰到启动后什么都没有,那么用一下方式解决下
———————————————————-
故障现象
当停止服务后,用php /usr/local/share/gearman-manager/pecl-manager.php -vvv-c config文件所在路径
大量输出
php: libgearman/universal.cc:486: gearman_return_tconnection_loop(gearman_universal_st&, constgearman_packet_st&, Check&):Assertion `packet_ptr ==&con->_packet’ failed.
这个错误

解决方法
vim /usr/local/share/gearman-manager/pecl-manager.php

注释$thisWorker->addOptions(GEARMAN_WORKER_NON_BLOCKING);这句命令即可
这个是因为某bug导致他挂了……暂时这么改……其中php扩展的1.1.1版本已经解决这个问题
———————————————————-
最后是启动命令,扔这里了
/etc/init.d/gearman-manager start -c/etc/gearman-manager/config.ini -h ip:端口,ip2:端口