没有不值得去解决的问题,也没有不值得去学习的技术!

微信第三方平台 component_verify_ticket 超时提醒的排查与解决

在告警群中未再接收到告警通知。其最后一条告警通知时间 2020-12-04 15:54:56。由此确定,覆盖现网全网发布与否才是告警的根本原因。

1、在微信第三方平台中,系统异常提醒通过对应的微信群发送。每个平台对应一个通知群,加入后即可接收相关提醒,如图1。

微信第三方平台通过对应通知群发送系统异常提醒。
图1

2、在通知群中频繁收到同一类超时提醒。整理时间后发现,提醒大致每 40 分钟出现一次,例如 11:25、12:15、12:55、13:35、14:15,如图2。

通知群中频繁出现同一类超时提醒,并呈现较固定的时间间隔。
图2
Plaintext
Appid: 
昵称: 
时间: 2020-11-27 13:35:05
内容: 微信服务器向公众号服务开发者推送component_verify_ticket时,开发者5秒内没有返回
次数: 30分钟 9次
报警排查指引,请见: https://mmbizurl.cn/s/MpkaZb8yg

3、首先参考微信开放平台关于 component_verify_ticket 的官方说明:https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/api/component_verify_ticket.html 。

4、接着检查当前项目中接收 component_verify_ticket 的实现。

PHP
    /**
     * Component Verify Ticket 协议接收
     */
    public function actionTicket()
    {
        $bathPath = Yii::$app->getBasePath();
        try {
            $requestRowBody = Yii::$app->getRequest()->getRawBody();
            $requestQueryParams = Yii::$app->getRequest()->getQueryParams();
            @file_put_contents($bathPath . '/runtime/requestRowBody.txt', var_export($requestRowBody, true), LOCK_EX);
            @file_put_contents($bathPath . '/runtime/requestQueryParams.txt', var_export($requestQueryParams, true), LOCK_EX);


            $appId = Yii::$app->params['wxOpen']['component']['appId'];
            $appSecret = Yii::$app->params['wxOpen']['component']['appSecret'];
            $token = Yii::$app->params['wxOpen']['component']['token'];
            $encodingAesKey = Yii::$app->params['wxOpen']['component']['symmetricKey'];

            $msg = '';
            $pc = new WXBizMsgCrypt($token, $encodingAesKey, $appId);
            // 解密 xml 数据
            $errCode = $pc->decryptMsg($requestQueryParams['msg_signature'], $requestQueryParams['timestamp'], $requestQueryParams['nonce'], $requestRowBody, $msg);
            @file_put_contents($bathPath . '/runtime/decrypt_result.txt', $errCode, LOCK_EX);
            // 解密成功
            if ($errCode == 0) {
                $ticketData = $this->xmlToArray($msg);
                if (isset($ticketData['ComponentVerifyTicket'])) {
                    $redisCommandkeyPrefix = Yii::$app->params['redisCommand']['keyPrefix'];
                    $componentVerifyTicketKey = $redisCommandkeyPrefix . $ticketData['AppId'] . ':component_verify_ticket';
                    $this->redis->set($componentVerifyTicketKey, $ticketData['ComponentVerifyTicket']);
                    // 获取第三方平台component_access_token
                    $this->getComponentAccessToken($appId, $appSecret);
                }
            }
            @file_put_contents($bathPath . '/runtime/msgXml.txt', $msg, LOCK_EX);
        } catch (\Throwable $th) {
            @file_put_contents($bathPath . '/runtime/actionTicketError.txt', $th->getMessage(), LOCK_EX);
        }
        exit('success');
    }

5、先查看现有日志文件的创建时间,发现相关文件均在 14:35 左右生成,如图3。

查看现有日志文件的创建时间。
图3
Plaintext
[root@b21d3b4237a2 runtime]# ls -lt
total 28
drwxrwxr-x 2 nginx nginx 4096 Nov 27 14:35 debug
-rw-r--r-- 1 nginx nginx  305 Nov 27 14:35 msgXml.txt
-rw-r--r-- 1 nginx nginx    1 Nov 27 14:35 decrypt_result.txt
-rw-r--r-- 1 nginx nginx  219 Nov 27 14:35 requestQueryParams.txt
-rw-r--r-- 1 nginx nginx  573 Nov 27 14:35 requestRowBody.txt
-rw-r--r-- 1 nginx nginx   18 Nov 26 17:24 actionReceive.txt
drwxrwxr-x 5 nginx nginx 4096 Nov 26 15:15 cache
[root@b21d3b4237a2 runtime]#

6、为了确认耗时位置,随后在多个关键环节记录服务器时间,对整个处理过程进行逐段排查。

PHP
    public function init()
    {
        file_put_contents(Yii::getAlias('@runtime') . '/wx-msg-event-ticket-' . Date('Y-m-d-H-i-s') . '-' . microtime(true) . '-' . mt_rand()  . '.txt', print_r('1', true), FILE_APPEND | LOCK_EX);
        parent::init();
        require __DIR__ . '/../vendor/wx_biz_msg_crypt/wxBizMsgCrypt.php';
        $this->redis = Yii::$app->redis;
        file_put_contents(Yii::getAlias('@runtime') . '/wx-msg-event-ticket-' . Date('Y-m-d-H-i-s') . '-' . microtime(true) . '-' . mt_rand()  . '.txt', print_r('1', true), FILE_APPEND | LOCK_EX);

    }

    /**
     * Component Verify Ticket 协议接收
     */
    public function actionTicket()
    {
        file_put_contents(Yii::getAlias('@runtime') . '/wx-msg-event-ticket-' . Date('Y-m-d-H-i-s') . '-' . microtime(true) . '-' . mt_rand()  . '.txt', print_r('1', true), FILE_APPEND | LOCK_EX);
        $bathPath = Yii::$app->getBasePath();
        try {
            $requestRowBody = Yii::$app->getRequest()->getRawBody();
            $requestQueryParams = Yii::$app->getRequest()->getQueryParams();
            @file_put_contents($bathPath . '/runtime/requestRowBody.txt', var_export($requestRowBody, true), LOCK_EX);
            @file_put_contents($bathPath . '/runtime/requestQueryParams.txt', var_export($requestQueryParams, true), LOCK_EX);


            $appId = Yii::$app->params['wxOpen']['component']['appId'];
            $appSecret = Yii::$app->params['wxOpen']['component']['appSecret'];
            $token = Yii::$app->params['wxOpen']['component']['token'];
            $encodingAesKey = Yii::$app->params['wxOpen']['component']['symmetricKey'];

            $msg = '';
            $pc = new WXBizMsgCrypt($token, $encodingAesKey, $appId);
            // 解密 xml 数据
            $errCode = $pc->decryptMsg($requestQueryParams['msg_signature'], $requestQueryParams['timestamp'], $requestQueryParams['nonce'], $requestRowBody, $msg);
            @file_put_contents($bathPath . '/runtime/decrypt_result.txt', $errCode, LOCK_EX);
            // 解密成功
            if ($errCode == 0) {
                $ticketData = $this->xmlToArray($msg);
                if (isset($ticketData['ComponentVerifyTicket'])) {
                    $redisCommandkeyPrefix = Yii::$app->params['redisCommand']['keyPrefix'];
                    $componentVerifyTicketKey = $redisCommandkeyPrefix . $ticketData['AppId'] . ':component_verify_ticket';
                    $this->redis->set($componentVerifyTicketKey, $ticketData['ComponentVerifyTicket']);
                    // 获取第三方平台component_access_token
                    $this->getComponentAccessToken($appId, $appSecret);
                }
            }
            @file_put_contents($bathPath . '/runtime/msgXml.txt', $msg, LOCK_EX);
        } catch (\Throwable $th) {
            @file_put_contents($bathPath . '/runtime/actionTicketError.txt', $th->getMessage(), LOCK_EX);
        }
        file_put_contents(Yii::getAlias('@runtime') . '/wx-msg-event-ticket-' . Date('Y-m-d-H-i-s') . '-' . microtime(true) . '-' . mt_rand()  . '.txt', print_r('1', true), FILE_APPEND | LOCK_EX);
        exit('success');
    }


