简单来讲,gearman就是用来分配任务的.web
一个Gearman请求的处理过程涉及三个角色:Client -> Job -> Worker。api
Client:请求的发起者,能够是 C,PHP,Perl,MySQL UDF 等等。bash
Job:请求的调度者,用来负责协调把 Client 发出的请求转发给合适的 Worker。服务器
Worker:请求的处理者,能够是 C,PHP,Perl 等等。session
由于 Client,Worker 并不限制用同样的语言,因此有利于多语言多系统之间的集成。架构
甚至咱们经过增长更多的 Worker,能够很方便的实现应用程序的分布式负载均衡架构。app
如何查看某个gearman的work服务是否正常工做负载均衡
1, 先进gm.conf中查看该work注册在哪台服务器上,如ssh
"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,要添加配置,须要添加进去
而后将添加好以后的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目录