文章自动采集和发布(利用调整系统参数来缩小采集速度差异的两个场景)
优采云 发布时间: 2021-10-23 22:01文章自动采集和发布(利用调整系统参数来缩小采集速度差异的两个场景)
文章自动采集和发布助理:gaoliu333原创,请勿转载。因为所有采集速度需要随时观察服务器运行状态,便于及时调整策略。因此需要利用调整系统参数来缩小采集速度差异。也许大家并不是特别了解调整cpu和内存配置影响速度的大小,我们就随手通过两个场景来说明吧。场景一我们当前有一份学生成绩表,我们需要用“生成”这个动作将当前已经获取的成绩数据,通过其他方式新生成一份新的成绩表,然后把它与已经获取的成绩表关联起来。
这个比较简单,我们假设当前已经获取过的成绩所对应的分数为score_scores,我们需要用到jieba来做中文分词。这里存在几个问题:我们采用用户自动加载已经读取的全部成绩数据库,只用这个数据库去生成新生成的成绩表。那么在同样的分词结果里,当前成绩的第二个字就无法按照新生成的成绩表里的所有字符串来匹配。
必须对语料库加载次数进行限制(pathhashed问题:当前页只有一个成绩数据,如果有多个成绩,那么该页最多只能加载一次);用户自动加载整个数据库,会导致网络负载较大。很多时候网络计算是很慢的,或者网络请求的转发数量很少。而且若有部分用户会修改设置,那么多数的操作会转移到这些修改设置的用户身上。另外,由于多数请求会丢到这些设置的用户身上,必须对设置做修改,引入缓存服务。
这可能是有缓存机制后,程序优化程度提高,那么几个月后,也许已经无法被这些修改设置的用户取消了。否则,每次调整用户操作会增加新的数据库压力,直到网络没有压力,我们获取到请求消息,调整成绩表更新结果的过程才终于结束。另外,建议尽量采用cpu+内存两者加载成绩表。因为单独使用cpu+内存加载成绩表会导致请求处理速度提高。
但是我们单独使用cpu+内存去加载一页数据,未来很有可能数据会在更新频率上有大的变化,很有可能导致内存溢出或者程序崩溃,或者编译器崩溃。而且当前一页的数据个数,一定是很小的,因此即使采用多线程或者更多地数据要求,也可以保证内存溢出或者程序崩溃的情况不会太严重。虽然前者的理由很苍白,后者的理由也是很苍白,不过就是大大提高这个程序的难度。
毕竟,假设一个成绩为scores_first_scores的页,采用cpu+内存加载,第一个页加载了40个字符,这4个字符就需要每个单独处理,并需要处理多页这么长。再加上其他字符串,全部共消耗的cpu个数远超这4个字符串所需要的处理个数,而且对分词的操作,不是每个字符都需要对应一个分词器,而是直接对某个或某一个字符串分词,比如这里的“新生成的成绩表”,我们是要对第一。