概要說明
微信公眾平臺已對外開放接口報警,當微信服務(wù)器向開發(fā)者推送消息失敗次數(shù)達到預(yù)定閾值時,會將報警消息發(fā)送到指定微信報警群中(設(shè)置方式:公眾平臺->開發(fā)者中心->接口報警),請開發(fā)者積極主動關(guān)注報警,即時解決故障,提高微信公眾號的服務(wù)質(zhì)量。
為了更好地根據(jù)報警信息尾部的實例(提供了openid及時間戳stamp)進行問題排查,開發(fā)者需要在接入層、邏輯層等每一個層級都加上包含關(guān)鍵信息的詳細日志,以利于快速定位問題。
報警目前有2類:
1.通用報警,所有開發(fā)者都需要關(guān)注。
2.公眾號第三方平臺報警,只有在微信開放平臺(open.weixin.qq.com)上申請成為公眾號第三方平臺的開發(fā)者,才需要關(guān)注此報警。
下面對具體的報警做示例以及排查指引說明。
報警內(nèi)容說明
報警內(nèi)容描述:
a)appid:公眾號appid
b)昵稱: 公眾號昵稱
c)時間:所有報警,都會提供首次發(fā)生異常的時間。(如首次發(fā)生超時的時間,首次發(fā)生回應(yīng)失敗的時間)
d)內(nèi)容:錯誤的具體描述
e)次數(shù):發(fā)生失敗的次數(shù)
f)錯誤樣例:錯誤樣例里注明了一些幫助查找問題的信息。如:首次超時開發(fā)者的IP和推送消息類型。如果是回應(yīng)失敗,錯誤樣例還會注明首次回應(yīng)失敗時開發(fā)者的回包。
一般情況下,通過報警提供的IP,時間,消息類型,能夠比較快速的定位到第三方發(fā)生問題的原因。
報警示例1:超時報警
Appid: wxxxxxx
昵稱: WxNickName
時間: 2014-12-01 20:12:00
內(nèi)容: 微信服務(wù)器向公眾號推送消息或事件后,開發(fā)者5秒內(nèi)沒有返回
次數(shù): 5分鐘 1272次
錯誤樣例: [IP=203.205.140.29][Event=UnSubscribe]
該報警表示:微信服務(wù)器向開發(fā)者推送取消關(guān)注事件時,開發(fā)者沒有在5秒內(nèi)返回結(jié)果。在2014-12-01 20:12:00-2014-12-01 20:17:00這5分鐘內(nèi)發(fā)生了1272次。其中這5分鐘內(nèi)第一次發(fā)生超時的時間是:2014-12-01 20:12:00, 開發(fā)者的IP是:203.205.140.29,事件類型是取消關(guān)注事件。
報警示例2:回應(yīng)失敗
Appid: wxxxx
昵稱: WxNickName
時間: 2014-12-01 20:12:00
內(nèi)容: 微信服務(wù)器向公眾號推送消息或事件后,得到的回應(yīng)不合法
次數(shù): 5分鐘 1320次
錯誤樣例: [Event=Click] [ip=58.248.9.218][response_length=10][response_content=Error 500:]
該報警表示:微信服務(wù)器向開發(fā)者推送自定義菜單點擊事件時,開發(fā)者的返回結(jié)果不合法。在2014-12-01 20:12:00-2014-12-01 20:17:00這5分鐘內(nèi)發(fā)生了1320次。其中這5分鐘內(nèi)第一次發(fā)生回應(yīng)失敗的時間是:2014-12-01 20:12:00, 開發(fā)者的IP是:58.248.9.218,事件類型是點擊菜單事件,第三方返回的內(nèi)容長度為10個字節(jié),內(nèi)容為“Error 500:”。
報警示例3:連接超時
Appid: wxxxx
昵稱: WxNickName
時間: 2015-02-04 20:13:09
內(nèi)容: 微信服務(wù)器連接公眾號開發(fā)者服務(wù)器時發(fā)生超時,超時時間為5秒
次數(shù): 5分鐘 7289次
錯誤樣例: [IP=180.150.190.135][Msg=Text]
該報警表示:微信服務(wù)器向開發(fā)者推送粉絲發(fā)來的文本消息時,無法連接到開發(fā)者填寫的服務(wù)器地址。在2015-02-04 20:13:09-2015-02-04 20:18:00這5分鐘內(nèi)發(fā)生了7289次,這5分鐘內(nèi)第一次發(fā)生連接超時的時間是:2015-02-04 20:13:09, 開發(fā)者的IP是:180.150.190.135,事件類型是用戶推送的消息。
各類報警的排查方法
1.DNS失敗
該錯誤為微信服務(wù)器在推送消息給開發(fā)者時,解析dns失敗。如遇到此報警,請開發(fā)者確認:
a)填寫的url,域名是否有誤;
b) 域名是否發(fā)生變化,如過期,更新等。
如果不是以上2個問題,請聯(lián)系微信公眾平臺。
2.Dns超時
目前不會有此錯誤。
3.連接超時
該錯誤是微信服務(wù)器和開發(fā)者服務(wù)器3S內(nèi)未連接成功。報警消息會提供出首次發(fā)生連接失敗的時間和連接的IP。如遇此報警,請開發(fā)者確認:
a)該IP是否有誤。
b)該IP機器是否過載,連接過多。
c)如果是第三方提供服務(wù)器托管,托管商是否有故障。
d)網(wǎng)絡(luò)運營商是否有故障。
4.請求超時
微信服務(wù)器向開發(fā)者服務(wù)器推送消息或事件,開發(fā)者5秒內(nèi)沒有返回。請求超時時,報警消息會提供第一次出現(xiàn)請求超時的時間,開發(fā)者IP和消息類型。請開發(fā)者確認:
a)該IP是否有誤
b)該IP是否接收到報警消息給出的該消息類型的請求
c)該請求是否處理時間過長
5.回應(yīng)失敗
開發(fā)者沒有按照wiki中的回復(fù)消息格式進行回復(fù)消息,或者發(fā)生網(wǎng)絡(luò)錯誤,會報警回應(yīng)失敗,報警消息會提供第一次出現(xiàn)請求回應(yīng)失敗的時間,開發(fā)者的IP,消息類型以及回應(yīng)的消息內(nèi)容,請開發(fā)者確認:
a)該IP是否有誤
b)該IP是否發(fā)生網(wǎng)絡(luò)錯誤
c)該業(yè)務(wù)處理邏輯是否沒有按照wiki規(guī)范回復(fù)消息,或是進入了異常邏輯。
6.MarkFail(自動屏蔽)
微信后臺會實時統(tǒng)計開發(fā)者的失敗次數(shù)。在推送消息給開發(fā)者發(fā)生大量失敗時,微信服務(wù)器會自動屏蔽開發(fā)者,1分鐘內(nèi)不再推送任何消息,并會發(fā)送報警到微信群。此報警是級別最高的報警,開發(fā)者在收到此報警時請盡快處理后臺故障,恢復(fù)服務(wù)。事實上,開發(fā)者在收到此報警前,必然會收到連接超時,請求超時或回應(yīng)失敗等報警,需要開發(fā)者即時去解決這些故障,避免被微信服務(wù)器屏蔽,嚴重影響公眾號服務(wù)!
7.推送component_verify_ticket超時 & 8.推送component_verify_ticket失敗 & 9.推送組件消息超時 & 10.推送組件消息失敗
以上4個報警只有公眾號第三方平臺開發(fā)者會收到,其他公眾號開發(fā)者無需關(guān)注。由于公眾號第三方平臺承載了更多的公眾號,所以公眾號第三方平臺的服務(wù)質(zhì)量需要更嚴格要求和報警,所以把這4個特殊的事件單獨報警。具體的問題查找方式與4,5是一樣的,這里不在贅述。關(guān)于公眾號第三方平臺的具體申請與開發(fā)實現(xiàn),請前往微信開放平臺(open.weixin.qq.com)
1.如何排查DNS失敗的問題?
1.Ping測試你們MP上配置的url里的域名,確認是否能夠得到正確的IP。如不能得到或者錯誤,請到你們的域名托管商管理系統(tǒng)上檢查配置。
2.如1能夠得到正確的IP,又有DNS失敗的報警;請使用DNS服務(wù)器182.254.116.116 ? ? ? ? ? ? 來再測試驗證。Linux?: ? dig @182.254.116.116 域名;windows 修改網(wǎng)絡(luò)配置里的DNS服務(wù)器地址,然后再ping 域名。如果得到的IP不正確或者得不到,請聯(lián)系微信團隊。
2.如何解決連接超時問題?
1.查看是否網(wǎng)絡(luò)環(huán)境問題。
? (1)使用公眾平臺接口,獲取到微信回調(diào)服務(wù)器的IP,api.weixin.qq.com/cgi-bin/getcallbackip?access_token=ACCESS_TOKEN,
? (2)在你們的服務(wù)上ping 測試,檢查你們服務(wù)器到微信回調(diào)用服務(wù)器的網(wǎng)絡(luò)質(zhì)量情況。如有網(wǎng)絡(luò)問題,請聯(lián)系你們的服務(wù)器提供商解決。
2.查看接入層服務(wù)器連接數(shù),負載,nginx的配置,允許的連接個數(shù)。查看nginx錯誤日志是否有“Connection reset by peer”或“Connection timed out”錯誤日志,如有說明nginx連接數(shù)過超負載。
3.建議搭建測試工具,對系統(tǒng)進行心跳檢查,對系統(tǒng)負載,連接數(shù),處理數(shù),處理耗時進行實時監(jiān)控報警。
對于nginx配置,這里提供官方文檔和一篇簡單配置介紹鏈接,希望有幫助: nginx.org/en/docs/,重點關(guān)注連接數(shù)配置,日志配置等。nginx的一些重要配置參考例子如下:
worker_processes 16; //CPU核數(shù) error_log logs/error.log info; //錯誤日志log worker_rlimit_nofile 102400; //打開最大句柄數(shù) events { worker_connections 102400; //允許最大連接數(shù) } //請求日志記錄,關(guān)鍵字段:request_time-請求總時間,upstream_response_time后端處理時 間 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for" "$host" "$cookie_ssl_edition" ' '"$upstream_addr" "$upstream_status" "$request_time" ' '"$upstream_response_time" '; access_log logs/access.log main;
3.如何解決請求超時問題?
每個模塊都需要有完整的日志,能夠查出每個請求在每個模塊的耗時信息,配合微信報警提供信息,能夠很容易的定位到是哪個服務(wù)器出問題。常見的原因是:
1)機器負載太高,耗時增加
2)機器處理異常,消息丟失
3)機器異常,對于機器處理異常,建議盡快修復(fù)bug,對于機器異常,請盡快屏蔽有問題的機器。這里對機器負載太高,簡單提供可行的解決方案。方案一:優(yōu)化性能,擴容。檢查負載情況(cpu,內(nèi)存,io,網(wǎng)絡(luò),詳見附錄),根據(jù)具體性能瓶頸的不同,采取不同的優(yōu)化方式。方案二:異步處理。如果微信服務(wù)器推送的消息來不及實時處理,可將消息先存儲,先返回success給微信服務(wù)器,后臺可后續(xù)再處理消息,如果需要回復(fù)用戶消息,可通過調(diào)用客服消息接口API再回復(fù)用戶消息。
4.如何解決access_token存儲和使用問題?
經(jīng)常有第三方反饋access_token造成服務(wù)中斷的問題,公眾平臺排查問題發(fā)現(xiàn),大部分第三方都在瘋狂刷新access_token,使得access_token超出接口頻率限制而失效。 這里提供一個較為簡單的access_token 存儲和使用方案。
1)中控服務(wù)器定時(建議1小時)調(diào)用微信api,刷新access_token,將新的access_token 存入mysql(或其他存儲),
2)其他工作服務(wù)器每次調(diào)用微信api時從mysql(或其他存儲)獲取access_token,并可在內(nèi)存緩存一段時間(建議1分鐘)。
公眾平臺會保證在access_token刷新后,舊的access_token在5分鐘內(nèi)仍能使用,以確保第三方在更新access_token時不會發(fā)生第三方調(diào)用微信api的失敗。
【相關(guān)推薦】
1. 特別推薦:“php程序員工具箱”V0.1版本下載
2. 微信公眾號平臺源碼下載
3. 微信投票源碼下載
以上是微信開發(fā)之報警排查的詳細內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機

