记录一下这几天帮助兄弟项目组解决的几个问题
工程:网关服务器,业务逻辑少,操作不费时
问题:大量的Close_wait,访问速度较慢
分析&解决:
1、close_wait是TCP/IP协议中被动关闭方收到Fin后没有发送Fin导致
项目采用了mina框架,服务器被动关闭时会生成一个异常,调用exceptionCaught()方法,
在该方法中,服务器调用关闭方法session.close(false);false的意思是先发送数据,等数据 发送完了再关闭。通常情况下这是一个正常的流程,但是在高并发访问的情况下,可能生成大量Close_wait。如果情况允许的话,把false改成true就好了。通常情况下,改成true是没有问题的。
2、项目中获取ip的方法有问题:
ip = ((InetSocketAddress)(session.getRemoteAddress())).getHostName();
此方法会先通过域名服务器获取远程客户段的域名,域名无法获得的情况下再获取ip,在域名服务器不稳定的情况下,通常耗时好几百毫秒。如果没有必要的话,可以将这个代码直接修改为:
InetSocketAddress accountAddress = (InetSocketAddress) session
.getRemoteAddress();
String accountIp = accountAddress.getAddress().getHostAddress();
分享到:
相关推荐
5. FIN_WAIT1:主动关闭(active close)端应用程序调用 close,于是其 TCP发出 FIN 请求主动关闭连接,之后进入 FIN_WAIT1 状态。 6. CLOSE_WAIT:被动关闭(passive close)端 TCP 接到 FIN。 7. FIN_WAIT2:主动...
本文将深入探讨“Local TCP list.rar”这个主题,介绍如何利用Winsock API读取本地计算机的TCP连接清单,以及获取其中的IP地址、端口和连接状态等信息。 首先,理解TCP连接的基本概念至关重要。TCP是一种面向连接的...
例如,使用套接字API创建Socket,bind()绑定本地地址,listen()开始监听,accept()接收连接请求,send()和recv()进行数据传输,最后使用shutdown()或close()关闭连接。客户端类似,只是先发起连接请求。 在测试过程...
3.6 特殊情况的IP地址 33 3.7 一个子网的例子 33 3.8 ifconfig命令 35 3.9 netstat命令 36 3.10 IP的未来 36 3.11 小结 37 第4章 ARP:地址解析协议 38 4.1 引言 38 4.2 一个例子 38 4.3 ARP高速缓存 40 4.4 ARP的...
**vppcom_session_bind**: 将服务端的IP地址、端口以及协议类型记录到服务端session的transport结构中。 **vppcom_session_listen**: 该函数负责创建应用程序与VPP通信的socket以及相关线程,例如app_wrk和app_wrk-...
3.6 特殊情况的IP地址 33 3.7 一个子网的例子 33 3.8 ifconfig命令 35 3.9 netstat命令 36 3.10 IP的未来 36 3.11 小结 37 第4章 ARP:地址解析协议 38 4.1 引言 38 4.2 一个例子 38 4.3 ARP高速缓存 40 4.4 ARP的...
TCP连接由源端口号、目标端口号以及各自的IP地址唯一标识,这种连接状态可以分为SYN_SENT、SYN_RECEIVED、ESTABLISHED、CLOSE_WAIT、FIN_WAIT_1、FIN_WAIT_2、TIME_WAIT、CLOSED等多种状态。 在Cacti中添加TCP连接...
9. **连接状态与状态机**:TCP连接有多个状态,如CLOSED、LISTEN、SYN_SENT、SYN_RCVD、ESTABLISHED、FIN_WAIT_1、FIN_WAIT_2、CLOSE_WAIT、CLOSING、LAST_ACK、TIME_WAIT等,理解这些状态及其转换对于调试和问题...
通过这些函数,开发者可以创建一个套接字,绑定到特定的IP地址和端口,监听连接请求,以及建立或接受连接。 2. **TCP连接的建立与关闭**:TCP的三次握手和四次挥手过程是其核心特性,源码会解释这些流程在内核中的...
网络通信中,还涉及到其他协议,如ARP(地址解析协议)用于获取MAC地址,RARP(逆向地址解析协议)用于从MAC地址获取IP地址,以及HTTP、FTP、Telnet等应用层协议。IP(Internet Protocol)和ICMP(Internet Control ...
6.6.11 删除IP地址:SIOCDIFADDR 140 6.7 接口ioctl处理 141 6.7.1 leioctl函数 141 6.7.2 slioctl函数 142 6.7.3 loioctl函数 143 6.8 Internet实用函数 144 6.9 ifnet实用函数 144 6.10 小结 145 第7章 域和协议 ...
6.6.11 删除IP地址:SIOCDIFADDR 140 6.7 接口ioctl处理 141 6.7.1 leioctl函数 141 6.7.2 slioctl函数 142 6.7.3 loioctl函数 143 6.8 Internet实用函数 144 6.9 ifnet实用函数 144 6.10 小结 145 第7章 域和协议 ...
在Windows环境下,我们可以调用操作系统命令行工具来获取网卡的IP地址信息。例如,我们可以使用`ipconfig`命令来查询网络配置,其中包含了物理网卡(通常称为MAC地址)的信息。 以下是使用`ProcessBuilder`获取网卡...
STM32作为服务器端,需要处理TCP的状态机,包括CLOSED、LISTEN、SYN_SENT、SYN_RCVD、ESTABLISHED、FIN_WAIT_1、FIN_WAIT_2、CLOSE_WAIT、CLOSING、LAST_ACK、TIME_WAIT等状态。在接收和发送数据时,要注意处理TCP...
2. **解析数据**:获取到TCP连接表后,需要解析其中的每一项,提取IP地址、端口和状态等字段。易语言提供了数据类型转换和结构体操作的相关命令,如`整数转字符串`、`字节集到字符串`等。 3. **统计信息**:根据...
总结,Unix套接字编程涉及到TCP和UDP协议的理解,以及一系列与之相关的函数调用,如socket、bind、listen、accept、connect、send、recv、close等。了解这些基础知识是构建高效、可靠的网络应用程序的关键。在设计...
接下来,通过调用 `eXosip_listen_addr()` 函数来设置监听地址,其中 `IPPROTO_UDP` 表明使用 UDP 协议,`NULL` 指向绑定所有可用网络接口,`port` 是端口号,`AF_INET` 指定 IP 地址族为 IPv4,最后一个参数为 0 ...
`socket()`函数用于创建一个套接字,`bind()`函数绑定IP地址和端口号,`listen()`让服务器进入监听状态,等待客户端连接。对于客户端,`connect()`函数用于连接服务器。`accept()`函数则在服务器端接收客户端的连接...
6.6.11 删除IP地址:SIOCDIFADDR 140 6.7 接口ioctl处理 141 6.7.1 leioctl函数 141 6.7.2 slioctl函数 142 6.7.3 loioctl函数 143 6.8 Internet实用函数 144 6.9 ifnet实用函数 144 6.10 小结 145 第7章 域和协议 ...