看了下文档,win不支持workman的多线程模式,大体上看了下代码,发现实现该功能需要基于pcntl模块,而该模块在win下并不支持,所以导致workman在win下最多支持256个并发链接。但是在某些特定环境下,因为某些客观原因导致的,无法更换服务器,也无法更换操作系统,所以想了一些曲线救国的方法,希望大佬来指点一二
1.nginx+workman
通过nginx的tcp转发和负载均衡,将一个端口的设备链接,分发到4个实现相同功能的端口,同时在workman下开启多个端口服务,这样不知道能不能撑起1024台设备
2.workman+cygwin
cygwin提供了一个小型的unix虚拟环境,对于服务器资源有限,或者无法在阿里云/百度云上安装虚拟机(查了一些例子,发现在虚拟主机上运行虚拟机,效率很低,性能较差。自己也试了试,启动虚拟机服务器就死机)的同学,似乎提供了一线生机,但是仔细看一下就会发现,Cygwin的PHP版本好像也是win下的,其php.ini文件所提供的扩展方式似乎是dll,而非linux下的so,所以不知道是不是自己的方法有问题,还请大神赐教
3.nginx+workman+内网linux服务器
这个就很简单了,nginx+端口转发内网的linux服务,然后将workman部署与linux,估计这个方法实现起来应该是最简单的,成功可能性也更高,多花一笔银子买个linux服务咯
还请大佬们指点一下,方法12是否可行
办法1可行,nginx接收 worker 开10个进程监听10个端口 nginx分别转发到不同进程的端口上,保守一个最多200 ,10个进程就是2000 了,超过1024
谢谢大佬给的建议,我尝试了一下,连接数量确实是可以保证,而且如果只用workman做消息转发的话,设备数量是可以撑起来的,做到秒回复。但是我这个tcp链接,需要业务逻辑处理,处理逻辑的话,好像win实在没办法有效的提高效率,E5的windows server 2008R2 还不如单核的linux虚拟机,确实是linux处理业务逻辑快了很多
你说的是进程不是线程吧
lworkermanx仅仅多进程,线程和进程不一样
老哥,哪一年的评论都能见到你