脚本并发的记录 2017 年 2 月 9 日 17:47 目标:对几十万条客户端 IP 数据进行一次性读取并对其中约一半的数据通过查询 IP 库获取位置和运营商信息并 update 到原库。 问题:发现基本每秒才完成 1 条数据的更新,太慢太慢了。要加速! 方法: 第一步:

脚本并发。

多进程 or 多线程? 通过 map 映射,很轻松实现并发。但是具体选多进程还是多线程呢?看代码逻辑不是计算型的,瓶颈应该是在 IP 库查询或者 db 更新。

因此选择多线程, 6 线程( 1 : 1.5 )。 检查发现是快了一些,通过 s how processlist 发现 6 个 update 中只有一个在 updating ,其他 5 个都是 locked ,原来 db 这里的确是个瓶颈,那就提升 db 并发。 第二布:提升 db 并发,方法是修改引擎为 INNODB 。 计算刚好每秒更新 5.8 ~ 7.5 个数据

多进程的方式( 4 进程),每秒才 1.08 ~ 2.38 个,很不稳定,最高也有 9.2

单进程单线程,每秒 0.57 个

已使用 Microsoft OneNote 2016 创建。