Heim  >  Artikel  >  WeChat-Applet  >  Alarm-Fehlerbehebung für die WeChat-Entwicklung

Alarm-Fehlerbehebung für die WeChat-Entwicklung

Y2J
Y2JOriginal
2017-05-16 11:07:518290Durchsuche

Zusammenfassende Beschreibung

Die öffentliche WeChat-Plattform wurde für die Öffentlichkeit geöffnetSchnittstelleAlarm, wenn die Anzahl der fehlgeschlagenen Versuche des WeChat-Servers, Nachrichten an Entwickler zu senden, einen vorgegebenen Schwellenwert erreicht, der Die Alarmmeldung wird an den angegebenen WeChat-Alarm gesendet. In der Gruppe (Einstellungsmethode: Öffentliche Plattform -> Entwicklerzentrum -> Schnittstellenalarm) werden Entwickler aufgefordert, aktiv auf den Alarm zu achten, den Fehler sofort zu beheben und die Servicequalität zu verbessern des offiziellen WeChat-Kontos.

Um Probleme anhand der Beispiele am Ende der Alarminformationen (OpenID und Zeitstempel Stempel werden bereitgestellt) besser beheben zu können, benötigen Entwickler außerdem detaillierte Protokolle mit wichtigen Informationen, um schnell helfen zu können Probleme lokalisieren.

Derzeit gibt es zwei Arten von Alarmen:

1. Allgemeine Alarme, auf die alle Entwickler achten müssen.

Alarm-Fehlerbehebung für die WeChat-Entwicklung

2. Wenn die Drittanbieterplattform für öffentliche Konten die Polizei ruft, können Sie sich nur auf der offenen WeChat-Plattform als Entwickler der Drittanbieterplattform für öffentliche Konten bewerben (open.weixin.qq.com) Nur dann müssen Sie auf diesen Alarm achten.

Alarm-Fehlerbehebung für die WeChat-Entwicklung

Im Folgenden finden Sie Beispiele für spezifische Alarme und Richtlinien zur Fehlerbehebung.

Beschreibung des Alarminhalts

Beschreibung des Alarminhalts:

a)App-ID: offizielle Konto-App-ID
b)Spitzname: offizieller Konto-Spitzname
c) Zeit: Alle Alarme geben die Zeit an, zu der die Anomalie zum ersten Mal auftrat. (Zum Beispiel der Zeitpunkt, zu dem das erste Timeout auftrat, der Zeitpunkt, zu dem der erste Antwortfehler auftrat)
d) Inhalt: spezifische Beschreibung des Fehlers
e) Häufigkeit: die Anzahl der Fehler
f) Fehlerbeispiel: Im Fehlerbeispiel sind einige Informationen aufgeführt, die bei der Behebung des Problems helfen. Zum Beispiel: die IP- und Push-Nachrichtenart des Entwicklers, bei dem zum ersten Mal eine Zeitüberschreitung aufgetreten ist. Wenn die Antwort fehlschlägt, zeigt das Fehlerbeispiel auch die Antwort des Entwicklers an, als die erste Antwort fehlschlug.

Im Allgemeinen kann die Ursache des Drittanbieterproblems anhand der vom Alarm bereitgestellten IP, Uhrzeit und Nachrichtenart schnell lokalisiert werden.

Alarmbeispiel 1: Timeout-Alarm

Appid: wxxxxxx
Spitzname: WxNickName
Zeit: 2014-12-01 20:12:00
Inhalt: Nachdem der WeChat-Server eine Nachricht oder ein Ereignis an das offizielle Konto gesendet hatte, gab der Entwickler den
-Zähler nicht innerhalb von 5 Sekunden zurück: 1272 Mal in 5 Minuten
Fehlerbeispiel: [IP=203.205. 140.29][Event= UnSubscribe]

Dieser Alarm bedeutet: Als der WeChat-Server das Unfollow-Ereignis an den Entwickler weiterleitete, gab der Entwickler das Ergebnis nicht innerhalb von 5 Sekunden zurück. Es geschah 1272 Mal in den 5 Minuten vom 01.12.2014 um 20:12:00 Uhr bis zum 01.12.2014 um 20:17:00 Uhr. Die erste Zeitüberschreitung innerhalb von 5 Minuten war: 2014-12-01 20:12:00, die IP des Entwicklers war: 203.205.140.29 und der Ereignistyp war ein Unfollow-Ereignis.

Alarmbeispiel 2: Antwortfehler

