被swap坑了
- The Reason
今天web訪問的RT值突然大於200ms,除了CPU略有偏高,發現swap竟然也開始使用了,對於一個最大使用堆空間只有6G的java程式有的server使用swap空間甚至達到4G,導致web響應效能不同程度的下降,於是不願再使用swap.
- History
之前將 ”vm.overcommit_memory=1 “ 強制寫入/etc/security/limits.conf檔案,本想在程式請求分配記憶體時,永遠假裝還有足夠的記憶體,不想徹底禁用swap的使用選擇權,但是發現
cat /proc/sys/vm/overcommit_memory 並沒有生效,效果也不是很好,不得不放棄這種妥協的辦法。於是採取簡單粗暴的辦法。
- Action
1. 首先檢視哪些程序佔用swap較多,
執行語句:for i in $(cd /proc;ls | grep"^[0-9]" | awk '$0>100'); do awk '/Swap:/{a=a+$2}END{print'"$i"',a/1024"M"}' /proc/$i/smaps;done| sort -k2nr | head
eg:
[[email protected]****** ~]# for i in $(cd /proc;ls | grep"^[0-9]" | awk '$0>100'); do awk '/Swap:/{a=a+$2}END{print'"$i"',a/1024"M"}' /proc/$i/smaps;done| sort -k2nr | head
awk: cmd. line:1: fatal: cannot open file`/proc/17269/smaps' for reading (No such file or directory)
awk: cmd. line:1: fatal: cannot open file`/proc/17270/smaps' for reading (No such file or directory)
awk: cmd. line:1: fatal: cannot open file`/proc/17271/smaps' for reading (No such file or directory)
awk: cmd. line:1: fatal: cannot open file`/proc/17272/smaps' for reading (No such file or directory)
31341 2688.97M
2026 4.19922M
2220 0.863281M
2464 0.820312M
2457 0.792969M
2342 0.617188M
2540 0.578125M
2509 0.550781M
1719 0.53125M
75276 0.480469M
2.找出程序,殺掉佔用最大的那個程序,對於我們的web環境,基本無疑問是jboss程序。。。
eg:
執行指令: ps axu|grep 31341
3.強行殺掉此程序後,關掉swap
執行指令: pkill -9 java;swapoff –a
4.再次檢視swap,total為0,再沒有使用了。。。
5.設定開機關閉swap
echo ‘swapoff -a’ >> /etc/rc.d/rc.sysinit
6.為確保萬一,極力減少程序對swap的使用,設定最大限度降低swap的載入:
vm.swapness = 0
7.最後再啟動jboss服務。。。。
總結:粗糙指令碼執行如下:
~]# cat swapoff.sh
#!/bin/bash
#Describle close swap
#History 01/03/2017
#Author DYL
#Version 1.0
#殺掉jboss程序
pkill -9 java
#關掉swap
swapoff -a
#開機關閉swap
echo 'swapoff -a' >> /etc/rc.d/rc.sysinit
#最大限度降低swap的載入
grep "swapness" /etc/sysctl.conf
if [ $? -eq 0 ]
then
sed -i "s/vm.swap.*$/vm.swappiness = 0/g" /etc/sysctl.conf
else
echo "#Set least swap partion"
echo "vm.swappiness = 0" >> /etc/sysctl.conf
fi
#啟動jboss服務
su jboss -c "sh /jboss/jboss/bin/jboss.sh "
###############The End####################
Author:網名為什麼那麼長