ホームページ  >  記事  >  WeChat アプレット  >  WeChat開発のためのアラームのトラブルシューティング

WeChat開発のためのアラームのトラブルシューティング

Y2J
Y2Jオリジナル
2017-05-16 11:07:518266ブラウズ

概要説明

WeChatパブリックプラットフォームが一般に公開されましたインターフェースアラーム、WeChatサーバーによる開発者へのメッセージのプッシュ試行の失敗回数が所定のしきい値に達すると、アラームメッセージが指定されたWeChatに送信されますアラーム グループ (設定方法: パブリック プラットフォーム -> 開発者センター -> インターフェイス アラーム) を使用している場合、開発者はアラームに積極的に注意を払い、障害を直ちに解決し、WeChat 公式アカウントのサービス品質を向上させることが求められます。

アラーム情報の最後にある例 (openid と timestampstamp が提供されます) に基づいて問題をより適切にトラブルシューティングするには、開発者は、アクセス層やロジック層などの各レベルの重要な情報を含む詳細なログを追加する必要があります. 問題を迅速に特定するのに役立ちます。

現在 2 種類のアラームがあります:

1. すべての開発者が注意する必要がある一般的なアラーム。

WeChat開発のためのアラームのトラブルシューティング

2. 公式アカウントのサードパーティ プラットフォームのアラーム。WeChat オープン プラットフォーム (open.weixin.qq.com) でパブリック アカウントのサードパーティ プラットフォームになることを申請する開発者のみが、このアラームに注意する必要があります。

WeChat開発のためのアラームのトラブルシューティング

以下は、特定のアラームとトラブルシューティングのガイドラインの例です。

アラーム内容の説明

アラーム内容の説明:

a) アプリ ID: パブリック アカウントのアプリ ID
b) ニックネーム: パブリック アカウントのニックネーム
c) 時間: すべてのアラームは、異常が最初に発生した時刻を提供します。 (最初のタイムアウトが発生した時刻、最初の応答失敗が発生した時刻など)
d) 内容: エラーの具体的な説明
e) 回数: 失敗した回数
f) エラーサンプル: いくつかのヘルプはエラー問題情報に記載されています。例: 初めてタイムアウトした開発者の IP とプッシュ メッセージのタイプ。応答が失敗した場合、エラー サンプルには、初めて応答が失敗したときの開発者の応答も示されます。

通常の状況では、アラームによって提供される IP、時刻、メッセージ タイプを通じて、サードパーティの問題の原因を迅速に特定できます。

アラームの例 1: タイムアウトアラーム

Appid: wxxxxxx
ニックネーム: WxNickName
時刻: 2014-12-01 20:12:00
内容: WeChat サーバーがメッセージまたはイベントを公式アカウントにプッシュした後、開発者 5 数秒以内に返信がありません
数値: 5 分間で 1272 回
エラー例: [IP=203.205.140.29][Event=UnSubscribe]

このアラームの意味は次のとおりです: WeChat サーバーが開発者にフォロー解除イベントをプッシュしたとき、開発者 5 秒以内に結果は返されませんでした。 2014-12-01 20:12:00 から 2014-12-01 20:17:00 までの 5 分間に 1272 回発生しました。 5 分以内に発生した最初のタイムアウトは 2014-12-01 20:12:00、開発者の IP は 203.205.140.29、イベント タイプはフォロー解除イベントでした。

アラーム例 2: 応答失敗

Appid: wxxxx
ニックネーム: WxNickName
時刻: 2014-12-01 20:12:00
内容: WeChat サーバーがメッセージまたはイベントを公式アカウントにプッシュした後、受信した応答は正当ではありませんでした
回数: 5 分間に 1320 回
エラーの例: [Event=Click] [ip=58.248.9.218][response_length=10][response_content=Error 500:]

このアラームは次のことを意味します: WeChat サーバーが開発チームにリクエストを送信しました。開発者がカスタム メニュークリック イベントをプッシュすると、開発者から返される結果は不正です。 2014-12-01 20:12:00 から 2014-12-01 20:17:00 までの 5 分間に 1320 回発生しました。この 5 分間で最初に応答が失敗したのは 2014-12-01 20:12:00、開発者の IP は 58.248.9.218、イベント タイプはクリック メニュー イベント、およびサードパーティは 10 バイト、内容は「エラー 500:」です。

アラーム例 3: 接続タイムアウト

Appid: wxxxx
Nickname: WxNickName
Time: 2015-02-04 20:13:09
内容: WeChat サーバーがパブリック アカウント開発者サーバーに接続するときにタイムアウトが発生しました。タイムアウト期間は 5 秒です
数値: 5 分間に 7289 回
エラー例: [IP=180.150.190.135][Msg=Text]

このアラームの意味: ファンからのテキスト メッセージをプッシュするときに WeChat サーバーが接続できない開発者が入力したサーバーアドレスにアクセスします。 2015-02-04 20:13:09 から 2015-02-04 20:18:00 までの 5 分間に 7,289 回発生しました。この 5 分間に初めて接続タイムアウトが発生したのは 2015-02-04 20: 13:09、開発者の IP は 180.150.190.135 で、イベント タイプはユーザーによってプッシュされたメッセージです。

さまざまなアラームのトラブルシューティング方法

1. DNS エラー

このエラーは、開発者にメッセージをプッシュするときに WeChat サーバーが DNS を解決できなかったことを意味します。このアラームが発生した場合は、以下を確認してください:

a) 入力された URL とドメイン名が正しいかどうか
b) ドメイン名が変更されているかどうか (有効期限切れ、更新など)。

上記2つの質問に当てはまらない場合は、WeChatパブリックプラットフォームにお問い合わせください。

2.DNSタイムアウト

現時点ではそのようなエラーは発生しません。

3. 接続タイムアウト

このエラーは、WeChat サーバーと開発者サーバーが 3S 内で正常に接続できなかったことを意味します。アラーム メッセージには、最初の接続障害が発生した時刻と接続の IP アドレスが表示されます。このアラームが発生した場合は、以下を確認してください:

a) IP が間違っているかどうか。
b) IP マシンが過負荷で接続数が多すぎるかどうか。
c) サードパーティがサーバーホスティングを提供している場合、ホスティングプロバイダーに問題はありますか?
d) ネットワークオペレーターに欠陥があるかどうか。

4. リクエストのタイムアウト

WeChat サーバーはメッセージまたはイベントを開発者サーバーにプッシュしますが、開発者は 5 秒以内に戻りません。リクエストがタイムアウトすると、アラーム メッセージにはリクエストのタイムアウトが初めて発生した時刻、開発者 IP、およびメッセージ タイプが示されます。開発者は以下を確認してください:

a) IP が間違っているかどうか
b) IP がアラーム メッセージで指定されたメッセージ タイプのリクエストを受信して​​いるかどうか
c) リクエストの処理に時間がかかりすぎるかどうか

5.失敗

開発者が Wiki の応答メッセージ形式に従ってメッセージに応答しなかった場合、またはネットワーク エラーが発生した場合、アラーム応答の失敗が報告されます。アラーム メッセージには、リクエストの応答が失敗した時間が示されます。初回は、開発者のIP、メッセージの種類と応答 メッセージの内容は、開発者にご確認ください:

a) IPが間違っているかどうか
b) IPでネットワークエラーが発生しているかどうか
c) ビジネスかどうか処理ロジックが Wiki の仕様に従ってメッセージに応答しないか、異常なロジックに入ります。

6.MarkFail (自動ブロック)

WeChat の背景は、開発者の失敗の数をリアルタイムでカウントします。開発者へのメッセージのプッシュで多数の失敗が発生した場合、WeChat サーバーは自動的に開発者をブロックし、1 分以内にメッセージのプッシュを停止し、WeChat グループにアラームを送信します。このアラームは最高レベルのアラームです。開発者がこのアラームを受け取った場合は、できるだけ早くバックグラウンド障害に対処し、サービスを復元してください。実際、このアラームを受信する前に、開発者は必然的に接続タイムアウト、リクエスト タイムアウト、応答失敗などのアラームを受信し、WeChat サーバーによってブロックされ、パブリック アカウント サービスに深刻な影響を与えることを避けるために、これらの障害をすぐに解決する必要があります。

7.component_verify_ticket のプッシュがタイムアウトしました & 8.component_verify_ticket のプッシュが失敗しました & 9.コンポーネント メッセージのプッシュがタイムアウトしました & 10.コンポーネント メッセージのプッシュに失敗しました

上記 4 つのアラームを受け取るのは、パブリック アカウントを持つサードパーティ プラットフォーム開発者のみです。他のパブリック アカウントは、開発者は注意する必要はありません。パブリック アカウントのサードパーティ プラットフォームはより多くのパブリック アカウントをサポートするため、パブリック アカウントのサードパーティ プラットフォームのサービス品質にはより厳しい要件と警告が必要となるため、これら 4 つの特別なイベントは個別にレポートされます。具体的な問題点の発見方法は4、5と同様ですので、ここでは詳しく説明しません。サードパーティのパブリック アカウント プラットフォームの特定のアプリケーションおよび開発実装については、WeChat オープン プラットフォーム (open.weixin.qq.com) を参照してください。

