Centos6.5下 Gearman的安装及使用

CentOS6.3下压力测试工具Siege的并发测试 今天在CentOS 6.3下做了Siege工具的压力测试,主要是测试一下Siege工具的使用。 我的环境如下: 操作系统:CentOS 6.3 开发环境:Nginx1.0 + PHP5.3 + php-fpm(nginx开启2个worker进程,php-fpm最大开启30个worker进程) 硬件环境:1G内存 + i5英特尔4核CPU   1:安装Siege >wget http: 阅读详情

Gearman简介

概况

Gearman是一个用来把工作委派给其他机器、分布式的调用更适合做某项工作的机器、并发的做某项工作在多个调用间做负载均衡、或用来在调用其它语言的函数的系统。

组成

Gearman是一个分发任务的程序架构,由三部分组成:

  1. Gearman client:提供gearman client API给应用程序调用。API可以使用C,PHP,PERL,MYSQL UDF等待呢个语言,它是请求的发起者。
  2. Gearman job server:将客户端的请求分发到各个gearman worker的调度者,相当于中央控制器,但它不处理具体业务逻辑。
  3. Gearman worker:提供gearman worker API给应用程序调用,具体负责客户端的请求,并将处理结果返回给客户端。

应用

Mogilefs的分布式文件系统的核心就是用gearman实现的。
这个软件的应用场景很多,比如视频网站的视频处理,分布式日志处理,电子邮件处理,文件同步处理,图片处理等等,只要是可以放开,不影响体验和响应的场 景,需要并行进行大量计算和处理的程序都是可以的。Yahoo在60或更多的服务器上使用gearman每天处理600万个作业。新闻聚合器digg构建 了一个相同规模的gearman网络,每天可处理400000个作业。
Gearman不但可以做为任务分发,还可以做为应用方面的负载均衡。可以让worker放在不同的一堆服务器上,也可以启动放在同一个cpu的多个核 上。比如,应用视频转换程序,不希望web服务器来处理视频格式转换,这时,可以在这一堆服务器上进行任务分发,在上面加载worker处理视频格式,对 外的web服务器就不会被视频转换过程影响。而且扩展方便,加一台服务器到任务调度中心,注册成worker即可,这时job server会在请求到来的时候,将请求发送给空闲的worker。还可以运行多个job server,组成ha架构,如果一个job server当掉了,client和worker会自动迁移到另一台job server上。

工作原理

这里写图片描述

运行过程

一个Gearman请求的处理过程涉及三个角色:Client -> Job -> Worker。

Client:请求的发起者,可以是 C,PHP,Perl,MySQL UDF 等等。
Job:请求的调度者,用来负责协调把 Client 发出的请求转发给合适的 Work。
Worker:请求的处理者,可以是 C,PHP,Perl 等等。
因为 Client,Worker 并不限制用一样的语言,所以有利于多语言多系统之间的集成。
甚至我们通过增加更多的 Worker,可以很方便的实现应用程序的分布式负载均衡架构。

Gearman安装

官网: http://gearman.org/
官网下载: https://launchpad.net/gearmand
PHP扩展:http://pecl.php.net/package/gearman
PHP使用:http://php.net/manual/en/book.gearman.php

一键下载:http://download.youkuaiyun.com/detail/webben/9781877

Linux中必备常用支持库的安装(CentOS-6.5)
http://blog.youkuaiyun.com/webben/article/details/62217156

#安装依赖库
yum install -y boost-devel gperf libevent-devel libuuid-devel
shell> cd /usr/local/src/
#下载
shell> wget https://launchpad.net/gearmand/1.2/1.1.12/+download/gearmand-1.1.12.tar.gz
#解压
shell> tar zxf gearmand-1.1.12.tar.gz
shell> cd gearmand-1.1.12
#配置
shell> ./configure 
#编译安装
shell> make && make install
#测试
shell> gearman

这里写图片描述

出现上图就安装成功了。

安装过程中出现过的错误(添加依赖库就能解决):

#错误:configure: error: could not find boost
#解决
shell> yum install -y boost boost-devel

#错误:configure: error: could not find gperf
#解决
shell> yum install gperf

#错误:configure: error: Unable to find libevent 
#解决
shell> yum install libevent-devel

#错误:configure: error: Unable to find libuuid 
#解决
shell> yum install libuuid-devel

安装PHP拓展

shell> cd /usr/local/src
#解压
shell> tar xzf gearman-1.1.2.tgz

