Amazon SNS 发送通知所用时间过长
Amazon SNS is taking too much time to deliver notifications
我在 Amazon Web Services 中部署了一个后端。我在使用 SNS 推送通知时遇到性能问题。我已经使用 Firebase 的 API 密钥注册了一个应用程序。
当我使用 "Publish to endpoint" 按钮测试来自 SNS 控制台的通知时,消息传送速度非常快:
{
"GCM": "{ \"data\": { \"message\": \"Hello world\" } }"
}
但是当我使用 SNS Api 为 Java 使用 Lambda 函数推送通知时,消息最多需要 30 分钟才能到达。所以我尝试使用 Firebase 的 "priority" 参数来使消息更快到达,现在最多需要 5 分钟。
{
"GCM": "{ \"priority\": \"high\", \"data\": { \"message\": \"Hello world\" } }"
}
由于这些通知是在游戏过程中推送的,对于一个用户来说,延迟 5 分钟获得游戏更新真的很烦人。假设一个玩家下棋,另一个玩家注意到2分钟后轮到他了,但是他在3分钟后收到了关于他已经玩过的游戏的游戏更新通知,所以他会生气。
对于所有这些通知,我使用的 TTL(生存时间)为 172,800 秒(2 天)。我可以做些什么来提高性能?
我发现了问题。由于我正在使用线程推送通知,因此执行被推迟了。
看起来 Lambda 在 handleRequest()
方法完成后暂停了任何线程的执行。我在 DynamoDB 中使用线程更新对象时遇到了同样的问题。
我的建议是仅将线程用于多任务作业,但保证 handleRequest()
仅在所有线程完成后才达到 return
语句。
我在 Amazon Web Services 中部署了一个后端。我在使用 SNS 推送通知时遇到性能问题。我已经使用 Firebase 的 API 密钥注册了一个应用程序。
当我使用 "Publish to endpoint" 按钮测试来自 SNS 控制台的通知时,消息传送速度非常快:
{
"GCM": "{ \"data\": { \"message\": \"Hello world\" } }"
}
但是当我使用 SNS Api 为 Java 使用 Lambda 函数推送通知时,消息最多需要 30 分钟才能到达。所以我尝试使用 Firebase 的 "priority" 参数来使消息更快到达,现在最多需要 5 分钟。
{
"GCM": "{ \"priority\": \"high\", \"data\": { \"message\": \"Hello world\" } }"
}
由于这些通知是在游戏过程中推送的,对于一个用户来说,延迟 5 分钟获得游戏更新真的很烦人。假设一个玩家下棋,另一个玩家注意到2分钟后轮到他了,但是他在3分钟后收到了关于他已经玩过的游戏的游戏更新通知,所以他会生气。
对于所有这些通知,我使用的 TTL(生存时间)为 172,800 秒(2 天)。我可以做些什么来提高性能?
我发现了问题。由于我正在使用线程推送通知,因此执行被推迟了。
看起来 Lambda 在 handleRequest()
方法完成后暂停了任何线程的执行。我在 DynamoDB 中使用线程更新对象时遇到了同样的问题。
我的建议是仅将线程用于多任务作业,但保证 handleRequest()
仅在所有线程完成后才达到 return
语句。