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