模擬客戶端發(fā)起請求,當連接數為4115時 無法發(fā)起請求了 看了下 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秒發(fā)個心跳包
Timer::add(10, function()use($con){
$con->send('{"type":"welcome","id":'.'fsdgrgergerg'.'}.'."\n");
});
$con->connect();
echo $count, " connections complete\n";
}
Worker::runAll();
已經解決了
文檔中有提及
設置系統打開文件數設置,解決高并發(fā)下 too many open files 問題。此選項直接影響單個進程容納的客戶端連接數。
Soft open files 是Linux系統參數,影響系統單個進程能夠打開最大的文件句柄數量,這個值會影響到長鏈接應用如聊天中單個進程能夠維持的用戶連接數, 運行ulimit -n能看到這個參數值,如果是1024,就是代表單個進程只能同時最多只能維持1024甚至更少(因為有其它文件的句柄被打開)。如果開啟4個進程維持用戶鏈接,那么整個應用能夠同時維持的連接數不會超過4*1024個,也就是說最多只能支持4x1024個用戶在線可以增大這個設置以便服務能夠維持更多的TCP連接。