解决使用selenium+PhantomJs抓取数据导致内存溢出问题
在使用selenium+PhantomJs爬取数据时,发现系统运行缓慢,后台一查发现很多phantomJs进程未被关闭。
在java代码中,我们调用driver.close()方法并不能保证phantomJs进程会被kill掉。
我使用了比较笨的办法,就是写一个.sh脚本,然后java执行该脚本来杀死这些进程以腾出内存空间的目的。
try {
Runtime.getRuntime().exec(“脚本位置”);
} catch (IOException e) {
log.error(e.getMessage(), e);
}
.sh 脚本代码如下:
#!/bin/bash
#defined
ps -ef | grep phantomjs | grep -v grep | cut -c 9-15 | xargs kill -s 9
这个脚本会杀死所有包含phantomjs 关键字的进程。
测试效果,内存得到有效的释放,当然了,也许会有更好的办法,但目前我只能想到这个方案,
如果你有更好的方案,欢迎留言。