Appid: wxxxx
Spitzname: WxNickName
Zeit: 2014-12-01 20:12:00
Inhalt: Nachdem der WeChat-Server eine Nachricht oder ein Ereignis an das offizielle Konto weitergeleitet hatte, war die empfangene Antwort illegal
Anzahl der Male: 1320 Mal in 5 Minuten
Fehlerbeispiel: [Event=Click] [ip=58.248. 9.218][response_length= 10][response_content=Error 500:]

Dieser Alarm bedeutet: Wenn der WeChat-Server das benutzerdefinierte Menü-Klickereignis anschickt Der Entwickler, das zurückgegebene Ergebnis des Entwicklers ist illegal. Es geschah 1320 Mal innerhalb von 5 Minuten vom 01.12.2014 um 20:12:00 Uhr bis zum 01.12.2014 um 20:17:00 Uhr. Das erste Mal, dass die Antwort innerhalb von 5 Minuten fehlschlug, war: 2014-12-01 20:12:00, die IP des Entwicklers war: 58.248.9.218, der Ereignistyp war ein Klickmenü-Ereignis und die Länge des vom dritten zurückgegebenen Inhalts Die Partei war 10 Bytes groß, der Inhalt ist „Fehler 500:“.

Alarmbeispiel 3: Verbindungs-Timeout

Appid: wxxxx
Spitzname: WxNickName
Zeit: 2015-02-04 20:13:09
Inhalt: Bei der Verbindung des WeChat-Servers mit dem Entwicklerserver des öffentlichen Kontos ist eine Zeitüberschreitung aufgetreten. Die Zeitüberschreitungsdauer beträgt 5 Sekunden
Anzahl der Male: 7289 Mal in 5 Minuten
Fehlerbeispiel: [IP=180.150.190.135][ Msg=Text]

Dieser Alarm bedeutet: Wenn der WeChat-Server Textnachrichten von Fans an den Entwickler sendet, kann er keine Verbindung zur vom Entwickler eingegebenen Serveradresse herstellen. Es trat 7289 Mal innerhalb von 5 Minuten vom 04.02.2015 um 20:13:09 Uhr bis zum 04.02.2015 um 20:18:00 Uhr auf. Das erste Mal, dass eine Verbindungszeitüberschreitung innerhalb dieser 5 Minuten auftrat, war: 04.02.2015 um 20:00 Uhr. 13:09, die IP des Entwicklers lautet: 180.150.190.135 und der Ereignistyp ist eine vom Benutzer gepushte Nachricht.

Methoden zur Fehlerbehebung für verschiedene Alarme

1. DNS-Fehler

Dieser Fehler bedeutet, dass der WeChat-Server DNS nicht auflösen konnte, als er Nachrichten an Entwickler übermittelte. Wenn dieser Alarm auftritt, bestätigen Sie bitte:

a) ob die eingegebene URL und der Domänenname korrekt sind
b) ob sich der Domänenname geändert hat, z. B. abgelaufen ist, aktualisierenWarten.

Wenn die beiden oben genannten Fragen nicht zutreffen, wenden Sie sich bitte an die öffentliche WeChat-Plattform.

2.Dns-Timeout

Derzeit tritt dieser Fehler nicht auf.

3. Verbindungszeitüberschreitung

Dieser Fehler besteht darin, dass der WeChat-Server und der Entwicklerserver nicht innerhalb von 3 Sekunden erfolgreich eine Verbindung hergestellt haben. Die Alarmmeldung enthält den Zeitpunkt des ersten Verbindungsfehlers und die IP-Adresse der Verbindung. Wenn dieser Alarm auftritt, bestätigen Sie bitte Folgendes:

a) Ob die IP korrekt ist.
b) Ob die IP-Maschine überlastet ist und zu viele Verbindungen hat.
c) Wenn ein Dritter Server-Hosting bereitstellt, liegt ein Fehler beim Hosting-Anbieter vor?
d) Ob der Netzbetreiber fehlerhaft ist.

4. Anforderungszeitlimit

Der WeChat-Server sendet Nachrichten oder Ereignisse an den Entwicklerserver, aber der Entwickler kehrt nicht innerhalb von 5 Sekunden zurück. Wenn bei der Anfrage eine Zeitüberschreitung auftritt, enthält die Alarmmeldung den Zeitpunkt, zu dem die Zeitüberschreitung der Anfrage zum ersten Mal auftrat, die Entwickler-IP und den Nachrichtentyp. Entwickler bestätigen bitte:

a) Ob die IP falsch ist
b) Ob die IP die Anfrage des in der Alarmmeldung angegebenen Nachrichtentyps empfängt
c) Ob die Anfrage verarbeitet wird Die Zeit ist zu lang

5. Antwortfehler

