句柄不回收,空間不釋放
關(guān)鍵字:
句柄不回收;空間不釋放;deleted;磁盤滿;磁盤使用率高;
現(xiàn)象:
磁盤使用率高,df -h和du -sh查看數(shù)據(jù)目錄,發(fā)現(xiàn)大小不同,差別很大。lsof查看發(fā)現(xiàn)有大量的文件處于deleted狀態(tài):
這類文件分三種,按照下面命令可以統(tǒng)計(jì)這類不回收文件的數(shù)量
1. base 目錄下數(shù)據(jù)文件:
lsof|grep deleted |grep base| wc -l
2. pg_xlog目錄下的xlog文件;
lsof|grep deleted |grep pg_xlog| wc -l
3. cm和om目錄下的各種目錄文件,這類文件句柄查出來有很多重復(fù)的,一般情況不用處理;
通過lsof|grep deleted |grep '.log'| wc -l
規(guī)避措施:
1. base目錄下數(shù)據(jù)文件和pg_xlog下xlog文件可以采用以下方法之一進(jìn)行處理:
方法一:kill dn實(shí)例。具體操作步驟如下:
gsql 連接CN, 執(zhí)行checkpoint;
在空間不回收的實(shí)例上殺掉dn進(jìn)程; 這里27620是上圖中dn的進(jìn)程號(hào),實(shí)際操作請(qǐng)?zhí)鎿Q給對(duì)應(yīng)的進(jìn)程號(hào):
kill -9?27620
影響:kill DN實(shí)例會(huì)導(dǎo)致當(dāng)前業(yè)務(wù)執(zhí)行報(bào)錯(cuò),請(qǐng)確認(rèn)后操作;
方法二:在線清理句柄。具體操作如下:
連接CN執(zhí)行checkpoint;
連接CN清理每個(gè)庫的空閑連接:
clean connection to all for database xxxx;
這里xxxx是數(shù)據(jù)庫名稱,通過 \l 命令可以查看當(dāng)前所有數(shù)據(jù)庫。對(duì)每個(gè)庫都做同樣的清理。
該動(dòng)作知會(huì)清理idle連接,不影響業(yè)務(wù)。
如果前面兩步執(zhí)行完,空間依舊不釋放,說明可能存在長連接,連接空間不釋放的實(shí)例,找出這些連接,全部殺掉即可。查詢語句如下:
select now()-query_start as ctime, * from pg_stat_activity where state='idle' order by ctime desc;
殺語句方法:
select pg_terminate_backend(pid) from pg_stat_activity where state='idle' order by ctime desc;
2. cm和om日志,這部分使用空間不大,一般只有幾十MB,可以不用處理。但是部分異常情況下,日志沒有分割,導(dǎo)致占用空間比較大:
規(guī)避措施分兩步:
查看om日志持續(xù)上漲的原因,這里27709是上圖中的進(jìn)程號(hào),3是文件句柄:
tailf /proc/27709/fd/3
根據(jù)報(bào)信息找研發(fā)處理對(duì)應(yīng)報(bào)錯(cuò);
清理存量數(shù)據(jù)
cat /dev/null > /proc/27709/fd/3
注釋:該方法不會(huì)釋放文件句柄,只是釋放空間,并保證空間不會(huì)上漲。
任務(wù)調(diào)度
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。