#配置
shell> cd gearman-1.1.2
shell> phpize
shell> ./configure

#编译安装
shell> make && make install

出现以下代表安装成功
Installing shared extensions: /usr/local/php/lib/php/extensions/

#编辑配置文件
shell> vim /usr/local/php/etc/php.ini
#增加gearman拓展
extension=gearman.so

#重启Web服务或者php-fpm。
shell> service php-fpm restart

#测试
shell> php -r 'phpinfo();' | grep gearman

#出现以下代表安装成功
gearman
gearman support => enabled
libgearman version => 1.1.12

这里写图片描述

Gearman启动停止

#创建日志
shell> mkdir -p /data/logs
shell> touch /data/logs/gearmand.log

#启动
shell> /usr/local/sbin/gearmand -d -u root -L 192.168.43.135 --log-file=/data/logs/gearmand.log
#报错
/usr/local/sbin/gearmand: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
#解决

#1.先确认/usr/local/mysql/lib/下是否有libmysqlclient.so.18这个文件.
shell> ll /usr/local/mysql/lib/|grep libmysqlclient.so.18

#2.修改ld.so.conf文件
shell> echo "/usr/local/mysql/lib" >>/etc/ld.so.conf

#3.然后执行ldconfig使其生效.
shell> /usr/local/mysql/lib/ldconfig

#再执行启动命令
#查看是否启动成功
shell> ps -ef | grep gearman
root      86570      1  0 03:17 ?        00:00:00 /usr/local/sbin/gearmand -d -u root -L 192.168.43.135 --log-file=/data/logs/gearmand.log

#查看监听端口
shell> netstat -anp | grep 86570

#停止,直接kill掉进程。
shell> hill -9 86570

参数解释

  • -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 显示版本信息

Gearman使用

创建Worker

创建worker.php。

 # php code
$worker= new GearmanWorker();
$worker->addServer('192.168.43.135', '4730');
$worker->addFunction("repeat", "str_repeat_callback");
while ($worker->work());

function str_repeat_callback($job){
    // 接收数据  
    $tmp = $job->workload();
    //重复次数
    $rs = str_repeat( '.' , $tmp );
    echo $rs."\n";
    return $rs;  
}   

启动Worker端

shell> php worker.php

创建Client(阻塞模式,同步返回结果)

创建一个client.php,do()方法是阻塞模式,必须等待worker端返回结果,程序才能停止。

$client= new GearmanClient();
$client->addServer('192.168.43.135', '4730');
for( $i = 0;$i < 10 ; $i++ )
{
    //等到worker端返回结果,才会结束。  
    $ret = $client->do("repeat", $i);
    echo $ret."\n";
}

结果如下:
这里写图片描述

创建Client(非阻塞,异步请求)

创建client1.php。doBackground()不用等待worker端返回结果,程序就结束了。

$client= new GearmanClient();  
$client->addServer('192.168.43.135', '4730');  

for( $i = 0 ;$i < 10;$i++)
{
    //不等待返回结果,就会结束  
    $ret = $client->doBackground("repeeat", $i);  
    echo $ret."\r\n";  
}

更多使用方法请参考:
http://php.net/manual/en/book.gearman.php

Gearman管理

输入以下命令,查看4730端口情况。

shell>  (echo "status" ; sleep 2 ) | telnet 192.168.43.135 4730

这里写图片描述

  1. 字段说明:”已知注册的任务” “正在运行的任务” “队列中的任务” “可用的 Worker”.
  2. repeat 0 0 2,注册的任务名为 repeat ,0 个正常在运行,队列为空,有一个可用的 Worker.
Linux常用软件安装与配置——目录 目 录 目录说明: 1)移动到博客标题,点击超链接,可以进入到该博客。 2)本目录持续更新,关注请收藏。 3)本目录详细地址:http://blog.csdn.net/clevercode/article/details/45740431。 Linux常用软件安装与配置——目录(2015-05-02) 1Linux中必备常用... 阅读详情

相关推荐

docker-gearman:Docker Gearman服务器

码头工人 Docker Gearman服务器

如何在基于 Docker 的 PHP 环境安装 Gearman 扩展

为什么80%的码农都做不了架构师?>>> ...

weixin_33989780的博客 502

java-gearman-service-0.6.6.jar

java实现gearman的job实现的jar包,包括gearman server,client和work客户端API

gearman java_gearman安装,提示错误:configure: error: could not find boost

背景及最终解决方案在CentOS 7上安装gearman时,提示错误:configure: error: could not find boost,最终解决方案是:先安装:# yum install -y boost boost-devel发现问题还是没解决,最终通过Bing找到了正确的答案,还要继续安装:# yum install gcc-c++.x86_64 gperf最后,再执行 ./con...

weixin_35823755的博客 525

gearman管理工具GearmanManager的安装与php使用方法示例

主要介绍了gearman管理工具GearmanManager的安装与php使用方法,结合实例形式详细分析了gearman管理工具GearmanManager的安装及php使用GearmanManager相关配置与操作注意事项,需要的朋友可以参考下

Gearman安装相关资源

Gearman安装相关资源 《gearmand-1.1.12.tar.gz》 《gearman-1.1.2.tgz》

centos安装gearman

centos安装gearman post byrocdk890/ 2012-8-4 1:11 Saturdaylinux技术 发表评论 今天公司让我在服务器上安装gearman,服务器环境是lamp,那gearman是什么?其实这个gearman是一个处理分布式过程通信的健壮系统.它提供了一个通用的应用程序框架,主要用来把任务转发给到其他机器或进程.使用Gearman 能让程序...

weixin_34204722的博客 156

Gearman安装可能涉及到的安装包

该资源包括安装Gearman时可能涉及到的软件包 具体包括gearmand、gearman、php、gperf、libevent

PHP实战:Gearman安装配置与高并发场景应用指南

在PHP开发中,Gearman作为一个分布式任务调度系统,能够有效解决高并发场景下的性能瓶颈问题。它通过将耗时操作异步处理,显著提升Web应用的响应速度。下面我将从实际应用角度

2509_93883384的博客 312

Gearman::XS在Centos下的编译安装方法

主要介绍了Gearman::XS在Centos下的编译安装方法,需要的朋友可以参考下

解决mmdet3d安装中因PyTorch高版本引发的THC.h缺失问题

本文详细分析了在安装mmdet3d时,因PyTorch版本过高导致THC.h头文件缺失的常见报错问题。文章指出该错误的本质是PyTorch 1.7+版本废弃了旧API,与老版本C++扩展代码不兼容。提供了两种核心解决方案:一是降级PyTorch至1.6及以下版本;二是修改源码,将THC.h引用替换为ATen/cuda等新头文件,并给出了具体的代码修改示例和排查技巧。

weixin_29085151的博客 379

在CentOS release 5.6上安装gearman及php扩展错误记录

之前在较新版本的CentOS上安装gearman没有发现什么问题,但这次是在公司开发服上安装gearman,由于使用CentOS release 5.6版本,较旧,导致出现很多问题,今天仅仅把错误记录上来,以下是错误信息:   >make gearman.h:53:27: error: tr1/cinttypes: No such file or directory #原因是g++ ,gc

田野 1599

分位数映射数据后处理-Quantile Mapping后处理 (R语言)

