目前就卡到这个地方走不动了,不知道怎么调试了,为什么会出现这种问题
看起来是进程一直在等待锁释放。看下业务有没有锁的操作,那里可能死锁了
业务里边做的都是数据库的查询操作,按说应该不会锁吧,现在的代码就是在示例代码的框架上添加的,就是推送消息的时候查询一下数据库数据,每次数据库查询之后,就会把数据库链接给关闭了,使用的是tp框架
前几天有运行两天出问题的,这几次出问题,大部分都是运行到第二天就出问题了,会不会是内存问题
从strace看阻塞在 futex,等待某个锁的释放。不是内存影响
业务有没有锁的操作,一般从哪方面去排查呢,这个不是很懂,大佬能不能给点方向建议
重启web-msg-sender,运行status查看进程pid,运行命令 nohup strace -ttp $进程pid -o /tmp/strace.log & 等待下一次busy,这样进程从正常状态到竞争futex之间的系统调用会被记录下来,到时候看下futex之前有哪些调用大概就能判断出来哪里有问题了。
nohup strace -ttp $进程pid -o /tmp/strace.log &
老大,你说的我都不理解呀,o(╥﹏╥)o
@梦幻星图 用这个命令 nohup strace -s 500 -ttp $进程pid -o /tmp/strace.log &
nohup strace -s 500 -ttp $进程pid -o /tmp/strace.log &
如果说我把所有的业务调用都放到推送逻辑外边,worder只负责推送文本内容,这样的是不是可以避免出现这种busy的情况
如果可行的话,我就把业务逻辑给分离出来,在推送之前就把要推送的数据给处理好再推送
对,web-msg-sender 只做推送,其它逻辑在mvc框架里做比较合理
好的,谢谢大佬
推送不建议做堵塞动作
看起来是进程一直在等待锁释放。看下业务有没有锁的操作,那里可能死锁了
业务里边做的都是数据库的查询操作,按说应该不会锁吧,现在的代码就是在示例代码的框架上添加的,就是推送消息的时候查询一下数据库数据,每次数据库查询之后,就会把数据库链接给关闭了,使用的是tp框架
前几天有运行两天出问题的,这几次出问题,大部分都是运行到第二天就出问题了,会不会是内存问题
从strace看阻塞在 futex,等待某个锁的释放。不是内存影响
业务有没有锁的操作,一般从哪方面去排查呢,这个不是很懂,大佬能不能给点方向建议
重启web-msg-sender,运行status查看进程pid,运行命令
nohup strace -ttp $进程pid -o /tmp/strace.log &
等待下一次busy,这样进程从正常状态到竞争futex之间的系统调用会被记录下来,到时候看下futex之前有哪些调用大概就能判断出来哪里有问题了。
老大,你说的我都不理解呀,o(╥﹏╥)o
@梦幻星图
用这个命令
nohup strace -s 500 -ttp $进程pid -o /tmp/strace.log &
如果说我把所有的业务调用都放到推送逻辑外边,worder只负责推送文本内容,这样的是不是可以避免出现这种busy的情况
如果可行的话,我就把业务逻辑给分离出来,在推送之前就把要推送的数据给处理好再推送
对,web-msg-sender 只做推送,其它逻辑在mvc框架里做比较合理
好的,谢谢大佬
推送不建议做堵塞动作