内核优化和ulimit都按照官方文档的设置了 php版本7.0和7.1都试过 event拓展也按照官方文档pecl安装和选项成功 压测链接数就是过不了2000,头好大啊 GateWay gate 和bs 都是 设置4个进程 需要增大这个进程数量吗?
并不是所有业务都支持高并发连接数,一般来说单台服务器能承受的qps是有极限的,带业务的服务单机一般很难超过10万qps,受限于网卡、带宽、cpu计算能力、业务代码质量、服务架构、客户端承受能力、业务类型等等原因。 就业务类型来讲: 假设你的业务是请求响应式的业务,服务器带业务qps极限2万。如果每个连接每秒请求100次,那么也就是最多支持200个连接;如果每个连接每10秒发出一个请求,那么你的服务器可以支撑20万连接。 假设你的业务是推送类的,一个人发言广播给其他人,按照服务器吞吐量6万消息/秒来算(已经需要百M带宽),每秒30人发言,最多支持2000人。但是如果每秒有6人发言,那么可以支持1万人在线。相比真实聊天室场景,后者更符合实际情况。 所以长连接压测时要考虑业务场景,根据实际业务场景去测试,否则压测出来的数据并没有什么实际意义。
这边是游戏业务,是3台 2核4G构成分布式,一台Register 其他两台是 Gate和Bs,然后负载均衡用阿里的 标2 最大上限是5W链接,用之前你发在论坛里面的脚本,我设置30秒心跳间隔,但是我这边测 不管是 通过负载还是 单个节点去链接都是在2000-3000的连接数,再往上拿别的机子去实际链接就会出现链接超时的情况了,头很大,我看到论讨里说随随便便上1W链接 我怕是我这边哪里配置有问题还是怎么
用workerman压测workerman的话,客户端服务器也需要安装event扩展,并根据workerman手册优化linux内核,否则客户端本身都无法支持发起大的并发连接。另外看下是否在业务里有广播数据的情况。
没有广播数据,当count00的连接发的是查询当前连接数的信息会有一次响应,其他的都是发1心跳,测试机也安装了event拓展,就是不管通过负载还是指定节点去连接,过3000之后,我在另外的实体机去连接就会出现连接过慢、连接超时,整个压测流程只有心跳和少量的查询响应
@3938:哈哈,我在转向用c++写个测试客户端,并发创建多个客户端做压力测试,看看服务器的响应到底能到啥程度!
压测过程中出现无法连接时,客户端 服务端都运行php start.php status ulimit -n sysctl -a | grep nf_ 都贴下。 另外试下直接在服务端压测,这样可以排除网络带宽瓶颈。
稍等..
[attach]1303[/attach]
[attach]1305[/attach]
[attach]1304[/attach]
还有客户端的
[attach]1307[/attach]
[attach]1306[/attach]
[attach]1308[/attach]
在一台服务器上通过127.0.0.1压测本机试下
OK 稍等下
[attach]1309[/attach] 我跑了几次,差不多都跑到内存耗尽,连接确实上了15000了
难道1万5的连接就到头了!你这测试程序难道很消耗内存吗?还是用了比较复杂的业务呢!?
那之前可能是遇到网络瓶颈了,比如走的外网带宽不够
并不是所有业务都支持高并发连接数,一般来说单台服务器能承受的qps是有极限的,带业务的服务单机一般很难超过10万qps,受限于网卡、带宽、cpu计算能力、业务代码质量、服务架构、客户端承受能力、业务类型等等原因。
就业务类型来讲:
假设你的业务是请求响应式的业务,服务器带业务qps极限2万。如果每个连接每秒请求100次,那么也就是最多支持200个连接;如果每个连接每10秒发出一个请求,那么你的服务器可以支撑20万连接。
假设你的业务是推送类的,一个人发言广播给其他人,按照服务器吞吐量6万消息/秒来算(已经需要百M带宽),每秒30人发言,最多支持2000人。但是如果每秒有6人发言,那么可以支持1万人在线。相比真实聊天室场景,后者更符合实际情况。
所以长连接压测时要考虑业务场景,根据实际业务场景去测试,否则压测出来的数据并没有什么实际意义。
这边是游戏业务,是3台 2核4G构成分布式,一台Register 其他两台是 Gate和Bs,然后负载均衡用阿里的 标2 最大上限是5W链接,用之前你发在论坛里面的脚本,我设置30秒心跳间隔,但是我这边测 不管是 通过负载还是 单个节点去链接都是在2000-3000的连接数,再往上拿别的机子去实际链接就会出现链接超时的情况了,头很大,我看到论讨里说随随便便上1W链接 我怕是我这边哪里配置有问题还是怎么
用workerman压测workerman的话,客户端服务器也需要安装event扩展,并根据workerman手册优化linux内核,否则客户端本身都无法支持发起大的并发连接。另外看下是否在业务里有广播数据的情况。
没有广播数据,当count00的连接发的是查询当前连接数的信息会有一次响应,其他的都是发1心跳,测试机也安装了event拓展,就是不管通过负载还是指定节点去连接,过3000之后,我在另外的实体机去连接就会出现连接过慢、连接超时,整个压测流程只有心跳和少量的查询响应
@3938:哈哈,我在转向用c++写个测试客户端,并发创建多个客户端做压力测试,看看服务器的响应到底能到啥程度!
压测过程中出现无法连接时,客户端 服务端都运行php start.php status
ulimit -n
sysctl -a | grep nf_
都贴下。
另外试下直接在服务端压测,这样可以排除网络带宽瓶颈。
稍等..
[attach]1303[/attach]
[attach]1305[/attach]
[attach]1304[/attach]
还有客户端的
[attach]1307[/attach]
[attach]1306[/attach]
[attach]1308[/attach]
在一台服务器上通过127.0.0.1压测本机试下
OK 稍等下
[attach]1309[/attach]
我跑了几次,差不多都跑到内存耗尽,连接确实上了15000了
难道1万5的连接就到头了!你这测试程序难道很消耗内存吗?还是用了比较复杂的业务呢!?
那之前可能是遇到网络瓶颈了,比如走的外网带宽不够