不使用代理,仅本地网络测试
设备: 联通光纤宽带(我一个人用) 下行 300M 上行 30 CPU: I7 7700HQ 4 核 8 逻辑处理器 内存: 16G
国内的服务器: 阿里云 1 核 2 内 1M
单进程 + 异步:
URL 500 个
asyncio.Semaphore(500)
aiohttp 设置超时时间为 1 秒
结果: 并发 500 的成功率为 97%左右(偶尔抽风)
每秒并发个数: 485
多进程 + 异步:
URL 500 个
5 个进程 (每个进程平均 100 个 URL)
asyncio.Semaphore(100)
aiohttp 设置超时时间为 1 秒
结果:并发 500 的成功率为 99%左右(偶尔抽风)
每秒并发个数: 495
多进程 + 异步:
URL 1600 个
8 个进程 (每个进程平均 200 个 URL)
asyncio.Semaphore(200)
aiohttp 设置超时时间为 1 秒
结果:并发 1600 的成功率为 4% ~ 75%左右(大概率低于 30%)
每秒并发个数: 64 ~ 1200
当前遇到的问题:
超过 500 并发后极其不稳定
目前猜测之所以 500 是临界点, 可能联通限制连接数 1000 导致 或是 Windows 平台 select 限制
当前策略每三秒对所有 代理 IP 访问自己服务器进行测试 测试代理 IP 超时时间为 3 秒 通过超时次数,和响应时间(使用) 对每个 IP 分配权重来筛选,排序, 所以要很大程度上减少自身网络或程序的错误, 才尽可能保证代理 IP 的准确性于可用性, 毕竟能用的 IP 太少, 误封就太可惜了
电脑性能和上行带宽没跑满, 多加几个服务器太浪费了
请问各位, 有什么方式能提高并发量, 或容错(误封可用 IP)的策略呢,