摘要:目前我生產(chǎn)服務(wù)器的的值是,而我應(yīng)用程序啟動的端口是,因此為了避免自連接的情況,我必須把的值修改為,修改方法為修改為加載生效參考資料
今天在生產(chǎn)系統(tǒng)上遇到一個故障,先描述下:
1、目前我的 nginx 的配置是啟動的 80 端口,然后我有一個后臺服務(wù)是啟動的 8080 端口
我使用 nginx 做的反向代理,后臺服務(wù)掛掉后會自啟動,目前遇到的問題是,后臺服務(wù)掛掉后,再自啟動的時候報錯:
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)
然后疑惑的是,為什么出現(xiàn)上面的情況,經(jīng)過發(fā)個帖子 http://segmentfault.com/q/1010000002396121?_ea=74605 詢問了下,然后再自己 google 和 SF 一番,發(fā)現(xiàn)是 tcp 的自連接問題,目前 linux 是默認(rèn)允許這種情況存在的,解決這個問題的方法很簡單:
你自己的程序處理自連接的情況
修改 linux 服務(wù)器的隨機(jī)端口范圍,使得服務(wù)器綁定的端口不在隨機(jī)端口范圍內(nèi)。
你自己的程序處理自連接的情況
這個如果是自己的程序的話,那就自己寫程序處理吧,但是因為我這個是 nginx ,所以沒法修改,因此只好走第二條路了。
修改 linux 服務(wù)器的隨機(jī)端口范圍
修改服務(wù)器的 /proc/sys/net/ipv4/ip_local_port_range 里面的值。
目前我生產(chǎn)服務(wù)器的 /proc/sys/net/ipv4/ip_local_port_range 的值是 1024 65535,而我應(yīng)用程序啟動的端口是 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/
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/39105.html
摘要:一個基于協(xié)議,開發(fā)的數(shù)據(jù)庫連接池。也可以通過其自身的管理機(jī)制來監(jiān)視數(shù)據(jù)庫連接的數(shù)量使用情況等。超出最大連接數(shù)會采用協(xié)程掛起,等到有連接關(guān)閉再恢復(fù)協(xié)程繼續(xù)操作。 SMProxy GITHUB:https://github.com/louislivi/... Swoole MySQL Proxy 一個基于 MySQL 協(xié)議,Swoole 開發(fā)的MySQL數(shù)據(jù)庫連接池。 原理 將數(shù)據(jù)庫連接作...
摘要:完成客戶端服務(wù)器通信,需要基于協(xié)議之上,自定義一套簡單的通信協(xié)議,其中數(shù)據(jù)交換方式需要使用自定義幀。輸入數(shù)據(jù)處理器以下為輸入數(shù)據(jù)的第一個處理器,可以保證無論幀經(jīng)歷怎樣的粘包拆包,均可以準(zhǔn)確提取每一個自定義幀的數(shù)據(jù)部分。 「博客搬家」 原地址: 簡書 原發(fā)表時間: 2017-03-26 本文采用 Netty 這一最流行的 Java NIO 框架,作為 Java 服務(wù)器通信部分的基礎(chǔ)...
閱讀 2659·2021-11-11 16:55
閱讀 697·2021-09-04 16:40
閱讀 3093·2019-08-30 15:54
閱讀 2635·2019-08-30 15:54
閱讀 2424·2019-08-30 15:46
閱讀 418·2019-08-30 15:43
閱讀 3241·2019-08-30 11:11
閱讀 2995·2019-08-28 18:17