7、2020-11-27 14:55:05 再次出现同类提醒。检查日志文件后发现,它们也都在 14:55:05 生成;两个时间戳相差约 3.25 毫秒。于是继续观察下一次出现时的日志时间,如图4。

再次出现同类提醒后,对比日志文件的生成时间。
图4
Plaintext
[root@b21d3b4237a2 runtime]# ls -lt
total 44
drwxrwxr-x 2 nginx nginx 4096 Nov 27 14:55 debug
-rw-r--r-- 1 nginx nginx  305 Nov 27 14:55 msgXml.txt
-rw-r--r-- 1 nginx nginx    1 Nov 27 14:55 wx-msg-event-ticket-2020-11-27-14-55-05-1606460105.8643-1726079413.txt
-rw-r--r-- 1 nginx nginx    1 Nov 27 14:55 decrypt_result.txt
-rw-r--r-- 1 nginx nginx  220 Nov 27 14:55 requestQueryParams.txt
-rw-r--r-- 1 nginx nginx  573 Nov 27 14:55 requestRowBody.txt
-rw-r--r-- 1 nginx nginx    1 Nov 27 14:55 wx-msg-event-ticket-2020-11-27-14-55-05-1606460105.8354-582349057.txt
-rw-r--r-- 1 nginx nginx    1 Nov 27 14:55 wx-msg-event-ticket-2020-11-27-14-55-05-1606460105.8339-222161532.txt
-rw-r--r-- 1 nginx nginx    1 Nov 27 14:55 wx-msg-event-ticket-2020-11-27-14-55-05-1606460105.8318-1104390728.txt
-rw-r--r-- 1 nginx nginx   18 Nov 26 17:24 actionReceive.txt
drwxrwxr-x 5 nginx nginx 4096 Nov 26 15:15 cache
[root@b21d3b4237a2 runtime]#

8、2020-11-27 15:35:14 再次出现同类提醒。对应日志在 15:35:14~15:35:15 生成,两个时间戳相差约 2.74 毫秒,仍未超过 5 秒,如图5。

对比提醒出现时的日志时间,确认处理耗时未超过 5 秒。
图5
Plaintext
[root@b21d3b4237a2 runtime]# ls -lt
total 40
drwxrwxr-x 2 nginx nginx 4096 Nov 27 15:35 debug
-rw-r--r-- 1 nginx nginx  305 Nov 27 15:35 msgXml.txt
-rw-r--r-- 1 nginx nginx    1 Nov 27 15:35 wx-msg-event-ticket-2020-11-27-15-35-15-1606462515.0053-1335632384.txt
-rw-r--r-- 1 nginx nginx    1 Nov 27 15:35 decrypt_result.txt
-rw-r--r-- 1 nginx nginx  219 Nov 27 15:35 requestQueryParams.txt
-rw-r--r-- 1 nginx nginx  573 Nov 27 15:35 requestRowBody.txt
-rw-r--r-- 1 nginx nginx    1 Nov 27 15:35 wx-msg-event-ticket-2020-11-27-15-35-14-1606462514.9782-618938486.txt
drwxrwxr-x 5 nginx nginx 4096 Nov 27 15:35 cache
-rw-r--r-- 1 nginx nginx    1 Nov 27 15:35 wx-msg-event-ticket-2020-11-27-15-35-14-1606462514.9777-1594643539.txt
-rw-r--r-- 1 nginx nginx    1 Nov 27 15:35 wx-msg-event-ticket-2020-11-27-15-35-14-1606462514.9779-342752895.txt

9、另一次检查中,相关日志在 16:15:08~16:15:09 生成,两组时间戳差分别约 2.55 毫秒和 2.10 毫秒,也未超过 5 秒。不过当时连续出现了 2 次请求,共生成 8 个带时间戳的日志文件,因此怀疑存在一次重复请求。

Plaintext
[root@b21d3b4237a2 runtime]# ls -lt
total 56
drwxrwxr-x 2 nginx nginx 4096 Nov 27 16:15 debug
-rw-r--r-- 1 nginx nginx  305 Nov 27 16:15 msgXml.txt
-rw-r--r-- 1 nginx nginx    1 Nov 27 16:15 wx-msg-event-ticket-2020-11-27-16-15-09-1606464909.8787-571586970.txt
-rw-r--r-- 1 nginx nginx    1 Nov 27 16:15 decrypt_result.txt
-rw-r--r-- 1 nginx nginx  220 Nov 27 16:15 requestQueryParams.txt
-rw-r--r-- 1 nginx nginx  573 Nov 27 16:15 requestRowBody.txt
-rw-r--r-- 1 nginx nginx    1 Nov 27 16:15 wx-msg-event-ticket-2020-11-27-16-15-09-1606464909.858-528516846.txt
-rw-r--r-- 1 nginx nginx    1 Nov 27 16:15 wx-msg-event-ticket-2020-11-27-16-15-09-1606464909.8575-1518393836.txt
-rw-r--r-- 1 nginx nginx    1 Nov 27 16:15 wx-msg-event-ticket-2020-11-27-16-15-09-1606464909.8577-2077551670.txt
-rw-r--r-- 1 nginx nginx    1 Nov 27 16:15 wx-msg-event-ticket-2020-11-27-16-15-08-1606464908.3973-362685582.txt
-rw-r--r-- 1 nginx nginx    1 Nov 27 16:15 wx-msg-event-ticket-2020-11-27-16-15-08-1606464908.3713-1831294750.txt
-rw-r--r-- 1 nginx nginx    1 Nov 27 16:15 wx-msg-event-ticket-2020-11-27-16-15-08-1606464908.3715-929485623.txt
-rw-r--r-- 1 nginx nginx    1 Nov 27 16:15 wx-msg-event-ticket-2020-11-27-16-15-08-1606464908.3718-843415591.txt
drwxrwxr-x 5 nginx nginx 4096 Nov 27 16:15 cache

10、继续查看对应的 Nginx 日志,可以确认该时段共收到 2 次请求,如图6。

查看对应的 Nginx 日志,确认该时段存在 2 次请求。
图6
JSON

{
  "request": {
    "headers": {
      "referer": "-",
      "host": "auth.channel-pub.wjdev.chinamcloud.cn",
      "x-request-id": "-",
      "x-forwarded-for": "81.69.19.7, 10.42.0.1",
      "user-agent": "Mozilla/4.0"
    },
    "method": "POST",
    "uri": "/wx-msg-event/ticket?signature=476b7eacb0c523eaa0e8db5f7cca491a46e572fd×tamp=1606464908&nonce=1528041077&encrypt_type=aes&msg_signature=ce607cecc737d31ec1f4edeb853e00539f492732",
    "url": "http://auth.channel-pub.wjdev.chinamcloud.cn/wx-msg-event/ticket?signature=476b7eacb0c523eaa0e8db5f7cca491a46e572fd×tamp=1606464908&nonce=1528041077&encrypt_type=aes&msg_signature=ce607cecc737d31ec1f4edeb853e00539f492732",
    "@timestamp": "2020-11-27T16:15:08+08:00",
    "upstreamaddr": "127.0.0.1:9000",
    "response": {
      "responsetime": "0.033",
      "upstream_response_time": "0.032"
    },
    "size": "17",
    "status": "200"
  },
  "module_name": "default-app"
}
{
  "request": {
    "headers": {
      "referer": "-",
      "host": "auth.channel-pub.wjdev.chinamcloud.cn",
      "x-request-id": "-",
      "x-forwarded-for": "81.69.19.7, 10.42.0.1",
      "user-agent": "Mozilla/4.0"
    },
    "method": "POST",
    "uri": "/wx-msg-event/ticket?signature=81e6b3061d378d78cdfcd9422a1fe42a0f53801d×tamp=1606464909&nonce=1530227115&encrypt_type=aes&msg_signature=0e9be2e04981d0a6895f39a83a4dd956d1ba3337",
    "url": "http://auth.channel-pub.wjdev.chinamcloud.cn/wx-msg-event/ticket?signature=81e6b3061d378d78cdfcd9422a1fe42a0f53801d×tamp=1606464909&nonce=1530227115&encrypt_type=aes&msg_signature=0e9be2e04981d0a6895f39a83a4dd956d1ba3337",
    "@timestamp": "2020-11-27T16:15:09+08:00",
    "upstreamaddr": "127.0.0.1:9000",
    "response": {
      "responsetime": "0.026",
      "upstream_response_time": "0.026"
    },
    "size": "17",
    "status": "200"
  },
  "module_name": "default-app"
}

