加载大量数据-耗尽了允许的内存大小

我有连接到Rabbit的JAVA Spring Boot应用程序(我将其称为A1)。 A1接收数据并将其保存到数据库(MySql)(我将其称为数据库DB1)。您可以想象此数据是足球与适当的市场和结果的匹配。我们正在通过A1应用接收接下来10天的数据,数据存储在数据库中。

还有一件值得一提的事情是,每场足球比赛都有4个市场,每个市场都有7个结果。

我将解释DB1的外观。除了其他表外,还有3个表(匹配,市场,结果)值得一提。它们之间的关联方式为:匹配1 ..... * marketsmarkets 1 ..... *结果 通过A1接收的数据正在不断更新(从当前时刻开始到2小时,每秒都会收到有关足球赛事的一些更新)。 还有另一个PHP Symfony应用程序(我称它为S1)。该应用程序用作REST API。

还有一个前端应用程序(我将其称为F1)正在通过HTTP与S1通信,以便从数据库中检索数据。 F1应用程序正在向S1发送HTTP请求以检索此数据(与市场和结果匹配),但日期时间范围是从当前时刻起加上7天(业务要求)。

将HTTP请求发送到S1时发生错误,因为有超过1万场足球比赛以及投注和结果。

  

PHP致命错误:允许的内存大小为134217728字节(已尝试分配20480字节)。

为了解决这个问题,我正在考虑两种选择,如果我的选择都不足够好,请告诉我一些解决我问题的方法。

  1. 选项-F1每天进行迭代,并异步向S1发送7个HTTP请求,以便检索所有7天的数据。
  2. 选项-F1向S1发送HTTP请求。 S1仅返回今天的数据,接下来的6天每天都使用https://pusher.com/或类似的东西通过套接字进行迭代发送。

还有一点要强调的是,我们计算的HTTP数量是每秒两个,并且这个数字会不断增长。

whui0919 回答:加载大量数据-耗尽了允许的内存大小

10K比赛会变成134 MB的数据吗?您为每条记录使用的内存超过13K ...您可能正在尝试使数据结构过于单一,将比赛/博彩/等上的元数据复制到单个统一记录中。尝试使您的对象分层,让匹配项下注而不是单行对象。

如果没有,那么您在处理我们无法远程诊断的数据时效率低下。

如果您在服务器端进行更多处理而不是通过有线发送原始数据,您会做得更好。您可以在S1的内部中回答更多的问题,而不是将数据发送给客户端,则您必须发送的数据就更少。

本文链接:https://www.f2er.com/3111062.html

大家都在问