laravel 5.3 的 queue 用 database 来进出队列,但是 mysql 的负载一直很高,动不动就挂,甚至整个 vps 都挂
用的是 lnmp 一键包, laravel 每分钟都在跑 queue , queue 主要用途是用来发邮件 vps 配置 KVM 1G 内存 25G ssd
top :
Tasks: 125 total, 1 running, 124 sleeping, 0 stopped, 0 zombie Cpu(s): 1.4%us, 0.7%sy, 0.0%ni, 0.0%id, 96.3%wa, 0.3%hi, 0.3%si, 1.0%st Mem: 1020332k total, 959420k used, 60912k free, 424k buffers Swap: 262140k total, 262140k used, 0k free, 268552k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2489 mysql 20 0 1371m 472m 1804 S 0.0 47.4 0:01.18 mysqld 2561 root 20 0 345m 30m 19m S 0.0 3.1 0:00.46 php 2591 root 20 0 345m 30m 19m S 0.0 3.1 0:00.42 php 2627 root 20 0 345m 30m 19m S 0.0 3.1 0:00.37 php 2661 root 20 0 345m 30m 19m S 0.0 3.1 0:00.33 php 2697 root 20 0 345m 30m 19m S 0.3 3.1 0:00.28 php 2731 root 20 0 345m 30m 19m S 0.0 3.1 0:00.41 php
难道改用 redis 吗?默认的 queue driver 是 sync ,但是 sync 无法满足我的需求,所有发送成功失败都要记录
1
Dlad 2017-02-10 16:55:08 +08:00
1 、业务量要给,就算 4 核 16G 也有它的极限;
2 、 mysql 崩溃是因为执行语句多,还是执行语句慢? 基于你给的数据,我找不到问题所在, redis 可以试试。 |
2
tcsky 2017-02-10 17:55:47 +08:00
你队列消费时是不是有失败重试? 死循环了
|
3
ovear 2017-02-10 19:11:37 +08:00 via Android
lz 。。你没发现你的内存炸了么, swap 都满了。。
MySQL 配置问题吧 |
4
changwei 2017-02-10 21:04:01 +08:00 via Android
你先 show process 看看是不是服务器本身有大量已打开链接,或者开一下 general_log ,观察一下你的服务器在何时被什么 ip 请求过什么 sql 查询,然后再做优化,从 top 信息我看不出什么名堂。。。感觉被 cc 攻击了也有可能会这样
|