#11 楼 @yzdel2000 我这儿只有 1 万多 ip,更多的是活活被爬虫跑死,700 万左右 http 请求/天。关键是做缓存没用,爬虫是挨个页面爬的,一个页面只爬一次。
#1 楼 @richfisher 3x
直接 db:create db:migrate,再导 sql 就行了。 如果导入删掉了 schema_migrations 表,migrate 完备份一下这个表,再导 sql。
LZ 出门左转 phpchina 右转 v2ex
👍
#2 楼 @xiaoronglv 3x~,只是示例代码,一般都是带 limit 的,比如 Article.limit(10) 这类的,不 to_a 没法缓存啊。有空我会做下测试。
青云亚太,速度不错。
一直用的是 CentOS puma 交给自身的 master 管理,没问题。内存占用过大了,直接 kill 了 worker 就重启了。 后台跑的 sleep 的 rake 任务用 god,最大的问题是 stop 的时候停不掉。目前是手工关掉 god 然后再 kill 掉进程。 supervised 搞不定 rvm 环境初始化,放弃了。monit 没搞明白,预感会遇到 rvm 环境问题,放弃,用 god 了。
#12 楼 @leopku 哦,我用的https://github.com/binux/pyspider,scrapy 我没用过,不知道他的去重和我的需求是否匹配。
直接入库的话耦合性太强,站点数量少的话还可以应付,长期运行的时候,有些目标站改版或反扒,有可能直接向 project 写入空白或不可预料的错误数据。 另外当 web 端模型改变的时候,rails/padrino 这边 migration 一下就搞定了,但是 scrapy 那边还是要去把对应模型修改一遍,容易出错。所以我选择了不直接入库,而是用统一格式的 json 在 redis 做中间层,逻辑由 rails 这边统一处理。
清空重爬的场景也会有很多。所以要求每个环节都可以停下来,单独 debug,而不影响其他。 事实上我后端的 rails project 也只是一个中间层,负责爬取数据的管理。而异步处理数据的 json 格式队列现在有 3 条。
爬虫、队列、总库、线上的项目都是分别部署,相互不会影响。
爬虫数据以 json 格式插入 redis 一份(需要增量的话本地数据库需要有一份)
rake 任务 sleep n rpop redis,根据逻辑去重入库/更新
用 god 或 supervisor 持久 rake 脚本进程
不明白用户为什么非要管理数据库结构。 如果要管理让他自己开发程序不就好了,干嘛还要你呢?
如果他开发不了,说明他真正需求不是管理表结构,你让他能自定义 item 就行了。
(a | b) - (a & b)
pg + 关系型
目前使用 Navicat ^^
淘宝源现在很慢啊,改用阿里云了
把主键拉出来和一个 int 字段做一个联合索引,速度会很快。 (只把主键索引的没试过/忘了,转 PG 了)