性能测试的并发是指同一时刻的同一 *** 作,这些 *** 作都与服务器产生了数据交互,这个并发对服务器产生的压力很大。
在线用户数是指登录到系统的用户数量,这些用户不一定给服务器产生压力,比如一个网站,有1000人登录到系统,20%的用户看新闻,20%在进行注册,60%打开网站后就干别的事去了。在这样的场景下,就20%进行注册的用户对服务器产生了压力。
在进行性能测试时,并发用户数一般取在线用户数的5%~~20%。
一开始我无法理解,单机怎么可能实现百万并发连接,因为系统可用端口数只有:65535 - 1024 = 64511,每个TCP连接需要占用一个独立的端口,那最多也只能做到6W多并发连接。然而我忽视了一个很基本的问题,端口号在同一个IP下不能重复,但我们可以给一个网卡绑定多个IP地址,如果单机要主动发起100万并发连接,我们最少需要使用17个IP地址。
TCP服务器监听在指定端口接收客户端连接后,创建一个新的socket用于同客户端进行读写数据,但该socket并不需要也不会绑定一个新的端口,所以对于TCP服务器来说,不存在端口不够用的情况,TCP服务器能够保持多少个并发连接取决于服务器性能、内存大小、带宽大小以及服务器端设置(例如:进程能打开的文件数等)。以100W连接数为例,所需要总内存大小大约为:1,000,000 20K = 20G, 广播一个1KB的消息需要占用的带宽:1,000,000 1K = 1000M,所需打开文件描述符1,000,000个。
对于TCP服务器连接数压力测试来说,瓶颈在客户端,因为每个客户端要连接到TCP服务端需要使用一个本地端口,而对于一个IP地址来说,端口范围就是:0-65536,其中还要一些端口被系统或其他程序使用。所以从一台主机单个IP上发起同TCP服务器的连接数理论最大值为65535,当然我们可以给该主机绑定N个IP地址,同时从多个IP发起连接,所以理论上客户端可以发起的连接数为:IP数65535,这时客户端的CPU、内存和带宽以及文件句柄资源就是限制。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)