我查询start的运行状态的时候,发现有几个bussiness worker的request是busy状态,netstat查看的时候有很多是ESTABLISHED。请问这个多进程是怎么控制和处理的啊
有时候出现,我的gateway worker是保持连接的状态,但是就是收不到客户端发送的消息,必须重新start.php restart
status 里出现 busy 说明业务代码哪里长时间阻塞了,需要用 strace 配合 lsof定位下阻塞在哪里
好的,我试一下,另外还有一个问题,就是gateway worker中的初始化,比如数据库连接,redis连接,要怎么做不会每次都初始化呢。是在onWorkerStart中操作么。比如我的onMessage方法中,会调用数据库查询,就会Db::instance('dbConfig')->row($sql);这样每次消息通讯,是不是都是在连接数据库,消耗大量性能呢?能不能给个具体的onWorkerStart中初始化的事例
参考手册的做法就行了
手册哪儿有啊,手册里就只有一个输出语句
手册有搜索功能,搜mysql回车就出来了
http://doc2.workerman.net/326155
我现在也遇到这个问题了,process status中为busy,在文档中没找到怎么处理,请大神指点一下
好的,谢谢哈
linux系统下 命令行运行
strace -ttp busy的进程pid
能看到阻塞在哪个fd上,假设fd=13
然后利用命令
lsof -nPp busy的进程pid
能看到fd=13的资源是什么,就知道阻塞在哪里了
ok,我一会儿试一下,非常感谢
还有一个问题,关于reload重启后,我Events中引入的外部文件修改没有生效,只有的情况要怎么处理啊,reload后我的我其他自己创建的外部文件里修改的能自己更新生效呢。
不要在Worker::runAll()前载入那些文件就行。
放在Worker::runAll()后面的话,手册上不说说不往后面继续执行了么
额,刚说的不够准确。 应该是不要在Worker::runAll()运行前载入那些文件就行。
比如在onXXX里载入的文件都是可以reload载入的
好的,我都移入到onWorkStart里了,谢谢你一直在解答我的问题,非常感谢
还有一种情形,就是我做了restart操作后,服务器是断开后重新启动的,那么客户端会有中断的情形,然后客户端重连发消息,服务器端就一直收不到消息。不知道服务器端重连后怎么再次能接收到客户端的消息呢
另外的一个郁闷的问题就是,status里send_fail原因,这个要怎么很好的解决啊
有send fail正常,具体看workerman手册常见问题
谢谢,学了一招
有时候出现,我的gateway worker是保持连接的状态,但是就是收不到客户端发送的消息,必须重新start.php restart
status 里出现 busy 说明业务代码哪里长时间阻塞了,需要用 strace 配合 lsof定位下阻塞在哪里
好的,我试一下,另外还有一个问题,就是gateway worker中的初始化,比如数据库连接,redis连接,要怎么做不会每次都初始化呢。是在onWorkerStart中操作么。比如我的onMessage方法中,会调用数据库查询,就会Db::instance('dbConfig')->row($sql);这样每次消息通讯,是不是都是在连接数据库,消耗大量性能呢?能不能给个具体的onWorkerStart中初始化的事例
参考手册的做法就行了
手册哪儿有啊,手册里就只有一个输出语句
手册有搜索功能,搜mysql回车就出来了
http://doc2.workerman.net/326155
我现在也遇到这个问题了,process status中为busy,在文档中没找到怎么处理,请大神指点一下
好的,谢谢哈
linux系统下
命令行运行
能看到阻塞在哪个fd上,假设fd=13
然后利用命令
能看到fd=13的资源是什么,就知道阻塞在哪里了
ok,我一会儿试一下,非常感谢
还有一个问题,关于reload重启后,我Events中引入的外部文件修改没有生效,只有的情况要怎么处理啊,reload后我的我其他自己创建的外部文件里修改的能自己更新生效呢。
不要在Worker::runAll()前载入那些文件就行。
放在Worker::runAll()后面的话,手册上不说说不往后面继续执行了么
额,刚说的不够准确。
应该是不要在Worker::runAll()运行前载入那些文件就行。
比如在onXXX里载入的文件都是可以reload载入的
好的,我都移入到onWorkStart里了,谢谢你一直在解答我的问题,非常感谢
还有一种情形,就是我做了restart操作后,服务器是断开后重新启动的,那么客户端会有中断的情形,然后客户端重连发消息,服务器端就一直收不到消息。不知道服务器端重连后怎么再次能接收到客户端的消息呢
另外的一个郁闷的问题就是,status里send_fail原因,这个要怎么很好的解决啊
有send fail正常,具体看workerman手册常见问题
谢谢,学了一招