蟒蛇"[WARNING] Retrying after connection broken by SSLError"



我正在使用Python SQLAlchemy运行restful API。我们在AWS lambda代理上运行无服务器,我遇到的问题是,有时任何API端点被调用都会导致504 HTTP Status Code。这不是一个特定的端点超时,它感觉很随机,它发生了,让我们说每20个API调用(非常奇怪)。API网关超时时间为30秒。

我正在使用Python与SQLAlchemy和PostgreSQL数据库。深入到日志中,我发现了这个错误:

[WARNING] Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) 
after connection broken by 'SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol
(_ssl.c:1091)'))': /api/6261774/envelope/

,当504错误发生时,它似乎总是发生。

任何支持,非常感谢。

最初的想法:

给它偶尔,它可能是一个网络连接失败?

预置并发运行初始化代码,我认为这是db连接的地方。用一个实例来尝试一下是否值得?

我建议在应用程序的所有层打开调试,并将日志推送到Cloudwatch中。接下来,您可以使用Cloudwatch日志洞察力(它有点像Splunk)来查看错误的时间轴和导致错误的事件。

如果您是AWS Cloudwatch的新手,这里有一篇关于AWS Cloudwatch日志见解的文章:

https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html

摘自文章:

CloudWatch Logs Insights使您能够交互式地搜索和在Amazon CloudWatch Logs中分析日志数据。你可以表演帮助您更高效有效地响应查询操作问题。如果出现问题,您可以使用CloudWatch日志识别潜在原因和验证已部署修复的洞察力。

CloudWatch Logs Insights包括一个专门构建的查询语言几个简单但功能强大的命令。CloudWatch Logs Insights提供示例查询、命令描述、查询自动完成和日志现场发现,以帮助您开始。包括样例查询查看多种类型的AWS服务日志。

CloudWatch Logs Insights自动发现日志字段AWS服务,如Amazon Route 53、AWS Lambda、AWS CloudTrail等Amazon VPC,以及任何发出日志事件的应用程序或自定义日志JSON .

这是一篇关于发送PostgreSQL日志到Cloudwatch的文章:https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.Concepts.PostgreSQL.html

一般步骤如下:

  1. 选择您想要的数据库日志类型(查询失败,死锁,致命错误等)
  2. 设置日志保留
  3. 设置日志旋转
  4. 设置日志目的地
  5. 发送到Cloudwatch

最新更新