以上就是给各位分享如何提高scrapy的下载速度?,其中也会对scrapy速度慢进行解释,同时本文还将给你拓展edge浏览器下载速度慢怎么办?怎么提升edge下载速度?、linux–mmap如何提高文
以上就是给各位分享如何提高scrapy的下载速度?,其中也会对scrapy速度慢进行解释,同时本文还将给你拓展edge浏览器下载速度慢怎么办?怎么提升edge下载速度?、linux – mmap如何提高文件读取速度?、PHP / Javascript:如何限制下载速度?、php如何提高网页加载速度等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:- 如何提高scrapy的下载速度?(scrapy速度慢)
- edge浏览器下载速度慢怎么办?怎么提升edge下载速度?
- linux – mmap如何提高文件读取速度?
- PHP / Javascript:如何限制下载速度?
- php如何提高网页加载速度
如何提高scrapy的下载速度?(scrapy速度慢)
我正在使用scrapy从许多不同的域并行下载页面。我有成千上万的页面可供下载,因此性能非常重要。
不幸的是,当我描述了scrapy的速度时,每秒只能得到几页。确实,平均每秒约2页。以前,我已经编写了自己的多线程spider程序,以每秒执行数百页的工作-我想肯定,scrapy的使用Twisted等等可以实现类似的魔术。
我如何加快刮y速度?我真的很喜欢这个框架,但是这个性能问题对我来说可能是一个难题。
这是settings.py文件的相关部分。我错过了一些重要的设置吗?
LOG_ENABLED = FalseCONCURRENT_REQUESTS = 100CONCURRENT_REQUESTS_PER_IP = 8
一些参数:
- 使用scrapy版本0.14
- 该项目部署在EC2大型实例上,因此应该有足够的内存,CPU和带宽来使用。
- 我正在计划使用JSON协议进行爬网,在任何给定时间使爬网程序充满数十个并发爬网。
- 就像我刚开始所说的那样,我正在从许多站点下载页面,因此不必担心远程服务器性能和CONCURRENT_REQUESTS_PER_IP。
- 目前,我很少进行后期处理。没有xpath; 没有正则表达式;我只是为每个页面保存网址和一些基本统计信息。(一旦我解决了基本的性能问题,这种情况将在以后改变。)
答案1
小编典典我过去曾遇到过这个问题……大部分情况是我用的老技巧解决的。
执行本地缓存DNS。
通常,当你拥有如此高的CPU使用率同时访问远程站点时,这是因为scrapy试图解析URL。
并且,请记住将主机(/etc/resolv.conf)上的dns设置更改为本地缓存DNS服务器。
首先,它会很慢,但是一旦它开始缓存,它就会更有效地解决你将看到的巨大改进。
希望这对你的问题有所帮助!
edge浏览器下载速度慢怎么办?怎么提升edge下载速度?
edge浏览器下载速度慢怎么办?有些用户会在浏览器进行搜索下载,使用edge浏览器下载的时候发现速度非常慢,很浪费时间,那么有没有方法可以提升下载速度呢?针对这一问题,本篇带来了详细的解决方法,分享给大家,一起看看吧。
edge浏览器下载速度慢怎么办?
1、开启edge浏览器,输入网站 about:flags。
2、进行进入后“开发人员设置”。
3、往下拉,启用“容许环境标签页处在低功率模式下”及其“容许限定展现管路以改善电池使用时间。此标示被forcevsyncpaintbeat 锁住为 false”。
4、再次往下拉至“网络”,将“启用tcp快速打开”设置为“自始至终启用”就可以。
linux – mmap如何提高文件读取速度?
与malloc相同大小的内存并手动将整个文件读入malloc区域相比,它有何不同?
解决方法
有关mmap如何在请求分页环境中工作的更全面的讨论,请参阅我的答案:Which segments are affected by a copy-on-write?,因为它还讨论了使用mmap
mmap是execve等程序执行的命脉.人.所以,你可以打赌它很快.作为旁注,具有讽刺意味的是,malloc实际上也使用了匿名mmap.
但是,为了讨论这里,特别要注意mmap与执行malloc和read(2)的文件的“后备存储”(即分页磁盘)
使用mmap,内存区域的后备存储是文件本身.该区域将页面直接映射到内核的文件系统缓冲区页面[它们已经统一了很长时间].因此,与read(2)相比,不需要从内核文件系统缓冲区页面到应用程序页面的[浪费]副本.
当您执行malloc / read时,您仍然拥有上述页面,但是,现在malloc区域在分页/交换磁盘上有一个后备存储.因此,页面缓冲区的数量是mmap的两倍.正如我所提到的,读取完成后必须将数据复制到该区域.
此外,在性能方面,进行大量读取是次优的.块[文件系统相关]中的建议大小约为64 KB.
执行大型读取时,程序在完成之前无法启动.如果文件的大小大于物理内存,系统将读入您的malloc区域,并浪费地将早期页面刷新到分页磁盘,为文件末尾附近的页面腾出空间,直到整个文件为止.读入.
换句话说,当这个大的预读发生时,应用程序正在等待[并且什么都不做].对于[比较] 60 GB的文件,启动时间会很明显.
如果您的文件足够大,您甚至会在分页磁盘上用完空间(即malloc返回NULL).
对于mmap,没有这样的问题.映射文件时,可以立即开始使用它.它将根据需要直接从该区域的后备存储中“故障”[后者再次是文件系统中的文件].而且,如果你有[说] 1 TB文件,mmap处理就好了.
此外,您可以逐页或任何页面范围(包括整个文件)通过madvise(2)和posix_madvise(2)控制映射策略. madvise系统调用是相对轻量级的,因此使用它很好.这是一个提示,但不会延迟应用程序的I / O.如果I / O开始为提示进行预读,那么内核将其作为后台活动完成.
你甚至可以告诉系统很快就需要一个给定的页面[并且系统将其作为预取它的提示]或者你可以告诉系统不再需要该页面[并且系统将释放页面缓冲存储器].
你可以对整个文件说“顺序访问”,这意味着系统会知道自动执行预读,以及不再需要的页面的释放(即如果你当前正在访问页面N,然后系统在Nk之前释放任何页面)
当您执行read(2)时,无法告诉系统不再需要给定的内核FS页面缓冲区.它们会一直徘徊,直到物理RAM填满[或超过给定的限制],这给整个内存系统增加了压力.
实际上,使用read,我已经看到在应用程序移动到文件的不同部分或完全不同的文件之后,用于FS缓冲区的内存量仍然很长.事实上,我已经看到一个I / O密集型应用程序使用如此多的缓冲区,导致无关的[idle]进程将其页面被盗并刷新到分页磁盘.当我停止I / O应用程序时,firefox需要花费几分钟来重新登录并再次响应.
我为常规阅读vs mmap做了一些广泛的基准测试.通过它们,mmap可以提高某些应用程序的速度.
请在此处查看我的答案:read line by line in the most efficient way *platform specific*
在我这样做之前,我对mmap的好处持怀疑态度,但基准测试表明mmap是一个胜利者.
此外,如果您正在读取(2)(针对速度)与fgets,如果给定的行跨越读取缓冲区边界(即缓冲区的最后50个字符),则可能会因缓冲区移位而陷入困境拥有80个char行的前50个字节).
请注意,在此链接页面的评论中,还有另一个指向pastebin的链接到我的基准程序的更高版本,结果太大,无法在上述SO答案中发布基准并比较各种madvise选项
PHP / Javascript:如何限制下载速度?
您可以从我们的服务器下载一些文件.如果您是“普通”用户,则您的带宽有限,例如500kbits.如果您是高级用户,您的带宽没有限制,可以尽快下载.但是我怎么能意识到这一点?
如何上传&合作?
有一个PECL扩展,这使得这是一个非常简单的任务,称为pecl_http,其中包含函数http_throttle
.文档包含一个简单的例子,如何做到这一点.这个扩展还包含a HttpResponse
class,这是没有很好的文档的ATM,但我怀疑使用其setThrottleDelay玩和setBufferSize方法应该产生所需的结果(油门延迟=> 0.001,缓冲区大小20 ==〜20Kb /秒).从事物的外观,这应该是工作:
$download = new HttpResponse(); $download->setFile('yourFile.ext'); $download->setBufferSize(20); $download->setThrottleDelay(.001); //set headers using either the corresponding methods: $download->setContentType('application/octet-stream'); //or the setHeader method $download->setHeader('Content-Length',filesize('yourFile.ext')); $download->send();
如果你不能/不想安装它,你可以写一个简单的循环:
$file = array( 'fname' => 'yourFile.ext','size' => filesize('yourFile.ext') ); header('Content-Type: application/octet-stream'); header('Content-Description: file transfer'); header( sprintf( 'Content-disposition: attachment; filename="%s"',$file['fname'] ) ); header('Content-Length: '. $file['size']); $open = fopen($file['fname'],"rb"); //handle error if (!$fh) while($chunk = fread($fh,2048))//read 2Kb { echo $chunk; usleep(100);//wait 1/10th of a second }
当然,不要缓冲输出,如果你这样做:),最好添加一个set_time_limit(0);声明也.如果文件很大,很可能您的脚本将在下载过程中遇害,因为它会触发最大执行时间.
另一种(也许最好的)方法是通过服务器配置来限制下载速度:
> using NGINX
> using Apache2
> using MS IIS(要么安装比特率调节模块,要么设置最大带宽)
我从来没有限制自己的下载速度,但是看着这些链接,我认为很简单,说Nginx是最简单的:
location ^~ /downloadable/ { limit_rate_after 0m; limit_rate 20k; }
这使得速率限制立即启动,并将其设置为20k.详情可在the nginx wiki找到.
就apache而言,这并不是那么难,但是它需要你启用鼠标模块
LoadModule ratelimit_module modules/mod_ratelimit.so
然后,告诉apache哪个文件应该被限制是一个简单的事情:
<IfModule mod_ratelimit.c> <Location /downloadable> SetoutputFilter RATE_LIMIT SetEnv rate-limit 20 </Location> </IfModule>
php如何提高网页加载速度
这篇文章主要介绍了关于php如何提高网页加载速度,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
1、减少页面请求:
从WEB运行原理上讲,IIS请求是无状态的,在服务器端一直是连接和关闭的不断进行着,如果能减少服务器请求,总的时间将会减少。
之前我下载163邮箱的登陆页面的图片时发现,它们的只用到了一个图片来完成整个页面的所有图片,当时我就纳闷了,这跟平时做的网站不一样呀。然来这样做减少浏览器的请求次数,用httpwatch你会发现请求的总时间大大减少了。同样的想法,在做css样式,javascript代码的时候也要做到尽可能的放在一个文件下来减少WEB请求。
2、页面压缩技术,给我们JS,HTML代码进行瘦身。
立即学习“PHP免费学习笔记(深入)”;
Jquery 作为JS最轻量级的类库,它的原类库是242KB,压缩后的它竟只有91.6KB。 常见的压缩工具有Google Closure Compiler、YUI Compressor、JsPacker、gzip。我常用的是gzip,因为它的压缩率是最高的。用jdk压缩后它会把一些空格去掉,把我们很长的变量名换成换成很短的字母来代替。
3、样式、行为、结构分离。
当第一次访问页面的时候,用户就可以把CSS,JS代码下载下来,这样做虽然第一次使网页加载的速度变慢了,但后面的页面将快很多。当用户访问这个网站的其它的页面时,由于其它页面也引用了这个CSS样式和JS代码。浏览器发现它已经下载好了,下一次就可以不用下载了。这样就做到了一次下载,后续速度的效果。
4、使用存储过程
在运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案。这种已经编译好的过程可极大地改善SQL语句的性能。由于执行SQL语句的大部分工作已经完成,所以存储过程能以极快的速度执行。这种预编译的sql语句就可以直接执行而节省了很大一部分查询的时间。
5、一些细节:
把CSS样式放在头部,如果JS很多的话,把js代码放在尾部。这样做可以尽可能的先加载页面的DOM结构,然后才可以级用户体验。如果JS很多的大的话,页面都没加载完,何来用户体验之说呢。
6、适当的使用AJAX
现在的Ajax好像有点被神话了,好像网页只要Ajax了,那么就不存在效率问题了。其实这是一种误解。拙劣的使用Ajax不会让你的网页效率更高,反而会降低你的网页效率。Ajax的确是个好东西,但是请不要过分的神话它。使用Ajax的时候也要考虑上面的那些准则。
7、尽量少使用样式工具为我们生成的页面样式代码,自己动手把样式写在样式文件里。尽量写得通用些。
8、页面缓存
在大型的门户网站都用到了缓存技术,它是以空间换时间的技术。
缓存主要是为了提高数据的读取速度。因为服务器和应用客户端之间存在着流量的瓶颈,所以读取大容量数据时,使用缓存来直接为客户端服务,可以减少客户端与服务器端的数据交互,从而大大提高二次页面的访问速度的程序的效率。
9、配置网站的实体标签:
这个Etag不是给用户用的,而是给浏览器缓存用的。Etag是服务器告诉浏览器缓存,缓存中的内容是否已经发生变化的一种机制。通过Etag,浏览器就可以知道现在的缓存中的内容是不是最新的,需不需要重新从服务器上重新下载。
10、使用CDN技术。
我们上网下载东西的时候经常会看见什么“南方服务器”、“北方服务器”的就是用到了CDN技术来提高下载速度与稳定性。
CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度(来自百度百科)。
11.使用Gzip压缩文档:
GZIP编码是用来改进网页性能的方法,不仅可以减小存储空间,还可以减少传输所需的时间。将网站中的文件使用Gzip压缩后,可以显著的增加网页加载速度,同时也可以降低网站的带宽流量消耗。
12.样式表文件放在外部调用:
把页面中需要用到的JavaScript和CSS样式表文件放在另外的文件夹中,这样一来在打开网站其它页面时就会缓存这些调用的文件,从而加快网站页面的加载速度。
13.给JavaScript文件减肥:
这个方法不同于gzip压缩功能,缩小JavaScript文档有很多方法,比如去除不必要的空格等其他标签等。减少脚本文件后可以显著的提高网页的访问速度。
14.图片使用height和width属性
每个图片的height和width属性可以让浏览器在加载图片之前就知道图片的长和宽,并预留出指定的长宽待图片加载后显示。如果没有这两个属性,浏览器还需要在读取图片成功后再处理一次页面布局样式,这无疑减慢了网页加载速度。所以在固定图片大小的情况下最好都使用上长和宽属性。
15.CSS文件压缩瘦身
p+CSS是现在流利的网页布局方式,p定义了元素,CSS控制显示效果。所以往往我们会把CSS写到另外一个或多个外部链接CSS文件中,并且CSS文件代码也有很多行。我们可以使用一些CSS压缩工具来删除CSS文件中不必要的多余内容,如重复定义样式、空格等来瘦身。可以尝试使用一下CleanCSS工具来压缩你的CSS文件。
16.整合CSS、JS文件减少HTTP请求次数
现在的网页都有多个图片、CSS外部文件链接、Javascript外部脚本链接。所以当访问一个网页时浏览器需要多次向服务器请求这些文件。在请求和加载之间会产生不少的时间差。特别是一些网页上有多个小图片、图标按钮的网页,有多少图片,浏览器就需要请求多少将这些小文件,多将请求这些小图片文件将明显影响网页的加载速度。所以我们应该尽可能将小图片拼合一个PNG大图片上,然后通过坐标来显示图标。一次请求一个大图片比多次请求小图片速度要快不少。同样,最好将CSS和Javascript尽可能地整合到一个文件中都有助于加快网页载入速度。
17.目录地址后加上斜杠(/)
如访客点击访问这样一个目录地址:http://www.3haojob.com,去打开这个目录下的index.html文档。当服务器收到请求后它需要消耗一些时间来分析这是一个文件还是一个目录。但是如果我们在最后加上一个斜杠(/),服务器就知道你是在访问一个目录地址,然后就直接加载默认文档index.html或index.php就行了。这样服务器就不用花时间来分析这个地址,也起到了一定加速的作用。劳务派遣
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
如何实现php中模拟多继承
以上就是php如何提高网页加载速度的详细内容,更多请关注php中文网其它相关文章!
我们今天的关于如何提高scrapy的下载速度?和scrapy速度慢的分享已经告一段落,感谢您的关注,如果您想了解更多关于edge浏览器下载速度慢怎么办?怎么提升edge下载速度?、linux – mmap如何提高文件读取速度?、PHP / Javascript:如何限制下载速度?、php如何提高网页加载速度的相关信息,请在本站查询。
本文标签: