我们希望升级基于PHP的AWS队列工作者体系结构,因为我们每天都在处理10M+作业,而且基础设施越来越昂贵。
我们的作业几乎不使用任何内存,但是由于HTTP响应缓慢,每个作业可以运行5-10秒。
是否有人推荐支持同时在同一台机器上运行数十个工人的语言、方法或工具,或者可以非常高效地同时执行数十个作业?
非常感谢!
发布于 2016-09-24 08:51:55
如果瓶颈在HTTP请求中,则应考虑使用node.js。它使您的代码编程非常容易,因此它异步运行。我假设在您当前的实现中,HTTP请求阻塞了CPU线程。这是效率低下的,因为CPU在等待请求完成时可以执行其他操作,然后可以解析结果。这在node.js和优秀的异步库中几乎是微不足道的。
异步实现可以使程序的速度提高10到100倍,甚至更快。特别是当“等待HTTP请求”比实际计算花费更多时间的时候。使用一组微型或nano实例,node.js (或一般的javascript )是一种单线程语言,因此通常不需要多个内核。
另一种方法是将SNS服务附加到SQS,并设置一个解析票证的Lambda函数。有关拉姆达中的介绍,请参阅此页面。也许你有高峰和低谷,那么这种方法应该更有成本效益。当负载均匀分布时,AWS比EC2更昂贵。
发布于 2016-09-24 09:55:48
我运行过类似的系统,在多台机器上使用了30到200多个基于PHP的工作人员的副本。我是从Supervisord开始的,在那里有一个“numprocs”配置,说明要启动多少个特定的程序。您可以有几个这样的配置组。
在成本优化方面,考虑“现场实例”以降低每台机器每小时的价格。为了使每个系统尽可能快地运行,您需要确保它们是预先安装好的,并且安装了它们所需的所有软件和配置。
https://stackoverflow.com/questions/39671757
复制相似问题