[20180129]測量網路斷開時間.txt

lfree發表於2018-01-29

[20180129]測量網路斷開時間.txt

--//我們分院與總院使用電信網路,網路鏈路如果一定時間空閒,就自動斷開,我一直非常想了解準確的斷開時間.
--//手工測試看看,主要目的是可以設定tcp_keepalive*引數或者SQLNET.EXPIRE_TIME引數.

1.修改相關設定:

# echo /proc/sys/net/ipv4/tcp_keepalive* | xargs   -n 1  strings -1 -f
/proc/sys/net/ipv4/tcp_keepalive_intvl: 10
/proc/sys/net/ipv4/tcp_keepalive_probes: 4
/proc/sys/net/ipv4/tcp_keepalive_time: 7200

--//修改 /etc/sysctl.conf:
net.ipv4.tcp_keepalive_time = 7200

--//執行sysctl -p 生效.
# sysctl -p

--//註解$ORACLE_HOME/network/admin/sqlnet.ora
# grep -i SQLNET.EXPIRE_TIME sqlnet.ora
#SQLNET.EXPIRE_TIME = 1

--//建立測試指令碼aa.txt與bb.txt在客戶端:

cat aa.txt
select sysdate from dual;
host sleep &&1
select sysdate from dual;

cat bb.txt
@@ aa.txt 540
@@ aa.txt 600
@@ aa.txt 660
@@ aa.txt 720
@@ aa.txt 780
@@ aa.txt 840
@@ aa.txt 900
@@ aa.txt 960
@@ aa.txt 1020
@@ aa.txt 1080

--//最佳的方式是使用二分法,有點懶...^_^.

2.測試:
--//client 登入執行bb.txt指令碼.server端開啟tcpdump 監測網路情況:
# tcpdump -i bond1 host 192.168.98.6 and port 1521 -nn -vv
...

xxxx> @ bb.txt
...

SYSDATE
-------------------
2018-01-29 14:59:31


SYSDATE
-------------------
2018-01-29 15:09:31

SYSDATE
-------------------
2018-01-29 15:09:31


select sysdate from dual
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 20162
Session ID: 258 Serial number: 44121

--//600秒OK,660秒無法透過.
--//修改bb.txt如下,繼續測試:
@@ aa.txt 610
@@ aa.txt 620
@@ aa.txt 630
@@ aa.txt 640
@@ aa.txt 650
@@ aa.txt 660

xxxx> @ bb.txt
SYSDATE
-------------------
2018-01-29 15:42:10


select sysdate from dual
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 18919
Session ID: 110 Serial number: 52705

--//測試大約600秒.精確定位看看.
@@ aa.txt 599
@@ aa.txt 600
@@ aa.txt 601

xxxx> @ bb.txt
SYSDATE
-------------------
2018-01-29 16:29:58


SYSDATE
-------------------
2018-01-29 16:39:56

SYSDATE
-------------------
2018-01-29 16:39:56


SYSDATE
-------------------
2018-01-29 16:49:56

SYSDATE
-------------------
2018-01-29 16:49:56


select sysdate from dual
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 13003
Session ID: 706 Serial number: 46389

--//可以看出如果網路空閒600秒,基本斷開.
--//根據上面的測試設定SQLNET.EXPIRE_TIME = 4(這個單位是分鐘,設定5應該問題不大),或者設定net.ipv4.tcp_keepalive_time = 590.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2150614/,如需轉載,請註明出處,否則將追究法律責任。

相關文章