Der Entwickler antwortet nicht entsprechend dem Antwortnachrichtenformat im Wiki oder es ist ein Netzwerkfehler aufgetreten , wird ein Alarm ausgegeben, wenn die Antwort fehlschlägt, und die Nachricht gibt den Zeitpunkt an, zu dem die Anforderungsantwort zum ersten Mal fehlgeschlagen ist, die IP des Entwicklers, den Nachrichtentyp und den Inhalt der Antwortnachricht zur Bestätigung:

a) Ist die IP korrekt?
b) Ob ein Netzwerkfehler mit der IP aufgetreten ist
c) Ob die Geschäftsverarbeitungslogik nicht entsprechend auf die Nachricht geantwortet hat mit den Wiki-Spezifikationen oder einer abnormalen Logik eingegeben.

6.MarkFail (automatische Blockierung)

Der WeChat-Hintergrund zählt die Anzahl der Entwicklerfehler in Echtzeit. Wenn beim Übertragen von Nachrichten an Entwickler eine große Anzahl von Fehlern auftritt, blockiert der WeChat-Server automatisch den Entwickler, stoppt das Übertragen von Nachrichten innerhalb einer Minute und sendet einen Alarm an die WeChat-Gruppe. Bei diesem Alarm handelt es sich um den Alarm der höchsten Stufe. Wenn Entwickler diesen Alarm erhalten, beheben Sie den Hintergrundfehler bitte so schnell wie möglich und stellen Sie die Dienste wieder her. Tatsächlich erhalten Entwickler vor Erhalt dieses Alarms zwangsläufig Alarme wie Verbindungs-Timeout, Anforderungs-Timeout oder Antwortfehler. Entwickler müssen diese Fehler sofort beheben, um zu vermeiden, dass sie vom WeChat-Server blockiert werden und die öffentlichen Kontodienste ernsthaft beeinträchtigen!

7. Zeitüberschreitung beim Senden von „component_verify_ticket“& 8. Fehler beim Senden von „component_verify_ticket“& 9. Zeitüberschreitung beim Senden der Komponentennachricht& 10. Fehler beim Senden der Komponentennachricht

Die oben genannten 4 Alarme werden nur von Drittplattformentwicklern gemeldet Wenn öffentliche Konten empfangen werden, müssen andere Entwickler öffentlicher Konten nicht darauf achten. Da die Drittanbieterplattform für öffentliche Konten mehr öffentliche Konten führt, erfordert die Servicequalität der Drittanbieterplattform für öffentliche Konten strengere Anforderungen und Alarme, sodass diese vier Sonderereignisse separat gemeldet werden. Die spezifische Problemfindungsmethode ist die gleiche wie in 4 und 5, daher werde ich hier nicht auf Details eingehen. Für spezifische Anwendungen und Entwicklungsimplementierungen der Drittanbieterplattform für öffentliche Konten gehen Sie bitte zur WeChat Open Platform (open.weixin.qq.com)

FAQ

1 . Wie kann ein DNS-Fehler behoben werden?

1. Testen Sie den Domänennamen in der auf Ihrem MP konfigurierten URL, um zu bestätigen, ob Sie die richtige IP erhalten können. Wenn es nicht abgerufen werden kann oder falsch ist, überprüfen Sie bitte die Konfiguration im Verwaltungssystem Ihres Domainnamen-Hosting-Anbieters.
2. Wenn die richtige IP in 1 erhalten werden kann, aber ein DNS-Fehler vorliegt, verwenden Sie bitte den DNS-Server 182.254.116.116, um ihn erneut zu testen und zu überprüfen. Linux: dig @182.254.116.116 Domänennamen; Windows ändert die DNS-Serveradresse in der Netzwerkkonfiguration und pingt dann den Domänennamen. Wenn die erhaltene IP falsch ist oder nicht abgerufen werden kann, wenden Sie sich bitte an das WeChat-Team.

2. Wie kann das Verbindungs-Timeout-Problem gelöst werden?

1. Überprüfen Sie, ob ein Problem mit der Netzwerkumgebung vorliegt.
(1) Verwenden Sie die öffentliche Plattformschnittstelle, um die IP des WeChat-Rückrufservers zu erhalten, api.weixin.qq.com/cgi-bin/getcallbackip?access_token=ACCESS_TOKEN,
(2) In Ihrem Dienst Führen Sie einen Ping-Test durch, um die Netzwerkqualität von Ihrem Server zum WeChat-Rückrufserver zu überprüfen. Wenn Sie Netzwerkprobleme haben, wenden Sie sich bitte an Ihren Serveranbieter, um diese zu beheben.

