Guide de dépannage des alarmes
Description récapitulative
La plate-forme publique WeChat a ouvert l'alarme d'interface au monde extérieur. Lorsque le nombre de tentatives infructueuses du serveur WeChat pour envoyer des messages aux développeurs atteint un seuil prédéterminé, le message d'alarme sera émis. envoyé au groupe d'alarme WeChat désigné (méthode de réglage : plate-forme publique->Centre de développement-exploitation et de maintenance->Alarme d'interface), les développeurs sont invités à prêter activement attention à l'alarme, à résoudre le problème immédiatement et à améliorer la qualité de service du Compte officiel WeChat.
Afin de mieux résoudre les problèmes sur la base des exemples à la fin des informations d'alarme (l'openid et les horodatages sont fournis), les développeurs doivent ajouter des journaux détaillés contenant des informations clés à chaque niveau, telles que la couche d'accès et la couche logique, pour favoriser localiser rapidement les problèmes.
Il existe actuellement 2 types d'alarmes :
1. Les alarmes générales, auxquelles tous les développeurs doivent prêter attention.
2. Alarme de plate-forme tierce de compte officiel. Seuls les développeurs qui postulent pour devenir une plate-forme tierce de compte public sur la plate-forme ouverte WeChat (open.weixin.qq.com) doivent prêter attention à cette alarme.
Voici des exemples d'alarmes spécifiques et des directives de dépannage.
Description du contenu de l'alarme
Description du contenu de l'alarme :
a)appid:公众号appid b)昵称: 公众号昵称 c)时间:所有报警,都会提供首次发生异常的时间。(如首次发生超时的时间,首次发生回应失败的时间) d)内容:错误的具体描述 e)次数:发生失败的次数 f)错误样例:错误样例里注明了一些帮助查找问题的信息。如:首次超时开发者的IP和推送消息类型。如果是回应失败,错误样例还会注明首次回应失败时开发者的回包。
Dans des circonstances normales, grâce à l'adresse IP, à l'heure et au type de message fournis par l'alarme, la cause du problème tiers peut être rapidement localisée.
Exemple d'alarme 1 : alarme d'expiration de délai
Appid: wxxxxxx 昵称: WxNickName 时间: 2014-12-01 20:12:00 内容: 微信服务器向公众号推送消息或事件后,开发者5秒内没有返回 次数: 5分钟 1272次 错误样例: [IP=203.205.140.29][Event=UnSubscribe]
Cette alarme signifie : lorsque le serveur WeChat a transmis l'événement de non-suivi au développeur, celui-ci n'a pas renvoyé le résultat dans les 5 secondes. Cela s'est produit 1272 fois au cours des 5 minutes du 01/12/2014 à 20:12:00 au 01/12/2014 à 20:17:00. Le premier délai d'attente survenu dans les 5 minutes était : 2014-12-01 20:12:00, l'adresse IP du développeur était : 203.205.140.29 et le type d'événement était un événement de non-suivi.
Exemple d'alarme 2 : échec de réponse
Appid: wxxxx 昵称: WxNickName 时间: 2014-12-01 20:12:00 内容: 微信服务器向公众号推送消息或事件后,得到的回应不合法 次数: 5分钟 1320次 错误样例: [Event=Click] [ip=58.248.9.218][response_length=10][response_content=Error 500:]
Cette alarme signifie : lorsque le serveur WeChat envoie un événement de clic de menu personnalisé au développeur, le résultat renvoyé par le développeur est illégal. Cela s'est produit 1320 fois en 5 minutes du 01/12/2014 à 20:12:00 au 01/12/2014 à 20:17:00. La première fois que la réponse a échoué au cours de ces 5 minutes était : 2014-12-01 20:12:00, l'adresse IP du développeur était : 58.248.9.218, le type d'événement était un événement de menu contextuel et la longueur du contenu renvoyé par le le tiers faisait 10 octets, le contenu est "Erreur 500 :".
Exemple d'alarme 3 : Délai de connexion
Appid: wxxxx 昵称: WxNickName 时间: 2015-02-04 20:13:09 内容: 微信服务器连接公众号开发者服务器时发生超时,超时时间为5秒 次数: 5分钟 7289次 错误样例: [IP=180.150.190.135][Msg=Text]
Cette alarme signifie : Lorsque le serveur WeChat envoie des messages texte des fans au développeur, il ne peut pas se connecter à l'adresse du serveur renseignée par le développeur. Cela s'est produit 7 289 fois en 5 minutes, du 04/02/2015 à 20:13:09 au 04/02/2015 à 20:18:00. La première fois qu'un délai d'attente de connexion s'est produit au cours de ces 5 minutes, c'était : 04/02/2015 20 : 13h09, l'adresse IP du développeur est : 180.150.190.135, et le type d'événement est un message poussé par l'utilisateur.
Méthodes de dépannage pour diverses alarmes
1. Échec DNS
Cette erreur signifie que le serveur WeChat n'a pas réussi à résoudre le DNS lors de l'envoi de messages aux développeurs. Si vous rencontrez cette alarme, veuillez confirmer auprès du développeur :
a)填写的url,域名是否有误; b) 域名是否发生变化,如过期,更新等。
S'il ne s'agit pas des 2 problèmes ci-dessus, veuillez contacter la plateforme publique WeChat.
2.Dns timeout
Actuellement, il n'y aura pas d'erreur de ce type.
3. Délai d'expiration de la connexion
Cette erreur est que le serveur WeChat et le serveur du développeur n'ont pas réussi à se connecter en 3S. Le message d'alarme fournira l'heure à laquelle le premier échec de connexion s'est produit et l'adresse IP de la connexion. Si vous rencontrez cette alarme, veuillez confirmer auprès du développeur :
a)该IP是否有误。 b)该IP机器是否过载,连接过多。 c)如果是第三方提供服务器托管,托管商是否有故障。 d)网络运营商是否有故障。
4. Délai d'expiration de la demande
Le serveur WeChat a envoyé des messages ou des événements au serveur du développeur, et le développeur n'est pas revenu dans les 5 secondes. Lorsque la demande expire, le message d'alarme indique l'heure à laquelle le délai d'attente de la demande s'est produit pour la première fois, l'adresse IP du développeur et le type de message. Développeurs, veuillez confirmer :
a)该IP是否有误 b)该IP是否接收到报警消息给出的该消息类型的请求 c)该请求是否处理时间过长
5. Échec de la réponse
Si le développeur ne répond pas au message selon le format du message de réponse dans le wiki, ou si une erreur réseau se produit, un échec de réponse à l'alarme sera signalé. fournissez le premier échec de réponse à la demande. Pour l'heure, l'adresse IP du développeur, le type de message et le contenu du message de réponse, veuillez confirmer avec le développeur :
a)该IP是否有误 b)该IP是否发生网络错误 c)该业务处理逻辑是否没有按照wiki规范回复消息,或是进入了异常逻辑。
6 (blocage automatique)
L'arrière-plan WeChat comptera le nombre d'échecs des développeurs. en temps réel. Lorsqu'un grand nombre d'échecs se produisent lors de l'envoi de messages aux développeurs, le serveur WeChat bloque automatiquement le développeur, cesse d'envoyer des messages dans un délai d'une minute et envoie une alarme au groupe WeChat. Cette alarme est l'alarme de niveau le plus élevé. Lorsque les développeurs reçoivent cette alarme, veuillez gérer l'échec en arrière-plan dès que possible et restaurer les services. En fait, avant de recevoir cette alarme, les développeurs recevront inévitablement des alarmes telles que le délai d'attente de connexion, le délai d'expiration de la demande ou l'échec de la réponse. Les développeurs doivent résoudre ces défauts immédiatement pour éviter d'être bloqués par le serveur WeChat et d'affecter sérieusement les services des comptes publics !
7. L'envoi du message du composant a expiré & 8. L'envoi du message du composant a expiré & 8. L'envoi du message du composant a expiré & 10. L'envoi du message du composant a échoué
Seuls les développeurs de plates-formes tierces disposant de comptes publics recevront les 4 alarmes ci-dessus, les autres comptes publics développeurs Pas besoin de faire attention. Étant donné que la plate-forme tierce de compte public propose davantage de comptes publics, la qualité de service de la plate-forme tierce de compte public nécessite des exigences et des alarmes plus strictes, de sorte que ces quatre événements spéciaux sont signalés séparément. La méthode spécifique de recherche de problèmes est la même que celle des points 4 et 5, je n'entrerai donc pas dans les détails ici. Pour une application spécifique et une mise en œuvre du développement de la plate-forme de compte public tierce, veuillez vous rendre sur la plate-forme ouverte WeChat (open.weixin.qq.com)
FAQ
1 Comment résoudre les problèmes de panne DNS ?
1.Ping测试你们MP上配置的url里的域名,确认是否能够得到正确的IP。如不能得到或者错误,请到你们的域名托管商管理系统上检查配置。 2.如1能够得到正确的IP,又有DNS失败的报警;请使用DNS服务器182.254.116.116 来再测试验证。Linux : dig @182.254.116.116 域名;windows 修改网络配置里的DNS服务器地址,然后再ping 域名。如果得到的IP不正确或者得不到,请联系微信团队。
2. Comment résoudre le problème de délai de connexion ?
1.查看是否网络环境问题。 (1)使用公众平台接口,获取到微信回调服务器的IP,https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=ACCESS_TOKEN, (2)在你们的服务上ping 测试,检查你们服务器到微信回调用服务器的网络质量情况。如有网络问题,请联系你们的服务器提供商解决。 2.查看接入层服务器连接数,负载,nginx的配置,允许的连接个数。查看nginx错误日志是否有“Connection reset by peer”或“Connection timed out”错误日志,如有说明nginx连接数过超负载。 3.建议搭建测试工具,对系统进行心跳检查,对系统负载,连接数,处理数,处理耗时进行实时监控报警。 对于nginx配置,这里提供官方文档和一篇简单配置介绍链接,希望有帮助: http://nginx.org/en/docs/,重点关注连接数配置,日志配置等。nginx的一些重要配置参考例子如下: 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. Comment résoudre le problème de délai d'attente de la demande ?
Chaque module doit avoir un journal complet, qui permet de connaître les informations chronophages de chaque demande dans chaque module. Grâce aux informations fournies par l'alarme WeChat, il est facile de localiser quel serveur a le problème. Les raisons courantes sont :
1)机器负载太高,耗时增加 2)机器处理异常,消息丢失 3)机器异常,对于机器处理异常,建议尽快修复bug,对于机器异常,请尽快屏蔽有问题的机器。这里对机器负载太高,简单提供可行的解决方案。方案一:优化性能,扩容。检查负载情况(cpu,内存,io,网络,详见附录),根据具体性能瓶颈的不同,采取不同的优化方式。方案二:异步处理。如果微信服务器推送的消息来不及实时处理,可将消息先存储,先返回success给微信服务器,后台可后续再处理消息,如果需要回复用户消息,可通过调用客服消息接口API再回复用户消息。
4. Comment résoudre le problème de stockage et d'utilisation du access_token ?
Il existe souvent des rapports de tiers selon lesquels access_token provoque une interruption de service. Lors du dépannage du problème sur la plate-forme publique, il s'avère que la plupart des tiers actualisent frénétiquement access_token, ce qui fait que access_token dépasse la limite de fréquence de l'interface et devient invalide. Voici une solution de stockage et d’utilisation access_token plus simple.
1)中控服务器定时(建议1小时)调用微信api,刷新access_token,将新的access_token 存入mysql(或其他存储), 2)其他工作服务器每次调用微信api时从mysql(或其他存储)获取access_token,并可在内存缓存一段时间(建议1分钟)。
La plateforme publique veillera à ce qu'après l'actualisation du access_token, l'ancien access_token puisse toujours être utilisé dans les 5 minutes pour garantir que le tiers ne manquera pas d'appeler l'API WeChat lors de la mise à jour du access_token.
Annexe
Annexe 1 : Liste des événements du message push WeChat et format de réponse
Pour plus de détails, veuillez consulter : Message push WeChat et description de l'événement
Annexe 2 : Afficher la charge des performances du serveur Outils couramment utilisés
Ce qui suit est une brève introduction aux outils courants permettant de vérifier la charge des performances du serveur. Veuillez vous référer à l'utilisation détaillée des outils séparément.
1. Vérifiez la charge de performances du CPU
a)uptime
est utilisé pour observer la charge globale du serveur. La charge du système fait référence à la durée moyenne de la file d'attente en cours d'exécution (1 minute, 5 minutes, 15 minutes). il y a). Normalement, il doit être inférieur au nombre de processeurs.
b)vmstat
vmstat est l'abréviation de Virtual Meomory Statistics, qui peut surveiller la mémoire virtuelle, les processus et les activités du processeur du système d'exploitation. Il effectue des statistiques sur la situation globale du système. Il est généralement testé à l'aide de la commande vmstat 5 5 (ce qui signifie que les données sont générées toutes les 5 secondes, cinq fois). Un résumé des données sera obtenu qui reflète les conditions réelles du système.
c)top La commande top est l'un des outils de performances Unix/Linux les plus populaires. Les administrateurs système peuvent exécuter la commande top pour surveiller les processus et les performances globales de Linux.
2. Vérifiez la charge de performance de la mémoire
a)free
La commande free sous Linux peut être utilisée pour vérifier l'utilisation actuelle de la mémoire système. Elle affiche également la mémoire physique restante et utilisée et la mémoire d'échange dans le système. comme mémoire partagée et tampons utilisés par le noyau.
3. Visualisez la charge de performance du réseau
b) netstat
Netstat est une commande de console et un outil très utile pour surveiller les réseaux TCP/IP. Il peut afficher la table de routage, les connexions réseau réelles et chaque périphérique d'interface réseau. informations sur l'état. Netstat est utilisé pour afficher des données statistiques liées aux protocoles IP, TCP, UDP et ICMP. Il est généralement utilisé pour vérifier la connexion réseau de chaque port de la machine.
c)sar
sar (rapport d'activité système System Activity Reporter) est actuellement l'un des outils d'analyse des performances système les plus complets sous Linux. Il peut signaler les activités du système sous de nombreux aspects, notamment : la lecture et l'écriture de fichiers, l'utilisation des appels système, E/S disque, efficacité du processeur, utilisation de la mémoire, activité des processus et activités liées à l'IPC, etc. Cet article utilise principalement le système CentOS 6.3 x64 comme exemple pour présenter la commande sar.
4. Vérifiez la charge de performance du disque
a)iostat
La commande iostat sous Linux peut être utilisée pour rapporter les statistiques de l'unité centrale (CPU) et les entrées/sorties de l'ensemble du système, des adaptateurs, des périphériques tty, des disques et Statistiques sur les CD-ROM.
Annexe 3 : guide de configuration et de dépannage de nginx
Méthodes de dépannage pour les problèmes de nginx
Lorsqu'il y a une alarme de délai d'attente direct ou de retour de traitement lent, les méthodes de référence de dépannage du côté de nigix sont les suivantes : 1. Vérifiez l'état du journal de la demande, tail -f logs/access.log, regardez le champ Upstream_status.
200:表示正常; 502/503/504:表示处理慢,或者后端down机;再看upstream_response_time返回的时间是否真的较慢,有没有上百毫秒,或更高的,有则说明是后端服务有问题。 404:表示请求的路径不存在或不对,文件不在了。需要检查你配置在公众平台上的url路径是否正确; 服务器上的文件、程序是否存在。 403:表示无权限访问。 检查一下nginx.conf 是否有特殊的访问配置。 499: 则是客户端的问题,请联系微信团队。 此错误少见。
2. Vérifiez les journaux d'erreurs, tail -f logs/error_log, pour voir s'il existe des journaux d'erreurs tels que l'échec de connect(), la connexion refusée, la réinitialisation de la connexion par un homologue, etc. nginx peut avoir des connexions surchargées, etc. Condition.
(1)查看系统的网络连接数情况确认是否有较大的链接数 # netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 解析: CLOSED //无连接是活动的或正在进行 LISTEN //服务器在等待进入呼叫 SYN_RECV //一个连接请求已经到达,等待确认 SYN_SENT //应用已经开始,打开一个连接 ESTABLISHED //正常数据传输状态/当前并发连接数 FIN_WAIT1 //应用说它已经完成 FIN_WAIT2 //另一边已同意释放 ITMED_WAIT //等待所有分组死掉 CLOSING //两边同时尝试关闭 TIME_WAIT //另一边已初始化一个释放 LAST_ACK //等待所有分组死掉 (2)查看系统的句柄配置情况,ulimit -n ,确认是否过小(小于请求数) (3)worker_rlimit_nofile、worker_connections配置项,是否过小(小于请求数)