gateway被堵塞了?

a3563115

模拟客户端发起请求,当连接数为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();
3259 2 0
2个回答

a3563115

已经解决了
文档中有提及

设置系统打开文件数设置,解决高并发下 too many open files 问题。此选项直接影响单个进程容纳的客户端连接数。

Soft open files 是Linux系统参数,影响系统单个进程能够打开最大的文件句柄数量,这个值会影响到长链接应用如聊天中单个进程能够维持的用户连接数, 运行ulimit -n能看到这个参数值,如果是1024,就是代表单个进程只能同时最多只能维持1024甚至更少(因为有其它文件的句柄被打开)。如果开启4个进程维持用户链接,那么整个应用能够同时维持的连接数不会超过4*1024个,也就是说最多只能支持4x1024个用户在线可以增大这个设置以便服务能够维持更多的TCP连接。

  • 暂无评论
walkor

嗯,超过1000并发链接需要根据workerman手册http://doc.workerman.net/315302,并http://doc.workerman.net/315116。

  • a3563115 2017-06-12

    现在已经可以支持连接数大于1000了 但是status 查看 还是看不到gateway状态

  • walkor 2017-06-12

    event扩展

年代过于久远,无法发表回答
🔝