Discuz! Board

标题: 爬虫异常处理方法 [打印本页]

作者: 李秉清    时间: 2016-7-21 00:19
标题: 爬虫异常处理方法

1. 爬虫 接口报警[attach]75[/attach]
2. 访问http://crawler0.moretv.cn:8080/monitor
3. 结果从http://www.bejson.com/变成标准的json
{
    "crawler_flag": false,
    "queue_process": {
        "flag": true
    },
    "wait_stack": {
        "flag": true,
        "wait_queue": []
    },
    "engine_process": {
        "flag": true
    },
    "spider_process": {
        "flag": false,
        "spider": {
            "Moretv-HD-crawler-01-151.139": "alive",
            "Moretv-HD-crawler-02-151.148": "alive",
            "Moretv-HD-crawler-03-138.142": "alive",
            "Moretv-HD-crawler-04-138.140": "alive",
            "Moretv-BJUD-crawler-01": "alive",
            "Moretv-BJUD-crawler-03": "alive",
            "Moretv-BJUD-crawler-02": "alive",
            "moretv_IDA": "alive",
            "Moretv-HD-crawler-05-138.143": "dead"
        }
    },
    "cobweb_process": {
        "flag": true
    },
    "merge_process": {
        "flag": true
    }
}
crawler_flag为true,口正常。
crawler_flag为false,接口异常,需要人为干预处理。
         wait_stack为false,说明队列有堆积。需要找爬虫开发同事处理。一般都是等待队列自动处理完成
engine_process为false,需要马上通知爬虫开发同事处理。非常严重。
  spider_process为false,说明某个spider异常。由于开发新增了自动监控进程的服务,原则上不会再出现某个spider出现dead的情况。
  其它不常见问题暂时不说明。
Spider_process因为spider.py的程序由于正则或者其它原因导致内存泄露,最终挂掉。在监控上的报警为二种.
1. 内存少于100M
2. SWAP小于50%
由于开发新增了自动监控进程的服务,原则上挂掉的进程会自动重启,不会再出现某个spider出现dead的情况。
处理方法为
1. 连接到堡垒机,选择crawler
[attach]76[/attach]
2. 选择有问题的spider机,个实例中为"Moretv-HD-crawler-05-151.143": "内存少于100M"
[attach]77[/attach]
3. 选择root用户
[attach]78[/attach]
4. 查看spider进程
    ps aux|grep python
[attach]79[/attach]
5. Kill掉该 spider程(释放内存)
cd /home/moretv/spider
kill -9 29926
6. 再次查看进程,观察内存是否已释放。
[attach]80[/attach]
7. 如果是SWAP告警的话还需要释放SWAP
     vmstat 1  查看swap内存使用情况
swapoff -a&&swapon -a (需要root账号)
再次vmstat 1 查看SWAP是否清空
PS:以上操作需要ROOT账号权限,请谨慎操作。
PS:以上操作需要ROOT账号权限,请谨慎操作。
PS:以上操作需要ROOT账号权限,请谨慎操作。






欢迎光临 Discuz! Board (http://123.59.83.120:8080/) Powered by Discuz! X3.2