Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.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
Ruby on rails 有什么办法可以提高这里的绩效吗?_Ruby On Rails_Ruby_Performance_Background - Fatal编程技术网

Ruby on rails 有什么办法可以提高这里的绩效吗?

Ruby on rails 有什么办法可以提高这里的绩效吗?,ruby-on-rails,ruby,performance,background,Ruby On Rails,Ruby,Performance,Background,首先,如果您通读了我的问题描述,并认为我没有提供足够的信息,请让我知道,并告知我哪些信息有助于提供: 我正在使用一个“无头”Webkit引擎,在每个web请求中动态生成十个网站的较大图像。我目前正在使用Ruby线程并行运行这些进程(每个“进程”都是为单个网站生成一个映像,因此我为每个web请求运行10个线程)。然而,即使这样做,在我的本地Webrick服务器上,一个请求(包含并行运行的十个线程)往往会占用多达两分钟的时间,这是用户无法接受的 我肯定会将这些过程转移到后台任务中,然后用图像用AJA

首先,如果您通读了我的问题描述,并认为我没有提供足够的信息,请让我知道,并告知我哪些信息有助于提供:

我正在使用一个“无头”Webkit引擎,在每个web请求中动态生成十个网站的较大图像。我目前正在使用Ruby线程并行运行这些进程(每个“进程”都是为单个网站生成一个映像,因此我为每个web请求运行10个线程)。然而,即使这样做,在我的本地Webrick服务器上,一个请求(包含并行运行的十个线程)往往会占用多达两分钟的时间,这是用户无法接受的

我肯定会将这些过程转移到后台任务中,然后用图像用AJAX更新页面,这样就不会占用web请求,从而使用户体验更好。但是,我不认为从线程切换到后台任务(我正在考虑使用Resque)实际上会缩短生成和显示图像所需的时间(我相信Resque可以并行运行其任务,这样我就不需要线程了?)


所以我的问题是,如何才能更快地生成和显示这些图像?如果您能给我一些建议,从在什么服务器或环境上运行到使用什么工具,我将不胜感激。我目前使用的任何东西都与我无关。

没有足够的信息来提出任何可靠的建议,但是:

我目前正在使用Ruby线程并行运行这些进程


你在这里称之为“过程”是什么?一起检索十个网站,还是分别检索这十个网站?如果您并行执行这十个请求,这将比并行运行的十个组快,但这十个请求在每个组中串行运行。

每个进程都是检索一个网站,因此我为这十个网站中的每一个运行一个线程。我可以提供哪些信息,以便人们提出更好的建议?您是否为每个图像创建了一个新的phantomjs实例?您是否尝试过旋转一个,然后依次处理请求?您是否分析了phantomjs代码以找出哪一位花费了时间?图像有多大?是的,我正在为每个图像启动一个新实例。我还没有试着把一个旋转起来并连续处理它们,但这是一个非常可靠的想法。我还没有分析phantomjs代码,也不知道如何分析。图像是600x1200像素10个网站每次都不同吗?您能否缓存生成的图像以避免每次请求生成图像?@cam是的,每次的网站都会有所不同。我已经将映像文件写入文件系统并检查它是否在那里。如果它在那里,我就提供它,而不是启动phantomjs。你做过任何分析来看看瓶颈在哪里吗?