簡單來講,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目錄