Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
运行多个php CLI的最快方法是什么?_Php_Command Line Interface - Fatal编程技术网

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

运行多个php CLI的最快方法是什么?,php,command-line-interface,Php,Command Line Interface,我需要将大量mysql行移动到couchbase服务器。问题是我需要使用一个PHP类来完成该类具有业务逻辑的工作 我创建了一个PHPCLI脚本,并一次运行了6个。它比运行单个CLI脚本快,但还不够。我花了两个小时才把所有东西都转移过来 还有更好的办法吗 更新: PHP代码对Mysql做了什么 从表格limit$limit中选择* 就这样。没什么特别的 还有更好的办法吗 对。很可能是这样 您需要确定瓶颈。从您的描述来看,瓶颈似乎是并行运行的作业数。因此,您应该增加该值,直到找到最大性能。GNUpa

我需要将大量mysql行移动到couchbase服务器。问题是我需要使用一个PHP类来完成该类具有业务逻辑的工作

我创建了一个PHPCLI脚本,并一次运行了6个。它比运行单个CLI脚本快,但还不够。我花了两个小时才把所有东西都转移过来

还有更好的办法吗

更新:

PHP代码对Mysql做了什么

从表格limit$limit中选择* 就这样。没什么特别的

还有更好的办法吗

对。很可能是这样

您需要确定瓶颈。从您的描述来看,瓶颈似乎是并行运行的作业数。因此,您应该增加该值,直到找到最大性能。GNUparallel通常可以帮助您做到这一点

当你做到这一点时,瓶颈就在别处。但由于你的描述很少有细节,所以不可能知道在哪里

因此,您必须找到新的瓶颈。瓶颈通常是磁盘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端口53,查看是否快速回答了问题。在运行作业所涉及的所有计算机上执行此操作


寻找共享锁更难。您必须首先找到可疑的进程,然后对这些进程进行扫描。

MySQL服务器可能是瓶颈。正如@Barmar所说。您可以使用或之类的方法来加速更多进程,但我敢打赌,您将在I/O的早期就结束。@Barmar//我不这么认为。我只使用select语句来选择行。差不多了,是吗?它们都必须由同一个mysqld服务器进程进行处理,并且它们都将进入同一个数据库文件。只需运行更多的PHP脚本。