よくある質問

1 DNS 障害のトラブルシューティング方法

1. MP に設定されている URL のドメイン名を ping テストし、正しい IP を取得できるかどうかを確認します。取得できない場合や間違っている場合は、ドメイン名ホスティングプロバイダーの管理システムの設定を確認してください。
2. 正しい IP を取得できても、DNS 障害のアラームが発生した場合は、DNS サーバー 182.254.116.116 を使用して再度テストして確認してください。 Linux : @182.254.116.116 ドメイン名を探索し、Windows がネットワーク構成内の DNS サーバー アドレスを変更し、ドメイン名を ping します。取得した IP が間違っている場合、または取得できない場合は、WeChat チームにお問い合わせください。

2. 接続タイムアウトの問題を解決するにはどうすればよいですか?

1. ネットワーク環境に問題がないか確認してください。
(1) パブリック プラットフォーム インターフェイスを使用して、WeChat コールバック サーバーの IP、api.weixin.qq.com/cgi-bin/getcallbackip?access_token=ACCESS_TOKEN を取得します。
(2) サービスで ping テストを実行して、ユーザーを確認します。サーバーから WeChat コールバック サーバーまでのネットワーク品質。ネットワークに問題がある場合は、サーバープロバイダーに問い合わせて解決してください。

2. アクセス層サーバーの接続数、負荷、nginx 構成、および許可される接続数を確認します。 nginx エラー ログを確認して、「接続がピアによってリセットされました」または「接続がタイムアウトしました」エラー ログがあるかどうかを確認します。存在する場合は、nginx 接続の数が多すぎて過負荷になっていることを示します。
3. システムのハートビートチェックを実行し、システム負荷、接続数、プロセス数、処理時間をリアルタイムで監視および警告するためのテストツールを構築することをお勧めします。
nginx の設定については、接続数の設定、ログの設定などに焦点を当てた公式ドキュメントと簡単な設定の紹介リンクが参考になると幸いです: 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. リクエストのタイムアウトの問題を解決するにはどうすればよいですか?

各モジュールには、各モジュールの各リクエストの時間のかかる情報を見つけることができる完全なログが必要です。WeChat アラームによって提供される情報を使用すると、どのサーバーに問題があるかを簡単に特定できます。一般的な理由は次のとおりです:

1) マシンの負荷が高すぎるため、時間がかかります。
2) マシンの処理例外とメッセージの損失
3) マシンの処理例外については、できるだけ早くバグを修正することをお勧めします。マシンの例外については、できるだけ早く問題のあるマシンをブロックしてください。ここではマシンの負荷が高すぎます。実行可能な解決策を提供してください。オプション 1: パフォーマンスを最適化し、容量を拡張します。負荷 (CPU、メモリ、IO、ネットワーク、詳細については付録を参照) を確認し、特定のパフォーマンスのボトルネックに応じてさまざまな最適化方法を採用します。オプション 2: 非同期処理。 WeChat サーバーによってプッシュされたメッセージをリアルタイムで処理できない場合は、メッセージを最初に保存し、返信する必要がある場合は、メッセージを後でバックグラウンドで処理することができます。ユーザー メッセージの場合は、カスタマー サービス メッセージ API を呼び出してユーザー メッセージに返信できます。

4. access_token のストレージと使用法の問題を解決するにはどうすればよいですか?

access_token がサービス中断を引き起こすというサードパーティからの報告がよくありますが、パブリック プラットフォームでこの問題をトラブルシューティングしていると、ほとんどのサードパーティが access_token を必死に更新しており、その結果、インターフェイスの頻度制限を超えて access_token が無効になっていることがわかりました。 ここでは、より単純な access_token のストレージと使用方法のソリューションを示します。

1) 中央制御サーバーは WeChat API を定期的に呼び出し (1 時間を推奨)、access_token を更新し、新しい access_token を mysql (または他のストレージ) に保存します。
2) 他の稼働サーバーが WeChat API を呼び出します。毎回 mysql (または他のストレージ) からアクセスして access_token を取得し、一定期間 (1 分を推奨) メモリにキャッシュします。

パブリック プラットフォームは、access_token が更新された後も 5 分以内は古い access_token が引き続き使用できることを保証し、access_token の更新時にサードパーティが WeChat API の呼び出しに失敗しないようにします。

【関連推奨事項】

1.

特別な推奨事項: 「php Programmer Toolbox」V0.1バージョンのダウンロード2.

WeChatパブリックアカウントプラットフォームのソースコードのダウンロード

3.コードのダウンロード

以上がWeChat開発のためのアラームのトラブルシューティングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。