11、结合现象,初步将排查重点放到第三方平台访问凭据的获取过程,并在该过程前后增加时间记录。

PHP
    file_put_contents(Yii::getAlias('@runtime') . '/wx-msg-event-ticket-' . Date('Y-m-d-H-i-s') . '-' . microtime(true) . '-' . mt_rand()  . '.txt', print_r('1', true), FILE_APPEND | LOCK_EX);
    // 获取第三方平台component_access_token
    $this->getComponentAccessToken($appId, $appSecret);
    file_put_contents(Yii::getAlias('@runtime') . '/wx-msg-event-ticket-' . Date('Y-m-d-H-i-s') . '-' . microtime(true) . '-' . mt_rand()  . '.txt', print_r('1', true), FILE_APPEND | LOCK_EX);

12、查看新增日志后,发现少量请求的耗时相对更长,相关时间差约为 25.26、41.48、44.26 和 39.62 毫秒,且大约每 2 小时出现一次,说明这一阶段存在周期性的耗时波动。

Plaintext
[root@c0f75d7d937d runtime]# ls -lt
total 3388
drwxrwxr-x 2 nginx nginx 4096 Nov 30 14:05 debug
-rw-r--r-- 1 nginx nginx  305 Nov 30 14:05 msgXml.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 14:05 wx-msg-event-ticket-2020-11-30-14-05-10-1606716310.4137-1873366123.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 14:05 wx-msg-event-ticket-2020-11-30-14-05-10-1606716310.4058-1868469814.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 14:05 decrypt_result.txt
-rw-r--r-- 1 nginx nginx  219 Nov 30 14:05 requestQueryParams.txt
-rw-r--r-- 1 nginx nginx  573 Nov 30 14:05 requestRowBody.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 13:54 wx-msg-event-ticket-2020-11-30-13-54-53-1606715693.814-1286907546.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 13:54 wx-msg-event-ticket-2020-11-30-13-54-53-1606715693.807-1908386416.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 13:45 wx-msg-event-ticket-2020-11-30-13-45-39-1606715139.1002-262145071.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 13:45 wx-msg-event-ticket-2020-11-30-13-45-39-1606715139.0916-1941649228.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 13:35 wx-msg-event-ticket-2020-11-30-13-35-37-1606714537.8674-1076208919.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 13:35 wx-msg-event-ticket-2020-11-30-13-35-37-1606714537.8591-1789739322.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 13:24 wx-msg-event-ticket-2020-11-30-13-24-50-1606713890.7333-836935361.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 13:24 wx-msg-event-ticket-2020-11-30-13-24-50-1606713890.7254-1288654422.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 13:14 wx-msg-event-ticket-2020-11-30-13-14-53-1606713293.5465-595171024.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 13:14 wx-msg-event-ticket-2020-11-30-13-14-53-1606713293.5379-1890465225.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 13:05 wx-msg-event-ticket-2020-11-30-13-05-03-1606712703.5868-175987929.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 13:05 wx-msg-event-ticket-2020-11-30-13-05-03-1606712703.5789-499523977.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 12:54 wx-msg-event-ticket-2020-11-30-12-54-53-1606712093.5456-517560488.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 12:54 wx-msg-event-ticket-2020-11-30-12-54-53-1606712093.539-1514830621.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 12:44 wx-msg-event-ticket-2020-11-30-12-44-57-1606711497.9951-952342390.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 12:44 wx-msg-event-ticket-2020-11-30-12-44-57-1606711497.9872-1156452406.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 12:35 wx-msg-event-ticket-2020-11-30-12-35-13-1606710913.4813-704492469.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 12:35 wx-msg-event-ticket-2020-11-30-12-35-13-1606710913.4746-1170946877.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 12:25 wx-msg-event-ticket-2020-11-30-12-25-06-1606710306.5482-636662964.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 12:25 wx-msg-event-ticket-2020-11-30-12-25-06-1606710306.2956-1437541091.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 12:15 wx-msg-event-ticket-2020-11-30-12-15-17-1606709717.0774-1991485435.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 12:15 wx-msg-event-ticket-2020-11-30-12-15-17-1606709717.0692-1936841676.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 12:05 wx-msg-event-ticket-2020-11-30-12-05-31-1606709131.8725-994420621.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 12:05 wx-msg-event-ticket-2020-11-30-12-05-31-1606709131.8648-51752480.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 11:56 wx-msg-event-ticket-2020-11-30-11-56-31-1606708591.3933-287466388.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 11:56 wx-msg-event-ticket-2020-11-30-11-56-31-1606708591.3842-1789563881.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 11:45 wx-msg-event-ticket-2020-11-30-11-45-57-1606707957.6617-247752670.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 11:45 wx-msg-event-ticket-2020-11-30-11-45-57-1606707957.6533-827700557.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 11:35 wx-msg-event-ticket-2020-11-30-11-35-06-1606707306.0361-354498841.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 11:35 wx-msg-event-ticket-2020-11-30-11-35-06-1606707306.0294-534747288.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 11:25 wx-msg-event-ticket-2020-11-30-11-25-09-1606706709.9365-510187117.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 11:25 wx-msg-event-ticket-2020-11-30-11-25-09-1606706709.9275-1228189882.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 11:15 wx-msg-event-ticket-2020-11-30-11-15-15-1606706115.7896-694594424.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 11:15 wx-msg-event-ticket-2020-11-30-11-15-15-1606706115.7828-1133630583.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 11:05 wx-msg-event-ticket-2020-11-30-11-05-17-1606705517.4531-511638313.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 11:05 wx-msg-event-ticket-2020-11-30-11-05-17-1606705517.4452-62701110.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 10:55 wx-msg-event-ticket-2020-11-30-10-55-08-1606704908.0751-608617371.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 10:55 wx-msg-event-ticket-2020-11-30-10-55-08-1606704908.0672-1990040532.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 10:45 wx-msg-event-ticket-2020-11-30-10-45-10-1606704310.5205-1564843147.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 10:45 wx-msg-event-ticket-2020-11-30-10-45-10-1606704310.5096-904128001.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 10:35 wx-msg-event-ticket-2020-11-30-10-35-13-1606703713.2687-1794797087.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 10:35 wx-msg-event-ticket-2020-11-30-10-35-13-1606703713.2617-574660229.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 10:25 wx-msg-event-ticket-2020-11-30-10-25-07-1606703107.1274-1022925845.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 10:25 wx-msg-event-ticket-2020-11-30-10-25-06-1606703106.7126-570303079.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 10:15 wx-msg-event-ticket-2020-11-30-10-15-07-1606702507.5368-1891845424.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 10:15 wx-msg-event-ticket-2020-11-30-10-15-07-1606702507.5284-1189045409.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 10:05 wx-msg-event-ticket-2020-11-30-10-05-26-1606701926.1164-1301829973.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 10:05 wx-msg-event-ticket-2020-11-30-10-05-26-1606701926.1098-19999799.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 09:54 wx-msg-event-ticket-2020-11-30-09-54-59-1606701299.9273-1892722460.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 09:54 wx-msg-event-ticket-2020-11-30-09-54-59-1606701299.9206-744289104.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 09:44 wx-msg-event-ticket-2020-11-30-09-44-58-1606700698.5289-840958322.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 09:44 wx-msg-event-ticket-2020-11-30-09-44-58-1606700698.5214-19799683.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 09:35 wx-msg-event-ticket-2020-11-30-09-35-04-1606700104.5574-1357122254.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 09:35 wx-msg-event-ticket-2020-11-30-09-35-04-1606700104.5494-926833651.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 09:24 wx-msg-event-ticket-2020-11-30-09-24-59-1606699499.5724-956013272.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 09:24 wx-msg-event-ticket-2020-11-30-09-24-59-1606699499.5646-98047242.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 09:15 wx-msg-event-ticket-2020-11-30-09-15-00-1606698900.0026-1274517751.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 09:14 wx-msg-event-ticket-2020-11-30-09-14-59-1606698899.9952-865263368.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 09:05 wx-msg-event-ticket-2020-11-30-09-05-23-1606698323.3765-803667820.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 09:05 wx-msg-event-ticket-2020-11-30-09-05-23-1606698323.3688-847811911.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 08:54 wx-msg-event-ticket-2020-11-30-08-54-51-1606697691.0131-1616106688.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 08:54 wx-msg-event-ticket-2020-11-30-08-54-51-1606697691.0043-1274719846.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 08:44 wx-msg-event-ticket-2020-11-30-08-44-48-1606697088.7198-713896594.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 08:44 wx-msg-event-ticket-2020-11-30-08-44-48-1606697088.7117-729391381.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 08:34 wx-msg-event-ticket-2020-11-30-08-34-53-1606696493.7291-1091252621.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 08:34 wx-msg-event-ticket-2020-11-30-08-34-53-1606696493.7209-1259900036.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 08:24 wx-msg-event-ticket-2020-11-30-08-24-50-1606695890.2233-208955798.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 08:24 wx-msg-event-ticket-2020-11-30-08-24-49-1606695889.7807-1262611877.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 08:14 wx-msg-event-ticket-2020-11-30-08-14-53-1606695293.2129-2026598871.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 08:14 wx-msg-event-ticket-2020-11-30-08-14-53-1606695293.2053-621892636.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 08:05 wx-msg-event-ticket-2020-11-30-08-05-03-1606694703.3859-1206143554.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 08:05 wx-msg-event-ticket-2020-11-30-08-05-03-1606694703.3788-552730140.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 07:55 wx-msg-event-ticket-2020-11-30-07-55-32-1606694132.0565-273542586.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 07:55 wx-msg-event-ticket-2020-11-30-07-55-32-1606694132.0483-1577590092.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 07:45 wx-msg-event-ticket-2020-11-30-07-45-29-1606693529.9869-1588961410.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 07:45 wx-msg-event-ticket-2020-11-30-07-45-29-1606693529.978-1374459792.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 07:34 wx-msg-event-ticket-2020-11-30-07-34-49-1606692889.761-1368578201.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 07:34 wx-msg-event-ticket-2020-11-30-07-34-49-1606692889.7521-1226355572.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 07:24 wx-msg-event-ticket-2020-11-30-07-24-42-1606692282.7321-151951386.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 07:24 wx-msg-event-ticket-2020-11-30-07-24-42-1606692282.7241-1065783208.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 07:14 wx-msg-event-ticket-2020-11-30-07-14-41-1606691681.3935-1859290492.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 07:14 wx-msg-event-ticket-2020-11-30-07-14-41-1606691681.3858-1002164891.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 07:04 wx-msg-event-ticket-2020-11-30-07-04-43-1606691083.9039-279996091.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 07:04 wx-msg-event-ticket-2020-11-30-07-04-43-1606691083.8972-989623729.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 06:54 wx-msg-event-ticket-2020-11-30-06-54-28-1606690468.0174-1574288943.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 06:54 wx-msg-event-ticket-2020-11-30-06-54-28-1606690468.0091-911201926.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 06:44 wx-msg-event-ticket-2020-11-30-06-44-21-1606689861.9042-2146058034.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 06:44 wx-msg-event-ticket-2020-11-30-06-44-21-1606689861.8958-2132998504.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 06:34 wx-msg-event-ticket-2020-11-30-06-34-24-1606689264.1409-262443682.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 06:34 wx-msg-event-ticket-2020-11-30-06-34-24-1606689264.1334-1465973951.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 06:24 wx-msg-event-ticket-2020-11-30-06-24-14-1606688654.6932-1629623175.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 06:24 wx-msg-event-ticket-2020-11-30-06-24-14-1606688654.297-1470389398.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 06:14 wx-msg-event-ticket-2020-11-30-06-14-13-1606688053.6491-689012542.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 06:14 wx-msg-event-ticket-2020-11-30-06-14-13-1606688053.6406-1542612275.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 06:04 wx-msg-event-ticket-2020-11-30-06-04-15-1606687455.7216-1815949907.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 06:04 wx-msg-event-ticket-2020-11-30-06-04-15-1606687455.7148-433188306.txt

13、继续检查 getComponentAccessToken() 的实现并补充日志,发现大约每 1 小时 55 分钟会进入一次访问凭据更新流程。

PHP
    /**
     * 获取第三方平台 component_access_token
     *
     * @param $appId string  第三方平台appId
     * @param $appSecret string 第三方平台appSecret
     * @return bool
     * @throws \yii\web\ServerErrorHttpException
     * @throws \yii\web\NotFoundHttpException
     */
    public function getComponentAccessToken($appId, $appSecret)
    {
        $timeStamp = time();
        $redisCommandkeyPrefix = Yii::$app->params['redisCommand']['keyPrefix'];
        $componentVerifyTicketKey = $redisCommandkeyPrefix . $appId . ':component_verify_ticket';
        $componentVerifyTicket = $this->redis->get($componentVerifyTicketKey);
        if (!$componentVerifyTicket) {
            throw new NotFoundHttpException(Yii::t('error', 205059), 205059);
        }
        $data = [
            'component_appid' => $appId,
            'component_appsecret' => $appSecret,
            'component_verify_ticket' => $componentVerifyTicket,
        ];
        $componentAccessTokenKey = $redisCommandkeyPrefix . $appId . ':component_access_token';
        // 获取 redis 中的 component_access_token
        $componentAccessToken = $this->redis->get($componentAccessTokenKey);

        // 判断 redis 中的 component_access_token 是否存在
        if (!$componentAccessToken) {
            file_put_contents(Yii::getAlias('@runtime') . '/wx-msg-event-get-component-access-token-' . Date('Y-m-d-H-i-s') . '-' . microtime(true) . '-' . mt_rand()  . '.txt', print_r('1', true), FILE_APPEND | LOCK_EX);
            $httpWxAuthAccessToken = new HttpWxAuthAccessToken();
            // http 请求获取 component_access_token
            $httpWxAuthAccessTokenResult = $httpWxAuthAccessToken->wxComponentAccessToken(Json::encode($data));
            file_put_contents(Yii::getAlias('@runtime') . '/wx-msg-event-get-component-access-token-' . Date('Y-m-d-H-i-s') . '-' . microtime(true) . '-' . mt_rand()  . '.txt', print_r('1', true), FILE_APPEND | LOCK_EX);
            if ($httpWxAuthAccessTokenResult === false) {
                if ($httpWxAuthAccessToken->hasErrors()) {
                    $firstError = '';
                    foreach ($httpWxAuthAccessToken->getFirstErrors() as $message) {
                        $firstError = $message;
                        break;
                    }
                    throw new ServerErrorHttpException(Yii::t('error', Yii::t('error', Yii::t('error', '205058'), ['first_error' => $firstError])), 205058);
                } elseif (!$httpWxAuthAccessToken->hasErrors()) {
                    throw new ServerErrorHttpException('WeChat third-party platform HTTP requests fail for unknown reasons!');
                }
            }
            // 保存 component_access_token 到 redis
            $this->redis->set($componentAccessTokenKey, $httpWxAuthAccessTokenResult['data']['component_access_token']);
            // 设置 component_access_token 的过期时间
            $this->redis->expire($componentAccessTokenKey, $httpWxAuthAccessTokenResult['data']['expires_in'] - Yii::$app->params['accessToken']['timeOut']);
            file_put_contents(Yii::getAlias('@runtime') . '/wx-msg-event-get-component-access-token-' . Date('Y-m-d-H-i-s') . '-' . microtime(true) . '-' . mt_rand()  . '.txt', print_r('1', true), FILE_APPEND | LOCK_EX);
        }
        return true;
    }

