以下是强大的gearman学习及安装记录,代码demo下边的来自网络的附录有很多可以参考。
Gearman 是一套用来把程式需求委派给机器,提供通用的程序框架来将任务分发在机器运算。
它同时具备并行工作的能力、负载均衡处理的能力,以及在不同程序语言之间沟通的能力。
安装
gearmand
安装gearmand依赖的库
yum install -y boost-devel gperf libevent-devel libuuid-devel
安装gearmand服务
tar xzf gearmand-1.1.12.tar.gz
cd gearmand-1.1.12
./configure
make
make install
gearman
安装php扩展
tar xzf gearman-1.1.2.tgz
cd gearman-1.1.2
phpize
./configure
make
make install
# 在php.ini中添加
extension="gearman.so"
gearman启动
1) 创建日志gearmand.log
# touch /pathto/logs/gearmand.log
2)启动
# /usr/local/sbin/gearmand -d -u root -L 192.168.142.130 --log-file=/pathto/logs/gearmand.log
3)参数详解
-b,--backlog= 储备的监听连接数量
-d, --daemon 后台运行
-f, --file-descriptors= 文件描述符的数量
-h, --help 帮助
-j, --job-retries= 在ob server移除不可用job之前运行的次数,防止不断运行导致其他可用worker崩溃。默认没有限制
-l, -log-file= 日志文件存放位置(默认记录最简单日志)
-L, --listen= 监听的IP,默认全部接受
-p, --port= 指定监听端口
-P, --pid-file= 指定进程ID写入位置
-r, --protocol= 加载协议模块
-q, --queue-type= 指定持久化队列
-t, --threads= 使用的I/9线程数量。默认为0
-u, --user= 启动后,切换到指定用户
-v, --verbose 增加一级详细程度
-V, --version 显示版本信息
** issue **: /usr/local/sbin/gearmand: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
解决方案:将对应lib链接到/usr/lib
ln -s /home/vagrant/online/mysql5.6/lib/libmysqlclient.so.18 /usr/lib
ldconfig -v
gearman部署
启动gearmand
启动
/usr/local/sbin/gearmand -d -u root -L 0.0.0.0 --log-file=/pathto/logs/gearmand.log
对应配置修改 common.conf > gearman配置
启动worker
后台运行
nohup php scripts/gearman_job/job.php >/log/gearman.log &
supervisor守护worker进程(推荐)
yum install supervisor
service supervisor start
service supervisor stop
#创建配置文件
/etc/supervisor/conf.d/gearmanwoker.conf:
[program:gearmanwoker]
command=php scripts/gearman_job/job.php
numprocs=12
directory=/dir_path/to/woker/
autostart=true
autorestart=true
stdout_logfile=/path/to/project/log/gearmanwoker.log
stdout_logfile_maxbytes=1MB
stderr_logfile=/path/to/project/log/gearmanwoker.log
stderr_logfile_maxbytes=1MB
update 2015 12-13
worker管理:gearman manager (pecl_manger)
gearmanManager
** 配置中需指定host,pid及log等 **
启动manager daemon
1 | scripts/gearmanManager/bin/pecl_manager.php -c scripts/gearmanManager/etc/config.ini -d -vvv |
关闭
1 | #SIGINT |
重启child(worker)
1 | # SIGHUP |
gearmand queue 持久化(针对background任务)
对于大量访问压力及server宕机都有好处
1 | sudo /usr/local/sbin/gearmand -d -u root -L 0.0.0.0 --log-file=/pathto/gearmand.log --queue-type=MySQL \ |
参考
phpboy
gearman
如有疑问,请文末留言交流或邮件:newbvirgil@gmail.com 本文链接 : https://newbmiao.github.io/2015/10/16/gearman-beginer-guide.html