artisan 命令很久才得到响应

大家好,最近用laravel5.5开发了一个业务处理系统,基本全是数据处理逻辑,没有什么前端调用。因为不涉及前台,开了很多进程并用supervisor进行管理。发现比较诡异的问题:php artisan 之后往往要等待2分钟才能列出帮助指令,其他的命令行操作一样,多进程反而效率更低了。

以前用过5.3的laravel,开几十个进程同时处理数据也没觉得卡顿,难道是5.5速度更慢了?服务器用的是centos6.2, 10核16G内存,配置应该没太大问题。一共开了40个 php artisan的命令。平均运行一次artisan要等待2到3分钟才能开始跑正常业务。

另外,opcache已经开了,config:cache 也开了,没什么效果

还有,同一台服务器上的一个laravel5.3的项目,使用artisan基本是秒开。

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 9
myhyperion

好像跟业务有关系。我把配置文件目录换成初始文件一样卡,但是新建一个5.5的项目又是飞快。

3年前 评论

应该和业务没什么关系的,我也遇到过同样的情况。重新checkout一个目录试试可能就解决了

3年前 评论

看看你的日志呢?有没有什么提示信息

3年前 评论

Laravel

开启 xdebug 分析一下调用栈耗时就知道哪里出了问题了!

3年前 评论
myhyperion (楼主) 3年前

Command 的构造函数里面做了什么

3年前 评论
myhyperion

用xdebug分析了一下,看不出什么东西来…… 感觉这个artisan会把所有的东西都加载一遍,连接rabbitmq这块好像影响很大。除了artisan外还有别的方式可以直接处理后台任务吗?

3年前 评论

XHPROF

3年前 评论
myhyperion

file 感觉是amqplib这个库拖慢了速度。只要调用了这个库,就会请求多次stream_select,当进程多的时候就卡得不行。一但不调用这个库,图形就变为下图了。

file

感觉laravel的反射好迷。只要command里有地方调用mq,即使当前执行的代码用不到mq,框架也要确认一下队列是否可以连接,在这上面花的时间是最长的。我想改成amqp扩展可能会好些。

3年前 评论
panda-sir

给你个建议 查询你们的commad脚本是否在构造函数内调用了耗费时间很长的东西

别问 问就是血的教训 :joy:

3年前 评论
myhyperion (楼主) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!