2. Überprüfen Sie die Anzahl der Zugriffsschicht-Serververbindungen, die Auslastung, die Nginx-Konfiguration und die Anzahl der zulässigen Verbindungen. Überprüfen Sie das Nginx-Fehlerprotokoll, um festzustellen, ob das Fehlerprotokoll „Verbindung vom Peer zurückgesetzt“ oder „Zeitüberschreitung der Verbindung“ vorliegt. Wenn dies der Fall ist, weist dies darauf hin, dass die Anzahl der Nginx-Verbindungen zu hoch und überlastet ist.
3. Es wird empfohlen, ein Testtool zu erstellen, um Herzschlagprüfungen auf dem System durchzuführen und eine Echtzeitüberwachung und Alarmierung der Systemlast, der Anzahl der Verbindungen, der Anzahl der Prozesse und der Verarbeitungszeit durchzuführen.
Für die Nginx-Konfiguration finden Sie hier die offiziellen Dokumente und einen einfachen Link zur Konfigurationseinführung: nginx.org/en/docs/, der sich auf die Verbindungsnummernkonfiguration, Protokollkonfiguration usw. konzentriert. Einige wichtige Konfigurationsreferenz- Beispiele für Nginx sind wie folgt:

worker_processes  16;          //CPU核数
error_log  logs/error.log  info;   //错误日志log
worker_rlimit_nofile 102400;     //打开最大句柄数
events {
    worker_connections  102400;   //允许最大连接数
}
//请求日志记录,关键字段: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. Wie kann das Problem mit der Anforderungszeitüberschreitung gelöst werden?

Jedes Modul muss über ein vollständiges Protokoll verfügen, das die zeitaufwändigen Informationen zu jeder Anfrage in jedem Modul ermitteln kann. Mit dem WeChat-Alarm, der Informationen bereitstellt, lässt sich leicht feststellen, welcher Server das Problem hat. Häufige Gründe sind:

1) Die Maschinenlast ist zu hoch, was den Zeitverbrauch erhöht
2) Maschinenverarbeitungsausnahme, Nachrichtenverlust
3) Maschinenausnahme, für Maschinenverarbeitungsausnahme, Es wird empfohlen, dies so schnell wie möglich zu tun. Bei Maschinenanomalien blockieren Sie bitte die problematische Maschine so schnell wie möglich. Die Belastung der Maschine ist hier zu hoch, einfach eine praktikable Lösung anbieten. Option 1: Leistung optimieren und Kapazität erweitern. Überprüfen Sie die Auslastung (CPU, Speicher, E/A, Netzwerk, Einzelheiten finden Sie im Anhang) und wenden Sie je nach spezifischen Leistungsengpässen unterschiedliche Optimierungsmethoden an. Option 2: Asynchrone Verarbeitung. Wenn die vom WeChat-Server übertragene Nachricht nicht in Echtzeit verarbeitet werden kann, kann die Nachricht zuerst gespeichert und dann erfolgreich an den WeChat-Server zurückgegeben werden. Die Nachricht kann später im Hintergrund verarbeitet werden In der Benutzernachricht können Sie die Schnittstellen-API Kundendienstnachricht aufrufen.

4. Wie kann das Access_token-Speicher- und Nutzungsproblem gelöst werden?

Dritte berichten häufig, dass access_token zu Dienstunterbrechungen führt. Bei der Fehlerbehebung auf der öffentlichen Plattform haben wir festgestellt, dass die meisten Drittanbieter den access_token hektisch aktualisieren, was dazu führt, dass der access_token die Schnittstellenfrequenzgrenze überschreitet und ungültig wird. Hier ist eine einfachere Lösung für die Speicherung und Nutzung von access_token.

1) Der zentrale Steuerungsserver ruft die WeChat-API regelmäßig auf (1 Stunde wird empfohlen), aktualisiert das Access_token und speichert das neue Access_token in MySQL (oder einem anderen Speicher).
2) Andere Worker-Server beziehen das access_token jedes Mal von MySQL (oder einem anderen Speicher), wenn sie die WeChat-API aufrufen, und können es für einen bestimmten Zeitraum im Speicher zwischenspeichern (1 Minute wird empfohlen).

Die öffentliche Plattform stellt sicher, dass nach der Aktualisierung des access_token das alte access_token noch innerhalb von 5 Minuten verwendet werden kann, um sicherzustellen, dass der Dritte beim Aktualisieren nicht versäumt, die WeChat-API aufzurufen das access_token.

【Verwandte Empfehlungen】

1.

Besondere Empfehlung: Version „php Programmer Toolbox“ V0.1 herunterladen2.

Quellcode der WeChat-Kontoplattform herunterladen

3.

WeChat-Voting-Quellcode herunterladen

Das obige ist der detaillierte Inhalt vonAlarm-Fehlerbehebung für die WeChat-Entwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn