摘要:目前我生產服務器的的值是,而我應用程序啟動的端口是,因此為了避免自連接的情況,我必須把的值修改為,修改方法為修改為加載生效參考資料
今天在生產系統上遇到一個故障,先描述下:
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/
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39105.html
摘要:一個基于協議,開發的數據庫連接池。也可以通過其自身的管理機制來監視數據庫連接的數量使用情況等。超出最大連接數會采用協程掛起,等到有連接關閉再恢復協程繼續操作。 SMProxy GITHUB:https://github.com/louislivi/... Swoole MySQL Proxy 一個基于 MySQL 協議,Swoole 開發的MySQL數據庫連接池。 原理 將數據庫連接作...
摘要:完成客戶端服務器通信,需要基于協議之上,自定義一套簡單的通信協議,其中數據交換方式需要使用自定義幀。輸入數據處理器以下為輸入數據的第一個處理器,可以保證無論幀經歷怎樣的粘包拆包,均可以準確提取每一個自定義幀的數據部分。 「博客搬家」 原地址: 簡書 原發表時間: 2017-03-26 本文采用 Netty 這一最流行的 Java NIO 框架,作為 Java 服務器通信部分的基礎...
閱讀 2643·2021-11-11 16:55
閱讀 680·2021-09-04 16:40
閱讀 3078·2019-08-30 15:54
閱讀 2615·2019-08-30 15:54
閱讀 2403·2019-08-30 15:46
閱讀 404·2019-08-30 15:43
閱讀 3227·2019-08-30 11:11
閱讀 2983·2019-08-28 18:17