我们有一个用例根据给定的时间间隔生成数据。通过一个请求,我们将从不同的组织获取相同的数据。
在生成数据的过程中,postgres数据库上有大量的查询,即70-80多个查询,在处理完数据后,我们返回数据。
一切都是用scala实现的。但这是给时间,所以我已经增加到5分钟。
post {
pathPrefix("reporting") {
path("data") {
withRequestTimeout(300.seconds) {
//code
}
}
Response: [akka.actor.ActorSystemImpl(inbox-reporting)] Request timeout encountered for request [POST /reporting/data Strict(123 bytes)]
即使在5分钟之后,它也会在请求的2-3分钟内给出信息请求超时,然后就不会返回任何数据。300时间也不是一个可扩展的解决方案,因为生产中将有更多的数据。
有什么方法可以在同一个日期处理如此大的数据而不延迟?
任何帮助都将不胜感激。谢谢
1条答案
按热度按时间oxosxuxt1#
如果请求超时,那么代码将花费太长时间来生成答案,因此问题是数据库代码而不是这个http代码。
您需要在代码中添加更详细的计时,以了解为什么处理请求需要这么长时间。这将帮助您了解这是简单的过载问题,还是针对特定请求类的更具体问题。
我使用这样的代码来 Package 代码的不同部分:
用法:
如果问题是过载,那么您需要在更上游的地方加入一些速率调整,而不是在部分完成请求上浪费时间。