Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。












想要改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。

3年前关闭。



Improve this question




我有一个搜寻器,可以在几个不同的域中搜寻新的帖子/内容。内容的总量为数十万页,并且每天都会添加很多新内容。因此,为了能够浏览所有这些内容,我需要我的搜寻器以24/7进行搜寻。

目前,我将搜寻器脚本托管在与搜寻器向其添加内容的站点所在的服务器相同的服务器上,并且我只能在夜间运行cronjob来运行脚​​本,因为当我这样做时,该网站基本上会停止工作,因为脚本的加载。换句话说,这是一个非常糟糕的解决方案。

因此,基本上,我想知道这种解决方案的最佳选择是什么?
  • 是否可以从同一主机上继续运行搜寻器,但是以某种方式平衡负载,以使脚本不会杀死该网站?
  • 我要寻找哪种主机/服务器来托管搜寻器?除了普通的虚拟主机之外,我还需要其他规范吗?
  • 搜寻器保存其搜寻的图像。如果我将搜寻器托管在辅助服务器上,如何将镜像保存在站点服务器上?我想我不希望CHMOD 777出现在我的上载文件夹中,并允许任何人将文件放在我的服务器上。
  • 最佳答案

    我决定选择Amazon Web Services来托管我的搜寻器,它们既具有队列的SQS,又具有自动可扩展实例。它还有S3,我可以在其中存储所有图像。

    我还决定将我的整个搜寻器重写为Python而不是PHP,以便更轻松地利用诸如队列之类的优势,并使应用程序100%的时间运行,而不是使用cronjobs。

    所以我做了什么,这意味着什么

  • 我为我的搜寻器设置了一个Elastic Beanstalk应用程序,该应用程序设置为“Worker”,并收听SQS,其中存储了所有需要搜寻的域。 SQS是一个“队列”,我可以在其中保存需要爬网的每个域,爬网程序将监听队列并一次获取一个域,直到队列完成。不需要“cronjobs”或类似的东西,只要队列将数据放入其中,它将立即将其发送到搜寻器。这意味着爬虫在24/7的时间中占100%的时间。
  • 该应用程序设置为自动缩放,这意味着当我在队列中有太多域时,它将设置第二,第三,第四等实例/爬网程序以加速该过程。对于任何想设置搜寻器的人,我认为这是非常非常重要的一点。
  • 所有图像都保存在S3实例上。这意味着图像不会保存在搜寻器的服务器上,并且可以轻松获取和使用。

  • 结果非常好。当我每15分钟在cronjobs上运行一个PHP Crawler时,我每小时可以抓取约600个URL。现在,我可以毫无问题地每小时抓取1万多个url,甚至更多,这取决于我设置自动缩放比例的方式。

    10-08 11:41