缘由
最核心的部分我打算不写在博客里,因为不想让对方网站知道。
这次时间拖得有点长。完成的任务主要是写了一个爬虫,能够爬某个音乐网站的MP3格式音频,还有一个xml文档对这首歌作说明。已经爬了几万首歌了,目前一台电脑大概每天6000首歌。当然很是有优化的可能性,因为按带宽来算,2秒一首歌、30*60*24 = 43200。那么一天的极限是43200。但是由于代理不问题的情况,很多时候都会失败。所以现在每天可能才7000-8000首。前期实验期间程序不太稳定,所以下载的歌曲有些不太完整。其实这篇博客不太好写。所以我只能从每天的记录中零零碎碎的找写值得记录的问题。
瓶颈
我经常以为多开线程效果就会好很多,然而我总是错误的判断了瓶颈的所在。曾经我在研究推荐系统的时候我需要计算相似度,看了看计算的代码是总不占cpu,然而Mysql的cpu却总是90%以上,我当时以为我mysql出了问题,问了问师兄才知道,如果我需要从数据读取数据的话,那么很有可能读取数据是瓶颈所在。所以mysql才占用那么高的cpu。这次瓶颈所在于带宽,大约下载3m/s吧,我之前在服务器上开了200个线程和100线程,80线程,但居然都没有我实验室台式机开20个线程的效果好。我想是这样的:因为线程开的多了,所以同时下载的mp3都多了,同时又使用代理,代理又不稳定,很多线程同时去抢着使用网卡,但是网卡的负载就那么大,导致很多线程的数据连着连着就断了,按照我程序的设定,那么会将没有下载完整的歌曲删除了重新下载。所以,线程虽然多了,但是效率并没有提高,现在,我将服务器的线程改为了10,