gearman

扫码查看

简单来说,gearman就是用来分配任务的.

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

Client:请求的发起者,可以是 C,PHP,Perl,MySQL UDF 等等。

Job:请求的调度者,用来负责协调把 Client 发出的请求转发给合适的 Worker。

Worker:请求的处理者,可以是 C,PHP,Perl 等等。

因为 Client,Worker 并不限制用一样的语言,所以有利于多语言多系统之间的集成。

甚至我们通过增加更多的 Worker,可以很方便的实现应用程序的分布式负载均衡架构。

如何查看某个gearman的work服务是否正常工作

1, 先进gm.conf中查看该work注册在哪台服务器上,如

"tob_internal_download_docx":{"host":["192.168.1.199:4730"]},

则进入开发环境 ssh root@192.168.1.199, 输入命令,返回结果

root@ifchange-dev:~# /opt/app/gearmand/bin/gearadmin --status | grep tob_internal_download_docx
tob_internal_download_docx  	0	0	50

//第一个数字是已调用该work的请求数量,第二个数字是已调用work正在处理的请求数,第三个数字是该work预留的最大请求数

  如果是其他的,如

"Dfs":{"host":["192.168.1.201:4730"]}

201无法直接进入,则需要修改命令如下

root@ifchange-dev:~# /opt/app/gearmand/bin/gearadmin -h192.168.1.201 --status | grep Dfs
Dfs	0	0	50

--status参数是查看当前多少个worker启动项,最后一个数是50,说明服务是正常的。

Dfs是上传简历的服务,既然服务没挂掉,又报405的错误号码,忠哥说让善军看看是否上传磁盘空间已满了,结果果然是,清除空间后就好了。

2,  在服务所在环境中输入

root@ifchange-dev:~# grep 'call_gearman' /opt/log/*-2017-07-13.log
Binary file /opt/log/IfchangeTOB_Work-2017-07-13.log matches //是二进制文件
root@ifchange-dev:~# grep -a 'call_gearman' /opt/log/*-2017-07-13.log
//-a将binary文件以text文件的方式搜寻数据
/opt/log/IfchangeTOB_Work-2017-07-13.log:2017-07-13 11:20:33	WARN	invite_deliver	toc_custom/webank_bole_web	3918375898	1499916032		192.168.1.110	127.0.0.1	192.168.1.153	60362	8v31e7rb0htmr91hd65ub64pn66fls63		internal_delivery_inner/insertresumeofcustomer/	call_gearman: edps ,errmsg: 5966e7010fdef7.41838127 39183758982755395597 Gearman Library:  edps Failed, param: {"c":"","m":"cvjd_matchscore","p":{"m":"cvjd_matchscore","handle":"Recommendation","cv_id":"6271405","detail":0,"jd_id":"2261922","do_real_filter":"false"}}, header: {"uid":"1","session_id":"8v31e7rb0htmr91hd65ub64pn66fls63","class_name":"invite_deliver","product_name":"toc_custom\/webank_bole_web","log_id":"3918375898","receive_time":1499916019.8052,"client_ip":"192.168.1.110","local_ip":"192.168.1.110","user_ip":"192.168.1.153","request_api":"invite_deliver\/resume_save","ip":"192.168.1.153","version":"1","signid":"3918375955","provider":"toc","uname":"root","appid":"5"}
/opt/log/IfchangeTOB_Work-2017-07-13.log:2017-07-13 14:54:51	WARN	flow	toc_custom/webank_bole_web	3892857289	1499928891		192.168.1.110	127.0.0.1	192.168.1.153	60362	8v31e7rb0htmr91hd65ub64pn66fls63		internal_delivery_inner/insertresumeofcustomer/	call_gearman: edps ,errmsg: 5967193bc12c86.72757261 38928572894041268220 Gearman Library:  edps Failed, param: {"c":"","m":"cvjd_matchscore","p":{"m":"cvjd_matchscore","handle":"Recommendation","cv_id":"6271282","detail":0,"jd_id":"2262332","do_real_filter":"false"}}, header: {"uid":"1","session_id":"8v31e7rb0htmr91hd65ub64pn66fls63","class_name":"flow","product_name":"toc_custom\/webank_bole_web","log_id":"3892857289","receive_time":1499928879.1884,"client_ip":"192.168.1.110","local_ip":"192.168.1.110","user_ip":"192.168.1.153","request_api":"flow\/do_deliver","ip":"192.168.1.153","version":"1","signid":"3892857348","provider":"toc","uname":"root","appid":"5"}

这样就可以知道某服务是否正常工作了。

添加work后重启

发现work挂掉之后,可以在当时的环境中用此命令重启

root@ifchange-dev:/opt/log# sh /root/bin/fuck_worker.sh

重启之后查看work运行状况

root@ifchange-dev:/opt/log# /opt/app/gearmand/bin/gearadmin --status

如果没有正在运行的work列表,则表示整个work都挂掉了,可能的原因是环境gm.conf文件中新增了work,要添加配置,需要添加进去

gearman-LMLPHP

然后将添加好之后的gm.conf复制到本地,可在199环境中使用

scp /opt/wwwroot/conf/gm.conf c80k2@172.16.0.141:/opt/wwwroot/conf/newgm.conf
远程复制命令 远程环境的文件路径 本地环境的用户名@ip地址:本地环境文件路径和文件名

有条件的地方还可以直接在本地使用此命令将远程文件复制到本地

scp root@192.168.1.199:/opt/wwwroot/conf/gm.conf c80k2@172.16.0.141:/opt/wwwroot/conf/newgm.conf
远程复制命令 远程环境用户名@ip地址:远程环境文件路径 本地环境用户名@ip地址:本地环境路径和文件名

如果是要复制一个目录,则需要添加参数-r,如

scp -r /opt/wwwroot/conf c80k2@172.16.0.141:/opt/wwwroot/conf
将远程环境的conf目录复制到本地conf目录
09-08 21:34
查看更多