首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >面向海量用户的Cron作业管理

面向海量用户的Cron作业管理
EN

Stack Overflow用户
提问于 2013-03-18 18:50:10
回答 1查看 242关注 0票数 1

我有一个像backupify这样的服务。它从不同的社交媒体平台下载数据,目前我有大约2500个活跃用户,为每个用户运行一个脚本,从facebook获取数据并将其存储在亚马逊S3上,我的服务器是亚马逊网络服务上的Ec2实例。

我在表格中有类似facebook用户的900个条目,有一个PHP脚本运行并从数据库表中获取用户,然后从facebook备份数据,然后从facebook中挑选下一个用户。

当我有不到1000个用户时,一切都很好,但现在我有超过2500个用户,问题是PHP脚本暂停,或运行前100个用户,然后暂停,超时等。我正在运行PHP脚本的php -q myscript.php命令。

另一个问题是,单用户脚本需要大约65秒才能到达数据库表中的最后一个用户,这可能需要几天的时间,那么在数据库表上并行运行的最佳方式是什么?

请建议我什么是最好的方式来备份大量的数据为大量的用户,我应该能够监测cron,有点像一个管理员。

EN

回答 1

Stack Overflow用户

发布于 2013-03-18 19:22:39

如果我没弄错的话,您有一个针对所有用户的cron任务,以一定的频率运行,试图在单个快照中处理每个用户的数据。

  1. 你有没有尝试在代码一开始就执行set_time_limit(0);
  2. 另外,如果任务对资源要求很高,你有没有考虑过为每N个用户创建一个单独的cron任务(基本上是模仿多线程的行为;从而利用服务器的多个CPU核心)?
  3. 正在将你的数据写入某种cache而不是数据库,并让一个单独的任务将缓存内容提交到数据库中,这对你来说是可行的吗?
  4. 你有机会使用内存中的数据表(这是相当快的)吗?您需要时不时地将数据库内容持久化到磁盘上,但以这个价格,您可以快速访问数据库。
  5. 您是否可以将任务外包给单独的服务器作为分布式服务,并为它们编写cron脚本作为负载均衡器?
  6. 优化您的代码也可能会有所帮助。例如(如果您还没有这样做),您可以在脚本末尾的单个事务中缓冲收集的数据并提交,这样执行流就不会因数据库重复出现的I/O阻塞而分散。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15475019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档