关于采集器运行时CPU占用特别高的原因及解决办法
程序中使用大量的复杂计算后,CPU的占用将会升高。如果是采集器占用CPU居高不下,那说明用户写的采集规则有严重的问题,需要修改。以下是常见问题及修改方法
1.使用大量的(*)通配符
(*)在程序运行时,会解析成正则表达式中的[\s\S]*?.如果一个标签中(*)非常多,最后的正则表达式会很复杂,程序解析数据时就会占用大量的CPU。
解决办法:
一般的建议是正则匹配内容中,(*)不要超过3个。如果采集的结果不存在循环结果,请不要选”该标签循环匹配“。另外,规则的写法很多时间也很重要,这需要用户有一定的正则基础。
如果很少的(*)解决不了问题怎么办,在数据处理那里,还有”前后截取“和”正则提取“的数据提取方式,请使用多次截取,以逐渐的减少处理的字符串量,来减少程序的运算量。
2.大量使用html标签过滤排除选了除“所有标签”外的所有标签
用户的本意是不需要html代码,如果按图上的选法,将产生很多多余的操作,浪费CPU。
解决办法:这种只需要只选”所有标签“即可
3.大量使用了正文提取
采集器的这个功能是比较占用CPU的,如果同时运行多个任务,CPU也会升高的
建议:如果要使用正文提取,同时运行任务数要限制
4.服务器配置低
有朋友需要将采集器放在VPS上长期运行,但是vps的配置一般都是不高的,所以经常会出现在自己电脑上运行的好好的,在服务器上就不行了。一般自己电脑内存大,多核,则VPS上的一般1G多内存,单核CPU。如果遇到黑心IDC,实际配置会更差。所以在除了使用1,2种优化方法外,可以考虑在更好的机器上运行采集器。