我在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
但它没有任何帮助。
问题是什么?如何解决?