模擬客戶端發(fā)起請求,當連接數(shù)為4115時 無法發(fā)起請求了 看了下 gateway被隱藏掉了 關(guān)掉客戶端后又恢復正常 請問其中是有什么限制嗎?
<?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) {
// 遞歸調(diào)用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();
已經(jīng)解決了
文檔中有提及
設(shè)置系統(tǒng)打開文件數(shù)設(shè)置,解決高并發(fā)下 too many open files 問題。此選項直接影響單個進程容納的客戶端連接數(shù)。
Soft open files 是Linux系統(tǒng)參數(shù),影響系統(tǒng)單個進程能夠打開最大的文件句柄數(shù)量,這個值會影響到長鏈接應(yīng)用如聊天中單個進程能夠維持的用戶連接數(shù), 運行ulimit -n能看到這個參數(shù)值,如果是1024,就是代表單個進程只能同時最多只能維持1024甚至更少(因為有其它文件的句柄被打開)。如果開啟4個進程維持用戶鏈接,那么整個應(yīng)用能夠同時維持的連接數(shù)不會超過4*1024個,也就是說最多只能支持4x1024個用戶在線可以增大這個設(shè)置以便服務(wù)能夠維持更多的TCP連接。