gearman

簡單來講,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目錄
相關文章
相關標籤/搜索