在AWS上并行调用Bash的PHP程序很慢

时间:2018-04-02 10:55:00

标签: amazon-web-services

我在AWS上有一个PHP存储库。当我并行运行脚本时(同一脚本的多个实例使用不同的数据但对它们执行相同的计算),它运行速度比在我的计算机上运行时慢3-4倍。

为了测试这一点,我创建了一个玩具示例,我在我的AWS服务器(8个CPU,16 GB RAM; 2x.large)和我的计算机上运行了相同的配置。

我在PHP中使用shell_exec编译一个简单的Java程序,并在编译之前和之后将时间戳转储到文件中,以跟踪所花费的时间。

Rosetta Code获取Java程序,并生成8个源文件副本。其他文件是:

compile1.sh

javac HoughTransform1.java

compile2.sh

javac HoughTransform2.java

(等等到compile8.sh)

run_compile.php

<?php
$daemonId = $argv[1];
$output = shell_exec("date");
file_put_contents("daemon-$daemonId.log", trim($output) . ": daemon $daemonId started\n", FILE_APPEND);
for ($i = 1; $i <= 100; $i++) {
    $output = shell_exec("date");
    file_put_contents("daemon-$daemonId.log", trim($output) . ": Compile $i Started\n", FILE_APPEND);
    exec("./compile" . $daemonId . ".sh", $out, $exit);
    $output = shell_exec("date");
    file_put_contents("daemon-$daemonId.log", trim($output) . ": Compile $i Finished\n", FILE_APPEND);

}
?>

runall.sh

nohup php run_compile.php 1 &
nohup php run_compile.php 2 &
nohup php run_compile.php 3 &
nohup php run_compile.php 4 &
nohup php run_compile.php 5 &
nohup php run_compile.php 6 &
nohup php run_compile.php 7 &
nohup php run_compile.php 8 &

我在生成的日志中注意到,编译需要大约2-4秒。下面是第一个过程写的日志示例:

Mon Apr  2 14:45:29 IST 2018: daemon 1 started
Mon Apr  2 14:45:29 IST 2018: Compile 1 Started
Mon Apr  2 14:45:31 IST 2018: Compile 1 Finished
Mon Apr  2 14:45:31 IST 2018: Compile 2 Started
Mon Apr  2 14:45:34 IST 2018: Compile 2 Finished
Mon Apr  2 14:45:34 IST 2018: Compile 3 Started
Mon Apr  2 14:45:36 IST 2018: Compile 3 Finished
Mon Apr  2 14:45:36 IST 2018: Compile 4 Started
Mon Apr  2 14:45:39 IST 2018: Compile 4 Finished
Mon Apr  2 14:45:39 IST 2018: Compile 5 Started
Mon Apr  2 14:45:41 IST 2018: Compile 5 Finished
Mon Apr  2 14:45:41 IST 2018: Compile 6 Started
Mon Apr  2 14:45:43 IST 2018: Compile 6 Finished
Mon Apr  2 14:45:43 IST 2018: Compile 7 Started
Mon Apr  2 14:45:46 IST 2018: Compile 7 Finished
Mon Apr  2 14:45:46 IST 2018: Compile 8 Started
Mon Apr  2 14:45:48 IST 2018: Compile 8 Finished
Mon Apr  2 14:45:48 IST 2018: Compile 9 Started
Mon Apr  2 14:45:50 IST 2018: Compile 9 Finished
Mon Apr  2 14:45:50 IST 2018: Compile 10 Started
Mon Apr  2 14:45:53 IST 2018: Compile 10 Finished

AWS上的所有流程都存在延迟。 但是,当我在自己的计算机上运行时,运行速度更快

Mon Apr  2 16:16:49 IST 2018: daemon 1 started
Mon Apr  2 16:16:49 IST 2018: Compile 1 Started
Mon Apr  2 16:16:50 IST 2018: Compile 1 Finished
Mon Apr  2 16:16:50 IST 2018: Compile 2 Started
Mon Apr  2 16:16:51 IST 2018: Compile 2 Finished
Mon Apr  2 16:16:51 IST 2018: Compile 3 Started
Mon Apr  2 16:16:52 IST 2018: Compile 3 Finished
Mon Apr  2 16:16:52 IST 2018: Compile 4 Started
Mon Apr  2 16:16:53 IST 2018: Compile 4 Finished
Mon Apr  2 16:16:53 IST 2018: Compile 5 Started
Mon Apr  2 16:16:54 IST 2018: Compile 5 Finished
Mon Apr  2 16:16:54 IST 2018: Compile 6 Started
Mon Apr  2 16:16:55 IST 2018: Compile 6 Finished
Mon Apr  2 16:16:55 IST 2018: Compile 7 Started
Mon Apr  2 16:16:55 IST 2018: Compile 7 Finished
Mon Apr  2 16:16:55 IST 2018: Compile 8 Started
Mon Apr  2 16:16:56 IST 2018: Compile 8 Finished
Mon Apr  2 16:16:56 IST 2018: Compile 9 Started
Mon Apr  2 16:16:57 IST 2018: Compile 9 Finished
Mon Apr  2 16:16:57 IST 2018: Compile 10 Started
Mon Apr  2 16:16:58 IST 2018: Compile 10 Finished

我查看过之前发布的问题 Why amazon EC2 is as slow as my machine when running python code?

Serial program runs slower with multiple instances or in parallel

但它没有任何帮助。

问题是什么?如何解决?

0 个答案:

没有答案