Php EC2比共享主机慢?

Php EC2比共享主机慢?,php,amazon-ec2,Php,Amazon Ec2,我用php构建了一个应用程序,其中一个功能分析了大约10000个文本文件,并从中提取内容,然后将其放入mysql数据库。代码本身只是一个for循环,每个文件都是通过file\u get\u contents()加载的,迭代结束后,它的unset()将从内存中加载。文件分析是一个cron任务,一个php文件完成所有这些处理 然而,问题是,该应用程序(最初)完全构建在共享服务器上,所有功能都能无缝运行,非常好。我没有注意到任何延迟或重大延迟,用户也没有。然而,为了让它能够处理更多的负载,我将所有内容

我用php构建了一个应用程序,其中一个功能分析了大约10000个文本文件,并从中提取内容,然后将其放入mysql数据库。代码本身只是一个for循环,每个文件都是通过
file\u get\u contents()
加载的,迭代结束后,它的
unset()
将从内存中加载。文件分析是一个cron任务,一个php文件完成所有这些处理

然而,问题是,该应用程序(最初)完全构建在共享服务器上,所有功能都能无缝运行,非常好。我没有注意到任何延迟或重大延迟,用户也没有。然而,为了让它能够处理更多的负载,我将所有内容都移动到EC2服务器(微实例)

我现在遇到的问题是,每次运行cronjob(每小时处理一次文件)时,整个服务器的速度都会降低,以至于加载一个正常页面需要5-8秒,这有点违背了将其移动到EC2的目的

cron本身是一个非常长的过程。以下是脚本过程的一些测试结果(每小时)

但是,与共享服务器相比,尽管有更多专用硬件加速(至少我认为是这样),但服务器每小时的速度都会减慢7分钟。EC2仪表板的图表显示CPU使用率接近100%,但我不明白它是如何达到这个水平的

有谁能帮我确定发生这种情况的原因吗?当cron在共享服务器上运行时,我甚至没有注意到一点延迟,但对于EC2来说情况完全不同


请随时问我任何我没有提到的问题。

微实例非常慢。如果使用更大的实例,它将运行得更快

我们所有的生产箱都使用EC2。关于这个平台,我说的太多了。我再也不会回到别的主人那里了

也可以,如果你想用C++编写代码,它运行速度会更快。我用这段代码编写了一个简单的mysql插件。它是多线程的,因此您可以异步运行mysql更新或插入

如果您需要任何帮助,请告诉我,但我相信您仍然可以使用micro实例并获得很高的速度

希望这有助于


我愿意帮助你编写一个C++版本供你使用。只是因为它很有趣!:-)

油井EC2设计为可扩展

由于您的代码在一个循环中运行,以逐个打开每个文件,因此这不利于可伸缩设计


尝试更改代码以将其分解,以便由php脚本的不同实例同时处理文件。这样,脚本的每个副本都可以自己在线程中运行。如果您有多台服务器(或EC2中的服务器实例),您可以在不同的机器上运行它们,以进一步提高速度。

Oh。。。还有一件事:确保服务器上安装了APC。那也会有很大的不同。谢谢你的评论!我同意,如果编译它会快得多,但问题是一些文本文件中有HTML,PHP有非常好的DOM解析器库可用。移植所有这些将是非常乏味的。让我安装apc,看看这是否会有所不同!您好,这很有意义,我可以在对文件进行分类后将代码拆分并分析文件,但阻止我这样做的是,脚本本身占用了613MB实例的12MB或RAM(我知道不是所有的都可用),并且在共享主机上绝对没有问题。所以在我花费翻倍之前,我想看看是否有人知道这样的事情是不是一个问题。我不是EC2方面的专家,所以如果我错了,请纠正我。。。EC2将所有服务器作为虚拟服务器运行,因此对硬件的访问是虚拟化的。这意味着磁盘访问可能会慢一点?我不确定这一点,但我理解你的意思。我将通过使用apc和memcached来改进代码,看看它是否降低了CPU使用率。
SQL Insertion Time: 23.138303995132 seconds
Memory Used: 10.05 MB
Execution: 411.00507092476 seconds