模拟客户端发起请求,当连接数为4115时 无法发起请求了 看了下 gateway被隐藏掉了 关掉客户端后又恢复正常 请问其中是有什么限制吗?
<?php
require __DIR__ . '/Autoloader.php';
use Workerman\Worker;
use Workerman\Lib\Timer;
use Workerman\Connection\AsyncTcpConnection;
$worker = new Worker();
$worker->onWorkerStart = 'connect';
function connect(){
static $count = 0;
// 2000个链接
if ($count >= 3000){
sleep(5);
$count = 0;
}
// 建立异步链接
$con = new AsyncTcpConnection('ws://192.168.3.254:8001');
$con->onConnect = function($con) {
// 递归调用connect
connect();
};
$con->onMessage = function($con, $msg) {
echo "recv $msg\n";
};
$con->onClose = function($con) {
echo "con close\n";
};
// 当前链接每10秒发个心跳包
Timer::add(10, function()use($con){
$con->send('{"type":"welcome","id":'.'fsdgrgergerg'.'}.'."\n");
});
$con->connect();
echo $count, " connections complete\n";
}
Worker::runAll();
已经解决了
文档中有提及
设置系统打开文件数设置,解决高并发下 too many open files 问题。此选项直接影响单个进程容纳的客户端连接数。
Soft open files 是Linux系统参数,影响系统单个进程能够打开最大的文件句柄数量,这个值会影响到长链接应用如聊天中单个进程能够维持的用户连接数, 运行ulimit -n能看到这个参数值,如果是1024,就是代表单个进程只能同时最多只能维持1024甚至更少(因为有其它文件的句柄被打开)。如果开启4个进程维持用户链接,那么整个应用能够同时维持的连接数不会超过4*1024个,也就是说最多只能支持4x1024个用户在线可以增大这个设置以便服务能够维持更多的TCP连接。
嗯,超过1000并发链接需要根据workerman手册http://doc.workerman.net/315302,并http://doc.workerman.net/315116。
现在已经可以支持连接数大于1000了 但是status 查看 还是看不到gateway状态
event扩展