Video Face Swap
使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級代碼編輯軟件(SublimeText3)

PHP是一種開源的腳本語言,廣泛應(yīng)用于Web開發(fā)和服務(wù)器端編程,尤其在微信開發(fā)中得到了廣泛的應(yīng)用。如今,越來越多的企業(yè)和開發(fā)者開始使用PHP進行微信開發(fā),因為它成為了一款真正的易學(xué)易用的開發(fā)語言。在微信開發(fā)中,消息的加密和解密是一個非常重要的問題,因為它們涉及到數(shù)據(jù)的安全性。對于沒有加密和解密方式的消息,黑客可以輕松獲取到其中的數(shù)據(jù),對用戶造成威脅

在微信公眾號開發(fā)中,投票功能經(jīng)常被運用。投票功能是讓用戶快速參與互動的好方式,也是舉辦活動和調(diào)查意見的重要工具。本文將為您介紹如何使用PHP實現(xiàn)微信投票功能。獲取微信公眾號授權(quán)首先,你需要獲取微信公眾號的授權(quán)。在微信公眾平臺上,你需要配置微信公眾號的api地址、官方賬號和公眾號對應(yīng)的token。在我們使用PHP語言開發(fā)的過程中,我們需要使用微信官方提供的PH

隨著微信的普及,越來越多的企業(yè)開始將其作為營銷工具。而微信群發(fā)功能,則是企業(yè)進行微信營銷的重要手段之一。但是,如果只依靠手動發(fā)送,對于營銷人員來說是一件極為費時費力的工作。所以,開發(fā)一款微信群發(fā)工具就顯得尤為重要。本文將介紹如何使用PHP開發(fā)微信群發(fā)工具。一、準備工作開發(fā)微信群發(fā)工具,我們需要掌握以下幾個技術(shù)點:PHP基礎(chǔ)知識微信公眾平臺開發(fā)開發(fā)工具:Sub

微信是目前全球用戶規(guī)模最大的社交平臺之一,隨著移動互聯(lián)網(wǎng)的普及,越來越多的企業(yè)開始意識到微信營銷的重要性。在進行微信營銷時,客服服務(wù)是至關(guān)重要的一環(huán)。為了更好地管理客服聊天窗口,我們可以借助PHP語言進行微信開發(fā)。一、PHP微信開發(fā)簡介PHP是一種開源的服務(wù)器端腳本語言,廣泛運用于Web開發(fā)領(lǐng)域。結(jié)合微信公眾平臺提供的開發(fā)接口,我們可以使用PHP語言進行微信

在微信公眾號開發(fā)中,用戶標簽管理是一個非常重要的功能,可以讓開發(fā)者更好地了解和管理自己的用戶。本篇文章將介紹如何使用PHP實現(xiàn)微信用戶標簽管理功能。一、獲取微信用戶openid在使用微信用戶標簽管理功能之前,我們首先需要獲取用戶的openid。在微信公眾號開發(fā)中,通過用戶授權(quán)的方式獲取openid是比較常見的做法。在用戶授權(quán)完成后,我們可以通過以下代碼獲取用

隨著微信成為了人們生活中越來越重要的一個通訊工具,其敏捷的消息傳遞功能迅速受到廣大企業(yè)和個人的青睞。對于企業(yè)而言,將微信發(fā)展為一個營銷平臺已經(jīng)成為趨勢,而微信開發(fā)的重要性也逐漸凸顯。在其中,群發(fā)功能更是被廣泛使用,那么,作為PHP程序員,如何實現(xiàn)群發(fā)消息發(fā)送記錄呢?下面將為大家簡單介紹一下。1.了解微信公眾號相關(guān)開發(fā)知識在了解如何實現(xiàn)群發(fā)消息發(fā)送記錄之前,我

如何使用PHP實現(xiàn)微信公眾號開發(fā)微信公眾號已經(jīng)成為了很多企業(yè)推廣和互動的重要渠道,而PHP作為一種常用的Web語言,也可以用來進行微信公眾號的開發(fā)。本文將介紹一下使用PHP實現(xiàn)微信公眾號開發(fā)的具體步驟。第一步:獲取微信公眾號的開發(fā)者賬號在開始微信公眾號開發(fā)之前,需要先去申請一個微信公眾號的開發(fā)者賬號。具體的注冊流程可以參見微信公眾平臺的官方網(wǎng)

隨著互聯(lián)網(wǎng)和移動智能設(shè)備的發(fā)展,微信成為了社交和營銷領(lǐng)域不可或缺的一部分。在這個越來越數(shù)字化的時代,如何使用PHP進行微信開發(fā)已經(jīng)成為了很多開發(fā)者的關(guān)注點。本文主要介紹如何使用PHP進行微信開發(fā)的相關(guān)知識點,以及其中的一些技巧和注意事項。一、開發(fā)環(huán)境準備在進行微信開發(fā)之前,首先需要準備好相應(yīng)的開發(fā)環(huán)境。具體來說,需要安裝PHP的運行環(huán)境,以及微信公眾平臺提
