【发布时间】:2016-10-07 17:23:36
【问题描述】:
我正在开发一个应用服务器来发送 GCM 消息。我的应用程序服务器正在使用 HTTP 协议向 GCM 连接服务器发送 post 请求。请求的平均响应时间是可以接受的(大约 100 毫秒),但有时我收到的响应时间大于 1 秒。更多时候,我的响应时间为 2、4 秒甚至更长。 我正在使用这个库gcm-server 将我的请求发送到 GCM 服务器。我相信它归谷歌所有。 为了解决这个问题,我在 gcm-server 库代码中进行了一些分析,但找不到任何线索或答案。最终,我决定将一些带有有效帖子的 curl 发送到 GCM 服务器。结果是一样的。我确定这不是预期的行为,也许我做错了什么,但无法找到或理解它是什么。
下面是我正在运行的脚本来测试它。我正在向 GCM 发送 1000 个 post 请求,没有任何 Keep-Alive 定义(默认情况下 cURL 使用 Keep-Alive 启用)。
#!/bin/bash
for i in {1..1000}; do
curl -s -w "%{http_code} - %{time_total}\n" -o /dev/null -X POST -H "Content-Type: application/json" -H "Authorization: key={putHereOneGCMValidToken}}" -H "Cache-Control: no-cache" -d '{
"collapse_key": "92667ba1-c8e9-4018-bf14-156417065641",
"delay_while_idle": false,
"data": {
"field1": "value1",
"field2": "value2"
},
"time_to_live": 0,
"registration_ids": [
"REGISTRATION_ID_1",
"REGISTRATION_ID_2",
"BAD_REGISTRATION_ID"
]
}' "https://gcm-http.googleapis.com/gcm/send";
sleep 0.2;
done
参考:
【问题讨论】: