关于 php-cli 运行模式的问题

2015-10-27 16:29:33 +08:00
 linbomb

现在有一个场景需要不断调用某个接口去统计一批数据,在 php-cli 模式下请求 10w 多次接口以后速度开始下降,后来就不动了。干掉进程重新统计没多少次有停住了。接口没有任何限制。
后来换了台机器,也是跑了 10w 多次之后变慢停住。
哪位高手帮忙解答下是哪里出了问题?

4325 次点击
所在节点    PHP
9 条回复
mahone3297
2015-10-27 16:35:41 +08:00
我猜是内存的问题
写 shell 去调 php-cli
linbomb
2015-10-27 17:14:01 +08:00
@mahone3297 额。。这个不太明白,能简单说下吗
cevincheung
2015-10-27 17:15:14 +08:00
curl multi
moro
2015-10-27 17:26:53 +08:00
看 php 日志。
aliang032
2015-10-27 17:45:57 +08:00
估计是短链接,没开端口复用,本地端口被耗光了。
解决方法:

vi /etc/sysctl.conf

追加
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_timestamps = 1

保存后运行
sysctl -p
bin20060407
2015-10-27 17:57:25 +08:00
错误级别开启到最大,检查日志。估摸是内存泄漏,长时间驻守后台进程,该 close 的 close ,该 unset 的 unset 。
mahone3297
2015-10-27 18:10:04 +08:00
@linbomb 我的意思,就是写个 shell 脚本,去执行你的 php 代码。
比如
test.sh
```shell
php test.php
```
rming
2015-10-27 18:44:44 +08:00
让我不禁想问 supervisor 是怎么处理的,查了下文档,好像没看明白 僵死 是什么状态

http://supervisord.org/subprocess.html
fuxkcsdn
2015-10-27 22:46:47 +08:00
肯定是没合理利用 cURL_multi 和 http 长连接,我工作需要写的调用供应商接口的 cURL_multi 封装类每半小时执行 20W 次请求都没任何问题(然后供应商服务器撑不住就停了我们账号...)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/231481

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX