握手常见问题
1、连接拒绝
2、Operation now in progress
多是因为丢包、错误ip、backlog满了&阻塞&tcp_abort_on_overflow=0
3、min(maxconn, backlog) ss -lt
连接拒绝
在TCP
三次握手的时候,客户端发送SYN
这个包给服务端,服务端不接受这个请求,操作系统直接返回了一个RST
的包,来拒绝连接的请求。
最常见的情况就是客户端去请求某个服务器,服务端没有绑定对应的端口。
测试代码如下,服务端代码:
<?php
$server = new \Swoole\Server('127.0.0.1', 9501);
$server->set([
'work_num' => 2,
'backlog' => 128,
]);
$server->on('connect', function ($server, $fd)
{
echo "Client: Connect.\n";
});
$server->on('receive', function ($server, $fd, $reactor_id, $data)
{
var_dump($data);
});
$server->on('close', function ()
{
var_dump('close');
});
$server->start();
这里,服务端绑定的端口是9501
。
启动服务器:
~/codeDir/phpCode/hyperf-skeleton # php server.php
客户端代码:
<?php
$client = new \Swoole\Client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);
var_dump($client->connect('127.0.0.1', 9500));
这里,客户端请求的端口是9500
。
启动客户端:
~/codeDir/phpCode/hyperf-skeleton