统计后处理器基本上是统计模型,将观察到的关注变量与从气象或水文模型的直接模型输出(DMO)导出的适当预测变量相关联。统计后处理的重要性早已在气象预报中得到认可。早期的工作包括完善的预测(perfect prognosis),模型输出统计(MOS)和模拟方法(analog method)等模型。 近年来,已经提出了许多其他后处理方法,包括秩直方图校准(rank histogram calibrati...

水滴石穿,绳锯木断 1万+

centos6.5 安装gearman和php扩展

1、下载 Gearman 安装软件 https://launchpad.net/gearmand 2、升级或安装相关软件 yum install boost  boost-devel -y boost 的版本必须大于 1.39  3、解压和安装 tar zxvf gearmand-1.1.4.tar.gz cd gearmand-1.1.4 ./configure --pr

juanha824的专栏 1245

你的Wi-Fi总断网?可能是DHCP租约到期惹的祸!手把手教你用Windows/路由器设置永久IP或延长租期

本文深入解析家庭Wi-Fi频繁断网的常见原因——DHCP租约到期问题,并提供Windows和路由器设置永久IP或延长租期的详细教程。通过对比静态IP配置与延长租期两种方案,帮助用户有效解决网络不稳定问题,特别适合游戏玩家和远程工作者优化家庭网络环境。

weixin_29305313的博客 1411

OpenCL编译环境配置

在 Linux 系统上配置 OpenCL 开发环境需要安装适当的驱动、运行时和开发工具。

深之JohnChen的专栏 1999

centos5.6 64位下安装配置gearman

1 准备需要的软件   boost 1.43  安装gearmand需要boost 1.37以上版本 下载地址http://sourceforge.net/projects/boost/files/boost/1.43.0/boost_1_43_0.tar.gz/download

东杰书屋 2688

某音播放量查询,播放量接口研究,最新版本抓包,修改SO文件绕过SSL

本教程适用于某音27.8,64位版本,32为版本及某音旁侧版本修改方法大同小异,部分旁侧版本修改之后模拟器可能无法抓包,真机测试均可正常抓包,此方法修改后绝大部分包可以正常抓取,但部分包无法抓取,例如验证码,内置浏览器功能,如需抓取此类包可通过 Postern + Charles 实现。

byalipus的博客 1万+

Compiling gearman on CentOS 5.6

Compiling gearman on CentOS 5.6 Last updated: Sat, 03 Sep 2011 07:37:57 -0700View threadatGearman Hi Song,How did you manage to compile 0.22 . I am trying to compile 0.22 on my64bit cent O...

weixin_33834910的博客 148

Axial Attention 和 Criss-Cross Attention及其代码实现

Axial Attention 和 Criss-Cross Attention及其代码实现 ​ 文章目录Axial Attention 和 Criss-Cross Attention及其代码实现1 Criss - Cross Attention介绍1.1 引言1.2 理论实现1.2.1 获取权重A1.2.2 Affinity操作1.3.3 全部信息获取1.3 代码实现1.3.1 官方实现1.3.2 纯pytorch实现2 Axial Attention 介绍2.1 引言2.2 理论实现2.3 代码实现2.3

fzl的博客 2万+

PTA 7-8 暴力小学(二年级篇)-求出4个数字 (10分)java

PTA 7-8 暴力小学(二年级篇)-求出4个数字 (10分)java 小博是新城小学二年级学生,这孩子人很老实,数学、语文成绩都是中等。不过一旦坐在电脑前,写起代码来,则有些霸气侧漏,尤其擅长各种暴力方法。本题就是数学莫老师的题目之一,请你和小博一起暴力求解吧。 输入格式: 第一行给出这个和N(图中例子的和N为2000)。 输出格式: 第一行输出所有解的数目K,随后K行按照DCBA 4位数字从...

qryzhfj的博客 2187

gearman mysql 扩展_利用gearman实现redis缓存mysql

环境:centos6.5mysql5.6gearman简介:Gearman是一个支持分布式的任务分发框架。设计简洁,获得了非常广泛的..环境:centos6.5mysql5.6)在mysql中的数据发生改变时触动触发器将数据传入Gearman中,这时的mysql相当于Gearman的clinet。然后运行自己编写的php程序作为worker,将Gearman中的数据传到Redis中去,这时的Red...

weixin_33814002的博客 89

行为预测模型:Social LSTM与Graph Neural Networks

行为预测模型:Social LSTM与Graph Neural Networks ,人工智能,计算机视觉,大模型,AI,本文围绕行为预测模型Social LSTM与Graph Neural Networks展开,介绍了两者的基础概念、原理、应用场景,还对比了它们在优势、劣势和适用场景上的不同,最后给出了相应的代码示例。Social LSTM基于LSTM,通过社交池化层处理多智能体交互;图神经网络处理图结构数据,靠消息传递获取信息,二者各有侧重,适用于不同场景。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 15万+

Linux中Gearman安装与使用,分布式消息队列(CentOS-6.5:gearmand-1.1.12)

1 Gearman简介 1.1 概况 Gearman是一个用来把工作委派给其他机器、分布式的调用更适合做某项工作的机器、并发的做某项工作在多个调用间做负载均衡、或用来在调用其它语言的函数的系统。 1.2 组成 Gearman是一个分发任务的程序架构,由三部分组成: 1)Gearman client:提供gearman client API给应用程序...

CleverCode的博客 8517

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

gearman php mysql_利用gearman实现redis缓存mysql

环境:centos6.5mysql5.6gearman简介:Gearman是一个支持分布式的任务分发框架。设计简洁,获得了非常广泛的..环境:centos6.5mysql5.6)在mysql中的数据发生改变时触动触发器将数据传入Gearman中,这时的mysql相当于Gearman的clinet。然后运行自己编写的php程序作为worker,将Gearman中的数据传到Redis中去,这时的Red...

weixin_28684497的博客 103

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

上一篇: RabbitMQ学习之PHP AMQP拓展安装
下一篇: Linux中必备常用支持库的安装(CentOS-6.5)
Webben
博客等级 码龄10年 19粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值