14、检查 2020-11-30 16:25 左右的日志,两组相关时间差约为 42.85 毫秒和 41.19 毫秒。由此可以排除访问凭据请求本身是主要耗时来源。

Plaintext
[root@c0f75d7d937d runtime]# ls -lt
total 136
drwxrwxr-x 2 nginx nginx 4096 Nov 30 17:25 debug
-rw-r--r-- 1 nginx nginx  305 Nov 30 17:25 msgXml.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 17:25 wx-msg-event-ticket-2020-11-30-17-25-51-1606728351.9058-1469431681.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 17:25 wx-msg-event-ticket-2020-11-30-17-25-51-1606728351.8982-1150604336.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 17:25 decrypt_result.txt
-rw-r--r-- 1 nginx nginx  220 Nov 30 17:25 requestQueryParams.txt
-rw-r--r-- 1 nginx nginx  573 Nov 30 17:25 requestRowBody.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 17:16 wx-msg-event-ticket-2020-11-30-17-16-01-1606727761.6309-69054700.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 17:16 wx-msg-event-ticket-2020-11-30-17-16-01-1606727761.6227-457638769.txt
-rw-r--r-- 1 nginx nginx   18 Nov 30 17:09 actionReceive.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 17:06 wx-msg-event-ticket-2020-11-30-17-06-10-1606727170.4403-2006187811.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 17:06 wx-msg-event-ticket-2020-11-30-17-06-10-1606727170.4319-776558591.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 16:56 wx-msg-event-ticket-2020-11-30-16-56-26-1606726586.3357-1979248577.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 16:56 wx-msg-event-ticket-2020-11-30-16-56-26-1606726586.3275-633275275.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 16:46 wx-msg-event-ticket-2020-11-30-16-46-22-1606725982.4072-1717988297.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 16:46 wx-msg-event-ticket-2020-11-30-16-46-22-1606725982.3998-1543568297.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 16:36 wx-msg-event-ticket-2020-11-30-16-36-20-1606725380.2058-82967550.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 16:36 wx-msg-event-ticket-2020-11-30-16-36-20-1606725380.1981-1694960265.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 16:25 wx-msg-event-get-component-access-token-2020-11-30-16-25-30-1606724730.1885-15234176.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 16:25 wx-msg-event-ticket-2020-11-30-16-25-30-1606724730.1887-1337687937.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 16:25 wx-msg-event-get-component-access-token-2020-11-30-16-25-30-1606724730.1802-973471121.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 16:25 wx-msg-event-get-component-access-token-2020-11-30-16-25-29-1606724729.7683-502384296.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 16:25 wx-msg-event-ticket-2020-11-30-16-25-29-1606724729.76-1329550188.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 16:15 wx-msg-event-ticket-2020-11-30-16-15-35-1606724135.7504-1687789418.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 16:15 wx-msg-event-ticket-2020-11-30-16-15-35-1606724135.7424-862202167.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 16:05 wx-msg-event-ticket-2020-11-30-16-05-52-1606723552.4635-817272139.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 16:05 wx-msg-event-ticket-2020-11-30-16-05-52-1606723552.4569-1930886052.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 15:55 wx-msg-event-ticket-2020-11-30-15-55-16-1606722916.7846-1483875696.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 15:55 wx-msg-event-ticket-2020-11-30-15-55-16-1606722916.777-1116558620.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 15:45 wx-msg-event-ticket-2020-11-30-15-45-08-1606722308.2036-360563463.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 15:45 wx-msg-event-ticket-2020-11-30-15-45-08-1606722308.1971-2068264798.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 15:35 wx-msg-event-ticket-2020-11-30-15-35-14-1606721714.414-760396908.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 15:35 wx-msg-event-ticket-2020-11-30-15-35-14-1606721714.4055-895475717.txt
drwxrwxr-x 5 nginx nginx 4096 Nov 30 15:35 cache
[root@c0f75d7d937d runtime]#

15、继续查看项目中的 HTTP 请求模型实现。

PHP

$httpWxAuthAccessTokenResult = $httpWxAuthAccessToken->wxComponentAccessToken(Json::encode($data));

$response = Yii::$app->wxAuthHttp->createRequest()
    ->setMethod('post')
    ->setHeaders([
        'content-type' => 'application/json; charset=utf-8',
    ])
    ->setUrl('cgi-bin/component/api_component_token')
    ->setContent($data)
    ->send();

16、随后在 HTTP 请求模型中增加耗时记录,以进一步确认请求阶段的实际时间。

PHP

$httpWxAuthAccessTokenResult = $httpWxAuthAccessToken->wxComponentAccessToken($data);

$response = Yii::$app->wxAuthHttp->createRequest()
    ->setMethod('post')
    ->setFormat('json')
    ->setUrl('cgi-bin/component/api_component_token')
    ->setData($data)
    ->send();

17、新的日志显示,多次 HTTP 请求耗时约为 42.26、40.08 和 39.69 毫秒,整体保持在几十毫秒范围。

