gpt4 book ai didi

java - 长期运行的统计过程 - 关于语言选择的想法?

转载 作者:行者123 更新时间:2023-11-30 05:13:10 24 4
gpt4 key购买 nike

我正在使用LAMP我正在管理的网站的堆栈。需要汇总使用情况统计信息(与我们的桌面产品相关的各种信息)。

我最初使用 PHP 解决了这个问题(因为我已经有很多类可以处理数据)。在我使用 5.3 的开发盒上一切运行良好。

长话短说,5.1 内存管理似乎更糟糕,我不得不做很多傻事才能让长期汇总脚本在固定内存空间中运行。我们的服务器人员目前不愿意升级 PHP。我已经将我的开发服务器移回到 5.1,这样我就不会再遇到这个问题了。

对于挖掘 MySQL 数据库以汇总不同时期和分辨率的统计信息,可能会运行一个在将来一直执行此操作的进程(而不是按照 cron 计划),您建议选择哪种语言?我正在研究Python(我或多或少了解它)、Java(不太了解它),或者坚持使用PHP(非常了解它)。

<小时/>

编辑:为评论者提供设计说明

解决方案:汇总脚本当前的工作方式是我有一些用于定义分辨率和存储桶的类。我有年、月、周、日——给定一个“桶号”,每个类给出一个开始和结束时间戳,定义该桶的时间范围——这是基于任意纪元日期。系统维护“完整”记录,即,它将完成自上次运行以来每个分辨率的汇总数据集。

SQL Strat:基本统计信息位于许多不同的模式和表中。大多数情况下,我对每个汇总统计数据进行单独查询,然后填充一条记录以进行插入。您建议使用嵌套子查询,例如:

插入rolled_up_stats(someval,someval,someval,...)值(从someschema中选择SUM(somestat),从someschema2中选择AVG(somestat2))

那些子查询会生成临时表,对吧?我的经验是,过去进展缓慢得像糖蜜一样。这是更好的方法吗?

编辑 2:向问题添加一些内联响应

在 5.1 php 中,语言是一个瓶颈——我基本上被告知我做出了错误的语言选择(尽管脚本在 5.3 上运行良好)。你提到了 python,我正在检查它来完成这个任务。需要明确的是,我正在做的是提供一个桌面产品使用统计的管理工具(日志实际上是由EJB服务器写入mysql表)。我进行 apache 日志文件分析,以及在 Web 端进行更多自定义 Web 报告,但这个项目是独立的。到目前为止我采取的方法是聚合表。我不确定这些消息队列产品能为我做什么,我会看看。

更进一步——数据被用来绘制服务和客户级别随时间变化的 Activity 图表,以便管理层了解产品的使用情况。您可以选择一个时间段(4 月 1 日至 4 月 10 日),并根据所选时间段以不同粒度(小时、天、月等)检索特定功能的总使用分钟数图表。它本质上是对使用情况的事后分析。然而,需求似乎倾向于实时(查看最后一小时的使用情况)

最佳答案

解决这个问题有很多不同的方法,这里提到了其中一些,但是您对汇总后的数据做什么还不清楚......?

如果您想利用这些数据在您的网站上提供类似于 digg 的“X diggs”按钮,或者摘要图表或类似需要在某种持续基础上可用的内容,您实际上可以利用内存缓存来实现此目的,并让您的代码通过在适当的时间递增特定统计信息的缓存键来使其保持最新。

您还可以将聚合表保留在数据库中,这可以很好地用于更复杂的报告。在这种情况下,根据您拥有的数据量和您的需求,您可能可以使用每小时表,然后根据该基表创建 View 来表示天、周等。

如果您有大量数据,并且需要聚合表,则应该考虑将统计信息收集(也许还有数据库查询本身)卸载到 RabbitMQ 或 ActiveMQ 等队列。在队列的另一边放置一个消费者守护进程,它一直运行并根据需要更新数据库(也许还有缓存)中的内容。

您可能还需要考虑的一件事是网络服务器的日志。我见过一些实例,在对配置中的日志格式规则进行细微调整后,我就能够从 Web 服务器日志本身获取大部分所需的统计信息。您可以每隔 滚动一次日志,然后开始离线处理它们,并将结果记录在报告数据库中。

我已经用 Python 完成了所有这些事情(我发布了 loghetti 用于处理 Apache 组合格式日志,特别是),尽管我不认为语言是这里的限制因素或瓶颈。 Ruby、Perl、Java、Scala 甚至 awk(在某些情况下)都可以使用。

关于java - 长期运行的统计过程 - 关于语言选择的想法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2647905/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com