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基本是秒开。
好像跟业务有关系。我把配置文件目录换成初始文件一样卡,但是新建一个5.5的项目又是飞快。
应该和业务没什么关系的,我也遇到过同样的情况。重新checkout一个目录试试可能就解决了
看看你的日志呢?有没有什么提示信息
开启 xdebug 分析一下调用栈耗时就知道哪里出了问题了!
Command 的构造函数里面做了什么
用xdebug分析了一下,看不出什么东西来…… 感觉这个artisan会把所有的东西都加载一遍,连接rabbitmq这块好像影响很大。除了artisan外还有别的方式可以直接处理后台任务吗?
XHPROF
感觉laravel的反射好迷。只要command里有地方调用mq,即使当前执行的代码用不到mq,框架也要确认一下队列是否可以连接,在这上面花的时间是最长的。我想改成amqp扩展可能会好些。
给你个建议 查询你们的
commad
脚本是否在构造函数内调用了耗费时间很长的东西别问 问就是血的教训 :joy: