北大青鸟小游网:值得大家信赖的游戏下载站!

微信:96kaifa
关注我们
所在位置:首页 > 服务器 > Python3.5多线程爬虫越爬越慢的解决方法

Python3.5多线程爬虫越爬越慢的解决方法

发布时间:2021-06-30 11:26:58来源:北大青鸟手游网作者:北大青鸟手游网

O
O
  • 游戏类别:角色扮演
  • 游戏大小:
  • 游戏语言:
  • 游戏版本:
点击查看
扫码查看

系统环境

Ubuntu 16.04 Server
Python3.5

爬虫情况

1、从Mysql数据库获取任务
2、任务导入列表后开始http请求,将数据以文件形式保存到硬盘
3、开80线程

遇到的问题

1、家用路由器频繁死机(一天两三次)
2、爬虫开始时爬取速度很快,但是越来越慢

解决思路

查看爬虫日志发现路由器死机前,爬虫速度基本都在峰值,看来是路由器是累晕的,爬虫开始时速度快然后越来越慢,说明爬虫本身问题不大,应该是运行后消耗的系统资源越来越多,直到消耗殆尽而导致速度上不去。查看内存和cpu的消耗情况发现,在爬虫速度降低之后内存cpu的占用也有降低,看来问题不在硬件资源,那是不是网络资源内,使用netstat命令查看发现有大量“TIME_WAIT”状态的TCP连接,使用命令

netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’

查看发现TIME_WAIT状态的连接近2w,看来是资源tcp连接过多!此时想是不是爬虫http头部信息中Connection的问题呢,把Keep-Alive改为close并未解决问题!那Ubuntu有没有设置tcp连接控制方面的选项呢?通过搜索得知,tcp连接可以设置回收时间和是否可以复用,命令如下:

echo “1” > /proc/sys/net/ipv4/tcp_tw_reuse
#设置TIME_WAIT状态可以重用
echo “1” > /proc/sys/net/ipv4/tcp_tw_recycle
#设置TCP连接尽快回收

使用以上命令后问题果然解决!


我要评价

  • 热门资讯
  • 最新资讯
  • 手游排行榜
  • 手游新品榜