Plaintext
[root@c0f75d7d937d runtime]# ls -lt
total 780
drwxrwxr-x 2 nginx nginx 4096 Dec  1 09:46 debug
-rw-r--r-- 1 nginx nginx  305 Dec  1 09:46 msgXml.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 09:46 wx-msg-event-ticket-2020-12-01-09-46-40-1606787200.1924-384098389.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 09:46 wx-msg-event-ticket-2020-12-01-09-46-40-1606787200.184-1045658522.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 09:46 decrypt_result.txt
-rw-r--r-- 1 nginx nginx  219 Dec  1 09:46 requestQueryParams.txt
-rw-r--r-- 1 nginx nginx  573 Dec  1 09:46 requestRowBody.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 09:36 wx-msg-event-ticket-2020-12-01-09-36-22-1606786582.0585-1013103392.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 09:36 wx-msg-event-ticket-2020-12-01-09-36-22-1606786582.0505-970864071.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 09:25 wx-msg-event-ticket-2020-12-01-09-25-41-1606785941.8906-2041798728.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 09:25 wx-msg-event-ticket-2020-12-01-09-25-41-1606785941.8802-195187870.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 09:15 wx-msg-event-ticket-2020-12-01-09-15-45-1606785345.1548-475196816.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 09:15 wx-msg-event-ticket-2020-12-01-09-15-45-1606785345.1467-1129656952.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 09:06 wx-msg-event-ticket-2020-12-01-09-06-07-1606784767.8797-1783503091.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 09:06 wx-msg-event-ticket-2020-12-01-09-06-07-1606784767.8731-22763234.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 08:55 wx-msg-event-ticket-2020-12-01-08-55-25-1606784125.9631-425180789.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 08:55 wx-msg-event-ticket-2020-12-01-08-55-25-1606784125.9565-211048902.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 08:45 wx-msg-event-ticket-2020-12-01-08-45-23-1606783523.1237-862030637.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 08:45 wx-msg-event-ticket-2020-12-01-08-45-23-1606783523.1167-312880440.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 08:35 wx-msg-event-ticket-2020-12-01-08-35-25-1606782925.4178-2066789220.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 08:35 wx-msg-event-ticket-2020-12-01-08-35-25-1606782925.4104-1780781371.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 08:25 wx-msg-event-get-component-access-token-2020-12-01-08-25-14-1606782314.9202-330912324.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 08:25 wx-msg-event-ticket-2020-12-01-08-25-14-1606782314.9204-356089533.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 08:25 wx-msg-event-get-component-access-token-2020-12-01-08-25-14-1606782314.9124-958594011.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 08:25 wx-msg-event-get-component-access-token-2020-12-01-08-25-14-1606782314.4898-1980951097.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 08:25 wx-msg-event-ticket-2020-12-01-08-25-14-1606782314.4821-1622599529.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 08:15 wx-msg-event-ticket-2020-12-01-08-15-22-1606781722.7309-1378184776.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 08:15 wx-msg-event-ticket-2020-12-01-08-15-22-1606781722.7233-2062344384.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 08:05 wx-msg-event-ticket-2020-12-01-08-05-42-1606781142.3485-744441001.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 08:05 wx-msg-event-ticket-2020-12-01-08-05-42-1606781142.3409-890187836.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 07:55 wx-msg-event-ticket-2020-12-01-07-55-33-1606780533.7927-321132804.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 07:55 wx-msg-event-ticket-2020-12-01-07-55-33-1606780533.7847-1382205121.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 07:45 wx-msg-event-ticket-2020-12-01-07-45-32-1606779932.8478-999696249.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 07:45 wx-msg-event-ticket-2020-12-01-07-45-32-1606779932.838-1987962334.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 07:35 wx-msg-event-ticket-2020-12-01-07-35-34-1606779334.9738-1363413859.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 07:35 wx-msg-event-ticket-2020-12-01-07-35-34-1606779334.9653-2068220786.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 07:25 wx-msg-event-ticket-2020-12-01-07-25-29-1606778729.2231-738058693.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 07:25 wx-msg-event-ticket-2020-12-01-07-25-29-1606778729.2149-1863458868.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 07:15 wx-msg-event-ticket-2020-12-01-07-15-34-1606778134.2901-372169339.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 07:15 wx-msg-event-ticket-2020-12-01-07-15-34-1606778134.283-1709718914.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 07:05 wx-msg-event-ticket-2020-12-01-07-05-32-1606777532.1243-2010818083.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 07:05 wx-msg-event-ticket-2020-12-01-07-05-32-1606777532.1163-1852034553.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 06:55 wx-msg-event-ticket-2020-12-01-06-55-21-1606776921.2762-588795894.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 06:55 wx-msg-event-ticket-2020-12-01-06-55-21-1606776921.2688-1763253893.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 06:45 wx-msg-event-ticket-2020-12-01-06-45-16-1606776316.823-349359619.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 06:45 wx-msg-event-ticket-2020-12-01-06-45-16-1606776316.8152-1076127272.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 06:34 wx-msg-event-ticket-2020-12-01-06-34-37-1606775677.7764-775571138.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 06:34 wx-msg-event-ticket-2020-12-01-06-34-37-1606775677.7692-58599234.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 06:24 wx-msg-event-get-component-access-token-2020-12-01-06-24-26-1606775066.2637-574568818.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 06:24 wx-msg-event-ticket-2020-12-01-06-24-26-1606775066.2638-1092278848.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 06:24 wx-msg-event-get-component-access-token-2020-12-01-06-24-26-1606775066.254-1173116726.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 06:24 wx-msg-event-get-component-access-token-2020-12-01-06-24-25-1606775065.8532-1198103424.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 06:24 wx-msg-event-ticket-2020-12-01-06-24-25-1606775065.8441-1704836704.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 06:14 wx-msg-event-ticket-2020-12-01-06-14-20-1606774460.4333-759954230.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 06:14 wx-msg-event-ticket-2020-12-01-06-14-20-1606774460.4261-2019400249.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 06:04 wx-msg-event-ticket-2020-12-01-06-04-25-1606773865.473-739974480.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 06:04 wx-msg-event-ticket-2020-12-01-06-04-25-1606773865.4639-572998845.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 05:54 wx-msg-event-ticket-2020-12-01-05-54-12-1606773252.9456-493107095.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 05:54 wx-msg-event-ticket-2020-12-01-05-54-12-1606773252.9384-2012431998.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 05:44 wx-msg-event-ticket-2020-12-01-05-44-11-1606772651.9372-474948357.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 05:44 wx-msg-event-ticket-2020-12-01-05-44-11-1606772651.9291-402864750.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 05:34 wx-msg-event-ticket-2020-12-01-05-34-06-1606772046.8855-1427913395.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 05:34 wx-msg-event-ticket-2020-12-01-05-34-06-1606772046.8781-88996324.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 05:24 wx-msg-event-ticket-2020-12-01-05-24-04-1606771444.5239-1288137598.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 05:24 wx-msg-event-ticket-2020-12-01-05-24-04-1606771444.5164-608837871.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 05:14 wx-msg-event-ticket-2020-12-01-05-14-01-1606770841.7629-1181999397.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 05:14 wx-msg-event-ticket-2020-12-01-05-14-01-1606770841.755-1971758488.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 05:04 wx-msg-event-ticket-2020-12-01-05-04-02-1606770242.3264-1071187225.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 05:04 wx-msg-event-ticket-2020-12-01-05-04-02-1606770242.3189-670608731.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 04:53 wx-msg-event-ticket-2020-12-01-04-53-59-1606769639.0448-3386374.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 04:53 wx-msg-event-ticket-2020-12-01-04-53-59-1606769639.0369-1897343048.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 04:43 wx-msg-event-ticket-2020-12-01-04-43-58-1606769038.0198-1931996254.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 04:43 wx-msg-event-ticket-2020-12-01-04-43-58-1606769038.0113-1603472383.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 04:33 wx-msg-event-ticket-2020-12-01-04-33-58-1606768438.6776-720303540.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 04:33 wx-msg-event-ticket-2020-12-01-04-33-58-1606768438.6692-490408026.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 04:24 wx-msg-event-get-component-access-token-2020-12-01-04-24-46-1606767886.6364-1067545974.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 04:24 wx-msg-event-ticket-2020-12-01-04-24-46-1606767886.6366-1463566931.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 04:24 wx-msg-event-get-component-access-token-2020-12-01-04-24-46-1606767886.6284-596914487.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 04:24 wx-msg-event-get-component-access-token-2020-12-01-04-24-46-1606767886.2315-720853899.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 04:24 wx-msg-event-ticket-2020-12-01-04-24-46-1606767886.2236-1810890714.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 04:14 wx-msg-event-ticket-2020-12-01-04-14-45-1606767285.1813-173971590.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 04:14 wx-msg-event-ticket-2020-12-01-04-14-45-1606767285.1732-1121967222.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 04:04 wx-msg-event-ticket-2020-12-01-04-04-49-1606766689.3311-1538048300.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 04:04 wx-msg-event-ticket-2020-12-01-04-04-49-1606766689.3221-523777237.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 03:54 wx-msg-event-ticket-2020-12-01-03-54-47-1606766087.4762-1525066154.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 03:54 wx-msg-event-ticket-2020-12-01-03-54-47-1606766087.4658-1292924910.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 03:44 wx-msg-event-ticket-2020-12-01-03-44-07-1606765447.1236-409664564.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 03:44 wx-msg-event-ticket-2020-12-01-03-44-07-1606765447.1132-1394894206.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 03:34 wx-msg-event-ticket-2020-12-01-03-34-05-1606764845.0073-1387777703.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 03:34 wx-msg-event-ticket-2020-12-01-03-34-05-1606764845.0008-974432684.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 03:24 wx-msg-event-ticket-2020-12-01-03-24-06-1606764246.7578-1342539112.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 03:24 wx-msg-event-ticket-2020-12-01-03-24-06-1606764246.7492-1893978314.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 03:14 wx-msg-event-ticket-2020-12-01-03-14-04-1606763644.4555-720341412.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 03:14 wx-msg-event-ticket-2020-12-01-03-14-04-1606763644.4464-1671857882.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 03:04 wx-msg-event-ticket-2020-12-01-03-04-08-1606763048.7259-2143055995.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 03:04 wx-msg-event-ticket-2020-12-01-03-04-08-1606763048.7185-1193690580.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 02:54 wx-msg-event-ticket-2020-12-01-02-54-06-1606762446.2165-739995823.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 02:54 wx-msg-event-ticket-2020-12-01-02-54-06-1606762446.2095-1858779317.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 02:44 wx-msg-event-ticket-2020-12-01-02-44-05-1606761845.4562-457501145.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 02:44 wx-msg-event-ticket-2020-12-01-02-44-05-1606761845.4477-635809472.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 02:34 wx-msg-event-ticket-2020-12-01-02-34-07-1606761247.2821-1642870183.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 02:34 wx-msg-event-ticket-2020-12-01-02-34-07-1606761247.2747-1322735233.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 02:24 wx-msg-event-get-component-access-token-2020-12-01-02-24-01-1606760641.0821-1481979193.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 02:24 wx-msg-event-ticket-2020-12-01-02-24-01-1606760641.0823-920160809.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 02:24 wx-msg-event-get-component-access-token-2020-12-01-02-24-01-1606760641.0722-105574102.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 02:24 wx-msg-event-get-component-access-token-2020-12-01-02-24-00-1606760640.6884-1334268928.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 02:24 wx-msg-event-ticket-2020-12-01-02-24-00-1606760640.6786-701382904.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 02:14 wx-msg-event-ticket-2020-12-01-02-14-00-1606760040.7368-1670769553.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 02:14 wx-msg-event-ticket-2020-12-01-02-14-00-1606760040.7286-1176803526.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 02:04 wx-msg-event-ticket-2020-12-01-02-04-05-1606759445.824-1519493632.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 02:04 wx-msg-event-ticket-2020-12-01-02-04-05-1606759445.8173-1967281298.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 01:54 wx-msg-event-ticket-2020-12-01-01-54-04-1606758844.0423-1780051663.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 01:54 wx-msg-event-ticket-2020-12-01-01-54-04-1606758844.0338-66756438.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 01:44 wx-msg-event-ticket-2020-12-01-01-44-07-1606758247.5066-1363693687.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 01:44 wx-msg-event-ticket-2020-12-01-01-44-07-1606758247.4993-151888985.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 01:34 wx-msg-event-ticket-2020-12-01-01-34-09-1606757649.9249-1275381967.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 01:34 wx-msg-event-ticket-2020-12-01-01-34-09-1606757649.9159-339126942.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 01:24 wx-msg-event-ticket-2020-12-01-01-24-05-1606757045.2573-1561385935.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 01:24 wx-msg-event-ticket-2020-12-01-01-24-05-1606757045.2501-668714567.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 01:14 wx-msg-event-ticket-2020-12-01-01-14-08-1606756448.5321-2033193483.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 01:14 wx-msg-event-ticket-2020-12-01-01-14-08-1606756448.5236-1755134776.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 01:04 wx-msg-event-ticket-2020-12-01-01-04-59-1606755899.6917-2031828308.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 01:04 wx-msg-event-ticket-2020-12-01-01-04-59-1606755899.6835-657047289.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 00:54 wx-msg-event-ticket-2020-12-01-00-54-14-1606755254.3857-2146809427.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 00:54 wx-msg-event-ticket-2020-12-01-00-54-14-1606755254.379-1408837289.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 00:44 wx-msg-event-ticket-2020-12-01-00-44-15-1606754655.4169-1672754236.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 00:44 wx-msg-event-ticket-2020-12-01-00-44-15-1606754655.4091-869604583.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 00:34 wx-msg-event-ticket-2020-12-01-00-34-22-1606754062.3614-1510086858.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 00:34 wx-msg-event-ticket-2020-12-01-00-34-22-1606754062.3537-1370147506.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 00:24 wx-msg-event-get-component-access-token-2020-12-01-00-24-23-1606753463.0588-481023680.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 00:24 wx-msg-event-ticket-2020-12-01-00-24-23-1606753463.059-1861456234.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 00:24 wx-msg-event-get-component-access-token-2020-12-01-00-24-23-1606753463.0518-1634850724.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 00:24 wx-msg-event-get-component-access-token-2020-12-01-00-24-22-1606753462.6639-2125181805.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 00:24 wx-msg-event-ticket-2020-12-01-00-24-22-1606753462.6575-1139131739.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 00:14 wx-msg-event-ticket-2020-12-01-00-14-20-1606752860.8339-289574744.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 00:14 wx-msg-event-ticket-2020-12-01-00-14-20-1606752860.8249-1394522342.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 00:04 wx-msg-event-ticket-2020-12-01-00-04-34-1606752274.3779-235937116.txt
-rw-r--r-- 1 nginx nginx    1 Dec  1 00:04 wx-msg-event-ticket-2020-12-01-00-04-34-1606752274.3686-1052730961.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 23:54 wx-msg-event-ticket-2020-11-30-23-54-13-1606751653.0078-680117427.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 23:54 wx-msg-event-ticket-2020-11-30-23-54-13-1606751653.0005-1117289894.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 23:44 wx-msg-event-ticket-2020-11-30-23-44-14-1606751054.6151-1997692452.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 23:44 wx-msg-event-ticket-2020-11-30-23-44-14-1606751054.6071-1044148350.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 23:34 wx-msg-event-ticket-2020-11-30-23-34-19-1606750459.0669-494870141.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 23:34 wx-msg-event-ticket-2020-11-30-23-34-19-1606750459.0589-996872868.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 23:24 wx-msg-event-ticket-2020-11-30-23-24-22-1606749862.2343-876893111.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 23:24 wx-msg-event-ticket-2020-11-30-23-24-22-1606749862.2252-2057264373.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 23:15 wx-msg-event-ticket-2020-11-30-23-15-10-1606749310.2539-1935429237.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 23:15 wx-msg-event-ticket-2020-11-30-23-15-10-1606749310.2458-2092427951.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 23:05 wx-msg-event-ticket-2020-11-30-23-05-23-1606748723.8199-1646845185.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 23:05 wx-msg-event-ticket-2020-11-30-23-05-23-1606748723.8103-448599163.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 22:55 wx-msg-event-ticket-2020-11-30-22-55-17-1606748117.4809-1401582906.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 22:55 wx-msg-event-ticket-2020-11-30-22-55-17-1606748117.4735-1605481014.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 22:45 wx-msg-event-ticket-2020-11-30-22-45-26-1606747526.6753-585260776.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 22:45 wx-msg-event-ticket-2020-11-30-22-45-26-1606747526.6685-1440769296.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 22:35 wx-msg-event-ticket-2020-11-30-22-35-35-1606746935.0385-2843588.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 22:35 wx-msg-event-ticket-2020-11-30-22-35-35-1606746935.0314-1345068321.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 22:25 wx-msg-event-get-component-access-token-2020-11-30-22-25-34-1606746334.5391-1061436467.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 22:25 wx-msg-event-ticket-2020-11-30-22-25-34-1606746334.5392-726807423.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 22:25 wx-msg-event-get-component-access-token-2020-11-30-22-25-34-1606746334.5293-965003426.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 22:25 wx-msg-event-get-component-access-token-2020-11-30-22-25-34-1606746334.1075-1527687792.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 22:25 wx-msg-event-ticket-2020-11-30-22-25-34-1606746334.0994-1208139954.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 22:15 wx-msg-event-ticket-2020-11-30-22-15-37-1606745737.6861-1509351549.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 22:15 wx-msg-event-ticket-2020-11-30-22-15-37-1606745737.6791-104725536.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 22:05 wx-msg-event-ticket-2020-11-30-22-05-25-1606745125.5291-404181920.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 22:05 wx-msg-event-ticket-2020-11-30-22-05-25-1606745125.5221-971248792.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 21:55 wx-msg-event-ticket-2020-11-30-21-55-07-1606744507.8765-1704717090.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 21:55 wx-msg-event-ticket-2020-11-30-21-55-07-1606744507.8695-965101780.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 21:45 wx-msg-event-ticket-2020-11-30-21-45-00-1606743900.4269-2066158756.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 21:45 wx-msg-event-ticket-2020-11-30-21-45-00-1606743900.4187-1320980327.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 21:35 wx-msg-event-ticket-2020-11-30-21-35-34-1606743334.5332-197445622.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 21:35 wx-msg-event-ticket-2020-11-30-21-35-34-1606743334.5248-1836173532.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 21:25 wx-msg-event-ticket-2020-11-30-21-25-31-1606742731.9778-1837661693.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 21:25 wx-msg-event-ticket-2020-11-30-21-25-31-1606742731.9706-1108095330.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 21:15 wx-msg-event-ticket-2020-11-30-21-15-36-1606742136.1972-1007880751.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 21:15 wx-msg-event-ticket-2020-11-30-21-15-36-1606742136.1906-649721699.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 21:05 wx-msg-event-ticket-2020-11-30-21-05-58-1606741558.1541-1125447811.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 21:05 wx-msg-event-ticket-2020-11-30-21-05-58-1606741558.1441-842576238.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 20:55 wx-msg-event-ticket-2020-11-30-20-55-31-1606740931.8103-1319161929.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 20:55 wx-msg-event-ticket-2020-11-30-20-55-31-1606740931.8031-1384312038.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 20:45 wx-msg-event-ticket-2020-11-30-20-45-36-1606740336.4684-1333748366.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 20:45 wx-msg-event-ticket-2020-11-30-20-45-36-1606740336.4571-1717522519.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 20:35 wx-msg-event-ticket-2020-11-30-20-35-46-1606739746.9132-967751392.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 20:35 wx-msg-event-ticket-2020-11-30-20-35-46-1606739746.9069-189645814.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 20:25 wx-msg-event-get-component-access-token-2020-11-30-20-25-45-1606739145.5218-1234317233.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 20:25 wx-msg-event-ticket-2020-11-30-20-25-45-1606739145.5219-740613648.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 20:25 wx-msg-event-get-component-access-token-2020-11-30-20-25-45-1606739145.5138-83063487.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 20:25 wx-msg-event-get-component-access-token-2020-11-30-20-25-45-1606739145.1261-457325553.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 20:25 wx-msg-event-ticket-2020-11-30-20-25-45-1606739145.1181-293506606.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 20:16 wx-msg-event-ticket-2020-11-30-20-16-06-1606738566.7693-430128028.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 20:16 wx-msg-event-ticket-2020-11-30-20-16-06-1606738566.7632-337815723.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 20:07 wx-msg-event-ticket-2020-11-30-20-07-10-1606738030.6358-570043006.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 20:07 wx-msg-event-ticket-2020-11-30-20-07-10-1606738030.6259-1147801012.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 19:56 wx-msg-event-ticket-2020-11-30-19-56-43-1606737403.759-1187805995.txt
-rw-r--r-- 1 nginx nginx    1 Nov 30 19:56 wx-msg-event-ticket-2020-11-30-19-56-43-1606737403.7514-1773919284.txt
drwxrwxr-x 5 nginx nginx 4096 Nov 30 19:56 cache
[root@c0f75d7d937d runtime]#

18、使用 Postman 对微信官方接口进行同样的请求测试,响应耗时约 371 ms;程序侧记录的请求耗时约 40 ms,整体处于正常范围,如图7。

使用 Postman 对微信官方接口进行请求测试。
图7

19、查看程序请求日志后,再次确认相关请求通常在 40 毫秒左右完成,如图8。

查看程序请求日志,确认请求耗时约为几十毫秒。
图8

20、因此,5 秒提醒并不像是由程序本身的处理耗时造成。为了继续排除运行模式差异,随后开启生产环境配置并启用程序缓存。

21、再次查看 Nginx 日志,响应时间没有明显变化,upstream_response_time 约为 0.032 秒,说明后端服务处理正常。

JSON
{
  "request": {
    "headers": {
      "referer": "-",
      "host": "auth.channel-pub.wjdev.chinamcloud.cn",
      "x-request-id": "-",
      "x-forwarded-for": "81.69.19.7, 10.42.0.1",
      "user-agent": "Mozilla/4.0"
    },
    "method": "POST",
    "uri": "/wx-msg-event/ticket?signature=4bd108fe9aac5f0c4b0727f859274433f6266287×tamp=1606797387&nonce=543080602&encrypt_type=aes&msg_signature=534641005b290dd9e0cd1c8f4daab3be25f53c0d",
    "url": "http://auth.channel-pub.wjdev.chinamcloud.cn/wx-msg-event/ticket?signature=4bd108fe9aac5f0c4b0727f859274433f6266287×tamp=1606797387&nonce=543080602&encrypt_type=aes&msg_signature=534641005b290dd9e0cd1c8f4daab3be25f53c0d",
    "@timestamp": "2020-12-01T12:36:28+08:00",
    "upstreamaddr": "127.0.0.1:9000",
    "response": {
      "responsetime": "0.034",
      "upstream_response_time": "0.032"
    },
    "size": "17",
    "status": "200"
  },
  "module_name": "default-app"
}

