擅长:python、mysql、java
<p>@Nathaniel回答了大部分问题,但我要补充一点“其他选择”:</p>
<p>如果从源代码的角度来看,您可以并行运行多于四个的报告(您只需将它们限制为4个,这是因为CPU利用率不是因为HTTP服务无法处理更高的负载),那么我肯定可以说您可以做更多的事情:</p>
<ol>
<li><p>重写报表以使用<a href="https://stackoverflow.com/questions/14245989/python-requests-non-blocking">async IO</a>,这样就可以利用HTTP请求被阻止的时间。这可以提高吞吐量。</p></li>
<li><p>获取一个具有更多CPU的实例,并使用更多线程运行脚本。对于您正在执行的任务,我认为您至少可以使用CPU*4个线程运行,可能会更多—监视CPU利用率并增加线程数,直到您获得良好的用户CPU利用率。</p></li>
<li><p>执行自集群-将脚本放在实例启动时运行,并在没有作业完成时终止实例,使用现货价格创建一些实例,并观察它们执行任务</p></li>
<li><p>如果您不介意切换语言,您可以使用显式集群和基于消息的调度—如Akka或Storm。</p></li>
</ol>