golang,redigo 使用中 Cannot assign requested address的解决办法
来源:互联网 发布:帝国时代2征服者mac版 编辑:程序博客网 时间:2024/05/23 19:13
go使用redigo建立redis连接池处理高流量数据缓存
情景:
高并发,高流量,分布式
问题:
“Cannot assign requested address.”是由于Linux分配的客户端连接端口用尽,无法建立socket连接所致,虽然socket正常关闭,但是端口不是立即释放,而是处于TIME_WAIT状态,默认等待60s后才释放。
解决:
1.高并发情况下,调高MaxIdle (根据qps自行计算)
2.减少defer使用
3.减少程序中无效内存使用,连接使用完毕后快速释放
4.tcp释放时间,减小。修改 linux配置文件调整,调低time_wait状态端口等待时间:
1. 调低端口释放后的等待时间,默认为60s,修改为15~30ssysctl -w net.ipv4.tcp_fin_timeout=30
2. 修改tcp/ip协议配置, 通过配置/proc/sys/net/ipv4/tcp_tw_resue, 默认为0,修改为1,释放TIME_WAIT端口给新连接使用
sysctl -w net.ipv4.tcp_timestamps=1
3. 修改tcp/ip协议配置,快速回收socket资源,默认为0,修改为1
sysctl -w net.ipv4.tcp_tw_recycle=1
修改参数:
$ vi /etc/sysctl.conf
net.ipv4.ip_local_port_range = 10000 65000 -----意味着10000~65000端口可用
改完后,执行命令“sysctl -p”使参数生效,不需要reboot。
阅读全文
1 0
- golang,redigo 使用中 Cannot assign requested address的解决办法
- Cannot assign requested address的解决办法
- Cannot assign requested address的解决办法
- Redis:Cannot assign requested address的解决办法
- Cannot assign requested address的解决办法
- Cannot assign requested address的解决办法
- Cannot assign requested address的解决办法
- Cannot assign requested address的解决办法
- Cannot assign requested address的解决办法
- Cannot assign requested address解决办法
- Cannot assign requested address解决办法
- Cannot assign requested address以及大量的TIME_WAIT解决办法
- Cannot assign requested address
- Cannot assign requested address
- Cannot assign requested address
- Cannot assign requested address
- java.net.BindException: Cannot assign requested address: JVM_Bind:8080解决办法
- bind: Cannot assign requested address
- redis 配置
- Action Recognition(2)
- Python判断telnet通不通
- A
- Hrbust 2095 奶牛家谱【Dp】
- golang,redigo 使用中 Cannot assign requested address的解决办法
- php回调函数学习笔记
- 详解Tomcat 配置文件server.xml
- 输出一个整数的阶乘
- BZOJ 1002 矩阵树找规律递推高精度 解题报告
- redis 重启
- Single Number II
- mysql如何进行以, -,.分割的字符串的拆分,解决数字字符串分割问题
- CCF201604-04-游戏