22、根据 Nginx 日志中的请求信息,在 Postman 中复现同类请求,响应时间约 243 ms,仍明显低于 5 秒,如图9。

根据 Nginx 日志信息在 Postman 中复现同类请求。
图9

23、为了进一步排除业务处理耗时,在程序入口处直接返回 success,但同类提醒仍然出现,如图10。

在程序入口处直接返回 success 后,同类提醒仍然出现。
图10
PHP
<?php
exit('success');
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
 
require __DIR__ . '/../../vendor/autoload.php';
require __DIR__ . '/../../vendor/yiisoft/yii2/Yii.php';
require __DIR__ . '/../../common/config/bootstrap.php';
require __DIR__ . '/../config/bootstrap.php';
 
$config = yii\helpers\ArrayHelper::merge(
    require __DIR__ . '/../../common/config/main.php',
    require __DIR__ . '/../../common/config/main-local.php',
    require __DIR__ . '/../config/main.php',
    require __DIR__ . '/../config/main-local.php'
);
 
(new yii\web\Application($config))->run();

24、随后加入另一个测试环境的通知群进行对比,测试环境没有出现同类提醒,如图11。

加入测试环境通知群进行对比,测试环境没有出现同类提醒。
图11

25、两个环境使用相同程序,并都基于 Docker 部署,因此开始重点比较两个第三方平台应用的配置差异,并尽量让开发环境与测试环境保持一致。

26、随后对出现提醒的应用重新执行线上发布流程,如图12。

对出现提醒的应用重新执行线上发布流程。
图12

27、第一次提交线上发布时,平台提示接入检测失败,需要重新检查,如图13。

第一次提交线上发布时,平台提示接入检测失败。
图13

28、接着对比两个应用的功能配置,发现出现提醒的应用存在更多权限项,因此先将两边的相关配置调整为一致,如图14。

对比两个应用的功能配置,并调整相关权限项。
图14

29、调整后,两边的相关权限配置已经保持一致,如图15。

调整后,两边的相关权限配置保持一致。
图15

30、再次执行线上发布接入检测,这次检测成功并提交处理,提交时间为 2020-12-03 20:08,如图16。

再次执行线上发布接入检测并成功提交处理。
图16

31、2020-12-04 16:44:41 收到平台通知,公众号第三方平台【XXX】已完成线上发布,如图17。

公众号第三方平台完成线上发布。
图17

32、完成上述调整后,通知群中没有再出现同类超时提醒。最后一次提醒时间为 2020-12-04 15:54:56。结合前后的对比,可以确认问题与应用的线上发布状态有关,如图18。

完成调整后,通知群中没有再出现同类超时提醒。
图18

需要长期技术维护或远程问题排查?

我是拥有 15+ 年经验的 PHP / Go 后端工程师,长期关注已有系统维护、Bug 修复、性能优化、服务器排查、WordPress 网站维护和小功能迭代。

如果你的项目遇到以下情况,可以先从一次小问题排查开始合作:

  • ✅ PHP / Laravel / Yii2 老项目无人维护
  • ✅ Go / Gin 后端接口需要排查或优化
  • ✅ WordPress 网站访问慢、报错或插件冲突
  • ✅ Nginx / MySQL / Redis / Linux 服务器异常
  • ✅ CDN / Cloudflare / DNS / HTTPS 配置问题
  • ✅ 需要长期远程技术支持或兼职维护

更多介绍请查看:关于我 & 合作

微信:13980074657
邮箱:shuijingwanwq@gmail.com
Telegram:@shuijingwan
GitHub:https://github.com/shuijingwan