如下图
不过要注意以下几点 :
如下图:1个master(192.168.171.128) 2个slave(192.168.171.131 192.168.171.133) 这些都是虚拟机ip
Target是部署于同一个局域网中的UDP服务器(10.100.50.127)
下面我们来演示一下如何配置SSL
如果是在windows上,则执行bin/create-rmi-keystore.bat。执行完成后会生成一个文件rmi_keystore.jks。圣后这个文件后,保证每一个Jmeter宿主机上都使用的是这个文件
所有的宿主机都要安装Jmeter并配置环境变量
1.将Jmeter压缩包上传到所有的宿主机上。解压后的目录为/opt/software/jmeter/apache-jmeter-4.0
2.配置环境变量
配置好之后需要测试一下
如果提示没有权限,就把bin目录的文件加一下执行权限就好了
做好上面的两步后,slave只需要启动一下jmeter-server就可以了
也可以指定ip运行
UDP服务器,就是首发数据,进行数据处理的。与TCP不同的是不用建立连接,直接调用recvfrom来收包。开始就是基本的socket初始化地址什么的。
要求多个线程处理客户端命令,那recvfrom收包后,考虑把客户端的地址信息保存,便于sendto,对接收的数据包,交给线程进行处理,每个线程可以向一块共享内存、队列里写入收到的数据和对应的客户端信息,每次写的时候对这块共享资源加锁,多个线程对共享资源读是加锁,读完解锁,并开始处理数据。
处理完,用sendto发回去。
不是什么大项目。小程序而已。
UDP2000个客户端左右 并发单个数据包最大512字节
Internet 10MB带宽
要求效率(尽可能快,尽可能少丢包),这种情况下用哪种通讯模型比较有优势!
想用IOCP,因为和select模型相比,这个稍微熟悉一点,也在项目中用过,不过是TCP的。
有两个问题,大家懂得的帮忙给指导一下:
是否可以理解为UDP模式下,一次recvfrom 只对应一次sendto。
2.能否对服务端的套接字同时投递多个WsaRecvFrom,能否在多个线程中同时投递WsaSendTo和WsaRecvFrom。
------解决方案--------------------------------------------------------
-------------------------------------
等不到,包被截断了。
2.能否对服务端的套接字同时投递多个WsaRecvFrom,能否在多个线程中同时投递WsaSendTo和WsaRecvFrom。
--------------------------
其实,我个人认为对udp而言,不用iocp也可以满足。 首先sendto都是立即完成的,无需异步操作。而recvfrom可以只需阻塞一个线程就够了,不需要重叠操作。
------解决方案--------------------------------------------------------
用UDX协议最可靠,效率高,开发简单,非开源。
UDT开源,对于你这种2000客户,够用,开源。
------解决方案--------------------------------------------------------
1.sendto 10k,接受部分要么收到10k,要么全部丢失,不会出现部分收到的情况。
------解决方案--------------------------------------------------------
-------------------------------------
在局域网可以,公网,一般1K也收不到。
2.能否对服务端的套接字同时投递多个WsaRecvFrom,能否在多个线程中同时投递WsaSendTo和WsaRecvFrom。
--------------------------完全可以
------解决方案--------------------------------------------------------
1.如果UDP数据在传输过程中被分包,则你需要对数据包进行标识,已确保获取的包完整。一次recvfrom并不对应一次sendto,考虑UDP不可靠传输的因素。
2.不可以,因为sendto和recvfrom都是对同一个资源Socket进行操作。如果在多个线程中对同一个资源进行操作,如果不加锁的情况下,会非常可怕的。而且,如果你加锁了,其实还不如单线程操作。
按照你的需求最好还是采用UDP,不过可以考虑组播。
2.API调用完全没有问题。但是接到的数据可能和发送的数据次序不一样,这本身是UDP乱序特性决定了的。而且你发送方可能是多线程,从API层面来说,这些调用都是可以的,完全没有问题。但是给你接收方处理带来一系列问题。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)