使用swoole编写的Websocket服务端运行之后出现大量php进程?

图片描述

RT如图,我用Swoole搭建了一个Websocket服务端运行着,并发量非常低,差不多就同时不超过十个客户端与服务端连着。

服务器总共就1G内存,现在就剩90多M,这是Swoole确实很占内存还是其他问题?

阅读 5.3k
3 个回答

swoole_websocket_server 默认情况下有6个进程:

  • 1个master进程
  • 1个manager进程
  • 4个worker进程

当然,也可以根据你的业务需要设置进程数量(需要在swoole_server->start()之前调用):

function swoole_server->set(array $setting);
swoole采用固定worker进程的模式。PHP代码中是全异步非阻塞,worker_num配置为CPU核数的1-4倍即可。如果是同步阻塞,worker_num配置为100或者更高,具体要看每次请求处理的耗时和操作系统负载状况。

楼主的情况,可以在onStart onManagerStartonWorkrStart 事件中使用swoole_set_process_name()函数来给所有swoole进程重新命名,以判断哪些是swoole进程。

还有需要注意的是,每次重新启动服务前记得将之前的swoole master进程kill掉,这样manager进程和所有的worker进程也会随之清掉。附一张我的进程截图:

图片描述

没有啊,我这边才两个进程,是你代码的问题?
实际上,就9540的那个是swool的websocket进程,还有下一个对外网NAT转换的进程。。
而且我也是腾讯云的服务器,并发量上次小测了一下1W没什么压力

图片描述

新手上路,请多包涵

swoole的并发怎么测试啊?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题