国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

解決系統TIME_WAIT回收慢問題

IT那活兒 / 1188人閱讀
解決系統TIME_WAIT回收慢問題

點擊上方“IT那活兒”,關注后了解更多內容,不管IT什么活兒,干就完了!!!





問題概述



近期,客戶一套核心數據庫MySQL5.7版本在業務高峰時出現連接數激增,連接數觸及max_connections閾值,造成新建連接被拒絕,經分析所有連接中80%為TIME_WAIT狀態,存在TIME_WAIT連接回收慢問題。
操作系統版本:RedHat Enterprise7.4
uname -r :3.10.0-693.el7.x86_64





優化方案



參數:net.ipv4.tcp_tw_reuse = 1、net.ipv4.tcp_timestamps = 1,允許TIME_WAIT的Socket重新用于新的TCP連接。
參數:net.ipv4.tcp_fin_timeout = 10,默認為60s,下調為10s僅會改善FIN_WAIT_2狀態連接的數量,對TIME_WAIT連接數量不起作用。
參數:TCP_TIMEWAIT_LEN,硬編碼參數,默認為60s,Linux系統停留在 TIME_WAIT的時間為固定的60秒,調整此參數,需要改內核源碼,重新編譯內核。
以上參數中net.ipv4.tcp_tw_reuse、net.ipv4.tcp_timestamps、net.ipv4.tcp_fin_timeout無法滿足解決TIME_WAIT回收慢問題,需要通過調低參數TCP_TIMEWAIT_LEN,重新進行內核編譯提高TIME_WAIT的回收速度。





系統內核參數調整



1. 掛載鏡像包并配置YUM源
mount -o loop -t iso9660 ~/rhel-server-7.4-x86_64-dvd.iso /mnt/dvd
echo "mount -o loop -t iso9660 ~/rhel-server-7.4-x86_64-dvd.iso /mnt/dvd" >> ~/.bash_profile
cat > /etc/yum.repos.d/rhel-media.repo <[rhel-media]
name=Red Hat Enterprise Linux 7.4
baseurl=file:///mnt/dvd
enable=1
gpgcheck=0
gpgkey=file://mnt/dvd/RPM-GPG-KEY-redhat-release
EOF

mount -o loop -t iso9660 ~/CentOS-7-x86_64-Everything-1708.iso /mnt/dvd2
cat > /etc/yum.repos.d/centos-media.repo <[Centos7-Everything]
name=centos 7.4
baseurl=file:///mnt/dvd2
enabled=1
gpgcheck=0
EOF

yum clean all; yum makecache fast


2. 環境預配置

2.1 加快shell建立連接的速度:
sed -i s/.*UseDNS.*/UseDNS no/g /etc/ssh/sshd_config
2.2 增加歷史記錄數,便于問題回溯:
sed -i s/HISTSIZE=.*/HISTSIZE=100000/g /etc/profile
2.3 關閉強制訪問控制,重啟后確認已正常關閉:
sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/sysconfig/selinux
sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
2.4 重啟:
reboot
2.5 查看SELinux運行模式:
getenforce
2.6 關閉防火墻:
systemctl disable firewalld
3. 編譯準備
3.1 創建用戶、組:
groupadd mockbuild
useradd mockbuild -g mockbuild
3.2 安裝內核源碼包:
rpm -ivh kernel-3.10.0-693.el7.src.rpm
3.3 安裝依賴包:
yum install -y yum-utils
yum-builddep kernel-3.10.0-693.el7.src.rpm
yum install -y pesign elfutils-devel zlib-devel binutils-devel audit-libs-devel java-devel numactl-devel pciutils-devel ncurses-devel rpm-build bison
3.4 生成源碼:
cd ~/rpmbuild/SPECS/
rpmbuild -bp kernel.spec
4. 修改源碼
切換到源碼目錄并修改TCP_TIMEWAIT_LEN參數值。
cd ~/rpmbuild/BUILD/kernel-3.10.0-693.el7/linux-3.10.0-693.el7.x86_64
perl -p -i -e s/define TCP_TIMEWAIT_LEN (60*HZ)/define
TCP_TIMEWAIT_LEN (10*HZ)/g
 ./include/net/tcp.h
5. 編譯內核
5.1 拷貝當前內核配置到源碼根目錄:
cp /boot/config-3.10.0-693.el7.x86_64 .config
5.2 編譯:
make -j16
5.3 編譯安裝模塊:
make -j16 modules_install
5.4 安裝:
make install
6. 設置BOOT引導菜單
6.1 查看所有菜單入口,第一條為新編譯的內核:
awk -F $1=="menuentry " {print $2} /etc/grub2.cfg
6.2 設置從第一個菜單引導:
grub2-set-default 0 && init 6
6.3 驗證內核版本號:
uname -r






驗   證



1. 找到一個監聽端口:
netstat -an | grep LISTEN
2. 嘗試訪問本機的25端口:
telnet localhost 25
3. 退出,直接在屏幕上輸入QUIT+回車。
4. 觀察TIME_WAIT連接在10s后被回收:
while true
do
date;
netstat -an | grep TIME_WAIT
sleep 1s
done






總  結



通過調低系統內核參數TCP_TIMEWAIT_LEN的值,加快TIME_WAIT狀態會話的回收,減少無效連接的存在,同時也降低了對資源的占用。


本文作者:丁 偉

本文來源:IT那活兒(上海新炬王翦團隊)

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129610.html

相關文章

  • 【Java】留下沒有基礎眼淚的面試題

    摘要:表示連接已經成功建立。在這個狀態下,應用程序還有接受數據的能力,但是已經無法發送數據。表示收到了對方的報文,并發送出了報文。狀態下的連接會等待罕見的狀態。在窗口中還沒有發出的接收方還有空間。進程的親緣關系通常是指父子進程關系。 前言 只有光頭才能變強 本文力求簡單講清每個知識點,希望大家看完能有所收獲 一、如何減少線程上下文切換 使用多線程時,不是多線程能提升程序的執行速度,使用多線程...

    light 評論0 收藏0
  • centos系統大量time wait占用的解決

    摘要:發現存在大量狀態的連接通過調整內核參數解決編輯文件,加入以下內容然后執行讓參數生效。當出現等待隊列溢出時,啟用來處理,可防范少量攻擊,默認為,表示關閉表示開啟重用。 統計在一臺前端機上高峰時間TCP連接的情況,統計命令:netstat -n | awk /^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]} 除了ESTABLISHED,可以看...

    betacat 評論0 收藏0
  • 服務器TIME_WAIT和CLOSE_WAIT分析和解決辦法

    摘要:服務器出現異常最長出現的狀況是服務器保持了大量的狀態。此時主動關閉一方必須保持一個有效的狀態下維持狀態信息,以便可以重發。這就意味著,一個成功建立的連接,必須使得之前網絡中殘余的數據報都丟失了。,維持這些狀態給服務器端帶來巨大的負擔。 showImg(https://segmentfault.com/img/bV9DQk?w=732&h=563); showImg(https://se...

    LeanCloud 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<