现在有一个场景需要不断调用某个接口去统计一批数据,在 php-cli 模式下请求 10w 多次接口以后速度开始下降,后来就不动了。干掉进程重新统计没多少次有停住了。接口没有任何限制。
后来换了台机器,也是跑了 10w 多次之后变慢停住。
哪位高手帮忙解答下是哪里出了问题?
现在有一个场景需要不断调用某个接口去统计一批数据,在 php-cli 模式下请求 10w 多次接口以后速度开始下降,后来就不动了。干掉进程重新统计没多少次有停住了。接口没有任何限制。
后来换了台机器,也是跑了 10w 多次之后变慢停住。
哪位高手帮忙解答下是哪里出了问题?
|
mahone3297Oct 27, 2015
1
我猜是内存的问题
写 shell 去调 php-cli |
|
2
@mahone3297 额。。这个不太明白,能简单说下吗
|
|
cevincheungOct 27, 2015 via Android
3
curl multi
|
|
moroOct 27, 2015
4
看 php 日志。
|
|
5
估计是短链接,没开端口复用,本地端口被耗光了。
解决方法: vi /etc/sysctl.conf 追加 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_timestamps = 1 保存后运行 sysctl -p |
|
bin20060407Oct 27, 2015
6
错误级别开启到最大,检查日志。估摸是内存泄漏,长时间驻守后台进程,该 close 的 close ,该 unset 的 unset 。
|
|
mahone3297Oct 27, 2015
7
|
|
rmingOct 27, 2015
8
|
|
fuxkcsdnOct 27, 2015 via iPhone
9
肯定是没合理利用 cURL_multi 和 http 长连接,我工作需要写的调用供应商接口的 cURL_multi 封装类每半小时执行 20W 次请求都没任何问题(然后供应商服务器撑不住就停了我们账号...)
|