什么是运行多个php CLI的最快方法?

时间:2015-05-11 23:55:05

标签: php command-line-interface

我需要将很多mysql行移到couchbase服务器上。问题是我需要使用PHP类来完成工作(该类具有业务逻辑)

我已经创建了一个PHP ClI脚本,并立即运行了6个脚本。它比运行单个CLI脚本更快,但还不够。我花了2个小时来转移所有东西。

还有更好的方法吗?

已更新:

PHP代码用Mysql做什么

  1. 从表格限制$ limit
  2. 中选择*

    关于它。没什么好看的。

1 个答案:

答案 0 :(得分:1)

  

还有更好的方法吗?

是。最有可能的是。

您需要确定瓶颈。根据您的描述,似乎瓶颈是并行运行的作业数量。所以你应该增加它,直到你找到最大的性能。 GNU Parallel通常可以帮助你做到这一点。

当你这样做时,瓶颈就在其他地方。但由于你的描述细节很少,所以不可能分辨出来。

因此,您必须找到新的瓶颈。瓶颈通常是磁盘I / O,网络I / O或CPU,但也可以是共享锁或其他资源。

要查找CPU瓶颈,请运行top。如果您看到一个进程以100%运行而且您无法并行化此过程,那么您就找到了瓶颈。

要查找磁盘I / O瓶颈,请运行iostat -dkx 1。如果最后一列超过50%的时间达到100%,那么你就找到了瓶颈。

要查找网络I / O瓶颈,请运行iotop。如果使用的带宽是> 70%的可用网络带宽,你找到了瓶颈。

一个特殊的网络问题是DNS:这通常被视为一个过程,由于没有充分的理由而被卡住了5-10秒,但是否则运行得很好。使用tcpdump -s1000 -n port 53查看问题是否得到快速回答。在运行作业所涉及的所有机器上执行此操作。

寻找共享锁更难。您首先必须找到可疑流程,然后您必须strace这些。