摘要:目前我生产服务器的的值是,而我应用程序启动的端口是,因此为了避免自连接的情况,我必须把的值修改为,修改方法为修改为加载生效参考资料
今天在生产系统上遇到一个故障,先描述下:
1、目前我的 nginx 的配置是启动的 80 端口,然后我有一个后台服务是启动的 8080 端口
我使用 nginx 做的反向代理,后台服务挂掉后会自启动,目前遇到的问题是,后台服务挂掉后,再自启动的时候报错:
Bind port 8080 error: Address already in use
nginx 的配置:
upstream test.com{ server 127.0.0.1:8080; } server { listen 80; server_name test.com; index index.html index.htm index.php; location / { proxy_pass http://test.com; add_header cache-control "no-cache, max-age=0"; add_header Pragma "no-cache"; }
然后 netstat 看:
sudo netstat -anpto |grep 127.0.0.1 tcp 0 0 127.0.0.1:8080 127.0.0.1:8080 ESTABLISHED 3841/nginx off (0.00/0/0)
然后疑惑的是,为什么出现上面的情况,经过发个帖子 http://segmentfault.com/q/1010000002396121?_ea=74605 询问了下,然后再自己 google 和 SF 一番,发现是 tcp 的自连接问题,目前 linux 是默认允许这种情况存在的,解决这个问题的方法很简单:
你自己的程序处理自连接的情况
修改 linux 服务器的随机端口范围,使得服务器绑定的端口不在随机端口范围内。
你自己的程序处理自连接的情况
这个如果是自己的程序的话,那就自己写程序处理吧,但是因为我这个是 nginx ,所以没法修改,因此只好走第二条路了。
修改 linux 服务器的随机端口范围
修改服务器的 /proc/sys/net/ipv4/ip_local_port_range 里面的值。
目前我生产服务器的 /proc/sys/net/ipv4/ip_local_port_range 的值是 1024 65535,而我应用程序启动的端口是 8080,因此为了避免自连接的情况,我必须把 /proc/sys/net/ipv4/ip_local_port_range 的值修改为 8081 65535,修改方法为:
vim /etc/sysctl.conf
修改为
/proc/sys/net/ipv4/ip_local_port_range=8081 65535
加载生效
sysctl -p参考资料
http://segmentfault.com/blog/rockybean/1190000002396411
https://realaboo.wordpress.com/2009/12/28/%E6%9C%89%E8%B6%A3%E7%9A%84-single-port-self-connection-%E7%8E%B0%E8%B1%A1/
http://blog.csdn.net/kofshower/article/details/5316580
http://in.sdo.com/?p=3044
http://blog.csdn.net/justlinux2010/article/details/20947609
http://sgros.blogspot.com/2013/08/tcp-client-self-connect.html
http://skoo.me/system/2014/10/11/self-connection/
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/39105.html
摘要:一个基于协议,开发的数据库连接池。也可以通过其自身的管理机制来监视数据库连接的数量使用情况等。超出最大连接数会采用协程挂起,等到有连接关闭再恢复协程继续操作。 SMProxy GITHUB:https://github.com/louislivi/... Swoole MySQL Proxy 一个基于 MySQL 协议,Swoole 开发的MySQL数据库连接池。 原理 将数据库连接作...
摘要:完成客户端服务器通信,需要基于协议之上,自定义一套简单的通信协议,其中数据交换方式需要使用自定义帧。输入数据处理器以下为输入数据的第一个处理器,可以保证无论帧经历怎样的粘包拆包,均可以准确提取每一个自定义帧的数据部分。 「博客搬家」 原地址: 简书 原发表时间: 2017-03-26 本文采用 Netty 这一最流行的 Java NIO 框架,作为 Java 服务器通信部分的基础...
阅读 2620·2021-11-11 16:55
阅读 660·2021-09-04 16:40
阅读 3056·2019-08-30 15:54
阅读 2600·2019-08-30 15:54
阅读 2384·2019-08-30 15:46
阅读 386·2019-08-30 15:43
阅读 3208·2019-08-30 11:11
阅读 2964·2019-08-28 18:17