下面是范文網(wǎng)小編分享的linux服務(wù)器內(nèi)存占用過大解決辦法linux操作系統(tǒng)7篇 linux查看服務(wù)器內(nèi)存占用,供大家品鑒。
linux服務(wù)器內(nèi)存占用過大解決辦法linux操作系統(tǒng)1
Superfetch并不是一個(gè)新的技術(shù),在Vista時(shí)代就已經(jīng)開始采用,不過鑒于用過Vista的人數(shù)比較少,而XP時(shí)代的各種電腦技巧始終還深入人心,所以很多人都在疑問為何Windows 7內(nèi)存占用如此之大,
Superfetch內(nèi)存管理機(jī)制會(huì)將用戶可能使用的應(yīng)用程序頁面利用內(nèi)存可用空間進(jìn)行預(yù)加載;盡可能地避免系統(tǒng)發(fā)生從硬盤的頁面調(diào)用;讓應(yīng)用程序最快速度開啟;不會(huì)由于計(jì)算機(jī)長(zhǎng)時(shí)間閑置而使突然使用變得響應(yīng)遲緩;在退出大型應(yīng)用程序后會(huì)主動(dòng)將之前被迫轉(zhuǎn)移到虛擬內(nèi)存中的頁面重新調(diào)入內(nèi)存當(dāng)中。這樣看起來似乎專業(yè)了點(diǎn),所以接著往下看,會(huì)很好地對(duì)這些特點(diǎn)進(jìn)行理解。
為何第一次啟動(dòng)程序會(huì)感覺很慢?
相信大家都有過類似的經(jīng)歷。當(dāng)我開機(jī)后,第一次運(yùn)行一個(gè)程序,就比如說是Word吧,可能需要5秒才能啟動(dòng)。當(dāng)我關(guān)閉后再開,也許只用2秒。如果我不關(guān)閉,直接打開另外一個(gè)Word文件,那就更快了。
這是什么原因造成的呢?
當(dāng)我們開機(jī)后,工作集里面沒有Word這個(gè)員工(頁面),他還在家(硬盤)里面。于是當(dāng)我召喚他的時(shí)候,它才從家走到辦公室(工作集)。這樣的過程就叫做硬調(diào)頁了,當(dāng)然需要的時(shí)間長(zhǎng)。而當(dāng)我們關(guān)閉了Word時(shí)候,他就被派往大廈的另一房間,我卻馬上再次召喚他,這時(shí),另一個(gè)房間內(nèi)的數(shù)據(jù)還沒被清零,他便不用從家里走來,而是直接從數(shù)據(jù)結(jié)構(gòu)里面引入就可以了。在不關(guān)閉這個(gè)程序Word的情況下,他也不用為其他程序讓路的時(shí)候,它還存在于辦公室(工作集)里面,召喚他的時(shí)候就會(huì)更快。這樣的無需從硬盤中重新調(diào)用數(shù)據(jù),而是將數(shù)據(jù)結(jié)構(gòu)中的頁面重新掛載到工作集中的過程,便叫做軟調(diào)頁了。大家都知道內(nèi)存速度遠(yuǎn)遠(yuǎn)快于硬盤,所以軟調(diào)頁的使用就是第二次運(yùn)行程序變得很快的原因了。
Windows 7內(nèi)存占用大的原因
現(xiàn)在我們知道了當(dāng)內(nèi)存中有所需程序頁面的時(shí)候會(huì)使程序啟動(dòng)變得更快。而Windows 7中的Superfetch已經(jīng)具有了學(xué)習(xí)的功能,自從第一次使用Windows 7時(shí),Superfetch就開始記錄我們的使用習(xí)慣,將我們經(jīng)常使用的程序的頁面在開機(jī)后進(jìn)行提前加載,那么當(dāng)我們第一次開啟程序的時(shí)候便可以獲得像第二次開啟一樣的速度了。所以這些預(yù)加載的頁面就會(huì)使得我們的內(nèi)存占用變多。簡(jiǎn)單地說就是讓所有程序操作在內(nèi)存中進(jìn)行,避免使用硬盤硬調(diào)頁空間,這也就是為何感覺Windows 7占用很大內(nèi)存的原因。
查看預(yù)加載的內(nèi)存
而在XP時(shí)代,也許你也有過類似的經(jīng)歷:當(dāng)開始使用一些程序后,由于有事便離開了,
回來的時(shí)候卻發(fā)現(xiàn)系統(tǒng)響應(yīng)十分緩慢,特別糟糕。這是由于XP的內(nèi)存管理模式效率非常低下。
當(dāng)我們離開后,程序都處于不使用狀態(tài)。這時(shí)系統(tǒng)的一些后臺(tái)程序,如磁盤整理、殺毒軟件等程序就會(huì)全速運(yùn)行,導(dǎo)致我們使用的一些程序頁面不得不被擠到了硬盤虛擬內(nèi)存中??墒钱?dāng)這些后臺(tái)程序完成任務(wù)后,XP系統(tǒng)并不會(huì)把之前被擠到虛擬內(nèi)存的 頁面導(dǎo)回內(nèi)存里。于是在再次使用電腦時(shí),系統(tǒng)才會(huì)手忙腳亂的進(jìn)行臨時(shí)調(diào)配,甚至是硬調(diào)頁。導(dǎo)致程序響應(yīng)極其遲緩。所以看上去XP的空閑內(nèi)存很多,事實(shí)上都 沒起什么太大的作用。
Windows 7使用建議
任何人都希望通過優(yōu)化的手段讓自己的電腦運(yùn)行速度達(dá)到最理想的狀態(tài),而內(nèi)存又是影響電腦運(yùn)行速度非常重要的因素,我們?cè)诹私饬薟indows 7 的內(nèi)存管理機(jī)制,再來介紹哪些方法可以給系統(tǒng)加速。
1、多使用休眠和睡眠
由于SuperFetch要在開機(jī)后進(jìn)行預(yù)加載,所以建議大家不要關(guān)機(jī)。盡量使用休眠或睡眠,這樣SuperFetch的預(yù)加載內(nèi)容就會(huì)保留。從而提高速度和效率。
2、使用ReadyBoost
很多從XP升上來的用戶由于系統(tǒng)的內(nèi)存不夠大,所以無法全面的發(fā)揮SuperFetch的功能。我們可以使用ReadyBoost功能來幫 我們解決這個(gè)難題。
只要符合條件的閃存都可以加速我們的系統(tǒng)。ReadyBoost功能是利用閃存的容量作為SuperFetch預(yù)加載頁面的儲(chǔ)存空間。但由于微 軟采用了特殊的算法,所以并不會(huì)影響閃存的壽命。還有,用于ReadyBoost的閃存最好為物理內(nèi)存大小1~2.5倍。如果系統(tǒng)物理內(nèi)存足夠大的話,就 沒有必要使用ReadyBoost了。右鍵點(diǎn)擊U盤盤 符選擇屬性,切換到readyboost一欄,速度達(dá)到標(biāo)準(zhǔn)的U盤都可以開啟這個(gè)功能。
不是所有U盤都能使用
通過對(duì)SuperFetch的了解,希望更多的朋友進(jìn)入使用Windows 7的隊(duì)伍中來。其實(shí)同為Windows,不同又能到哪里呢?不習(xí)慣也就是一時(shí)的。畢竟,經(jīng)過了Vista的磨練,Windows 7也會(huì)變得更成熟!
Tips:什么是工作集
我們可以簡(jiǎn)單的將內(nèi)存理解為數(shù)據(jù)結(jié)構(gòu) 工作集的一個(gè)結(jié)合,簡(jiǎn)單的說,應(yīng)用程序在運(yùn)行過程中進(jìn)程所占用內(nèi)存中的工作空間就叫做工作集。
linux服務(wù)器內(nèi)存占用過大解決辦法linux操作系統(tǒng)2
可在Windows Server 2003中打開“控制面板”→“管理工具”→“終端服務(wù)配置”,在打開窗口中選擇“連接”,并雙擊右側(cè)的“RDP-Tcp”選項(xiàng),在彈出對(duì)話框中切換到“會(huì)話”標(biāo)簽,選擇“替代用戶設(shè)置”,并修改“結(jié)束已斷開的會(huì)話”為“1分鐘”,
如問題未能解決,則可在“運(yùn)行”欄中執(zhí)行“gpedit.msc”命令,打開組策略編輯器,一次展開“計(jì)算機(jī)配置”→“管理模板”→“Windows組件”→“終端服務(wù)”,并雙擊右側(cè)窗格中的“限制連接數(shù)量”策略,在彈出窗口中選擇“已啟用”,并設(shè)置“TS允許的最大連接數(shù)”為“999999”,即可解除遠(yuǎn)程終端的連接數(shù)限制。
linux服務(wù)器內(nèi)存占用過大解決辦法linux操作系統(tǒng)3
使用windows iis環(huán)境的朋友可能會(huì)發(fā)現(xiàn)上傳比較大的文件居然會(huì)上傳不了,后來百度了一下發(fā)現(xiàn)是iis7自己限制了上傳文件大小,我們只要修改web.config中的maxRequestLength即可,
在IIS7下,即便你在web.config設(shè)置了maxRequestLength=”1048576”最大允許上傳的大小,也是沒用的,其實(shí)是受C:/Windows/System32/inetsrv/config/applicationHost.config的限制, 默認(rèn)最大只能上傳30M的文件,修改下這個(gè)文件就好了,在該文件的system.webServer/security/requestFiltering/節(jié)內(nèi)添加
“ />
就行了,將修改為你要允許的大小,注意,這里的單位是bytes,而web.config里的maxRequestLength的單位是KB
具體方法如下
目標(biāo)是要修改文件C:/Windows/System32/inetsrv/config/schema/IIS_schema.xml?。紅色下劃線部分使我們要修改的目標(biāo)位置,
代碼如下復(fù)制代碼問題在于,這個(gè)文件是只讀的,即使用管理員權(quán)限也不能修改。要先修改文件的權(quán)限,然后去掉只讀屬性才可以。
1.右鍵文件->屬性->安全,選中目標(biāo)用戶,點(diǎn)擊高級(jí),修改文件所有者;
2.確定后點(diǎn)擊編輯,就可以修改當(dāng)前用戶的權(quán)限了,添加“寫入”權(quán)限。至此,權(quán)限設(shè)置OK了。
3.將文件的只讀屬性去掉。
4.以管理員身份打開VS,然后在VS中編輯目標(biāo)XML文件,修改所需位置即可。
修改后重啟IIS.
linux服務(wù)器內(nèi)存占用過大解決辦法linux操作系統(tǒng)4
使用Windows操作系統(tǒng)的人有時(shí)會(huì)遇到這樣的錯(cuò)誤信息:“0X????????指令引用的0x00000000內(nèi)存,該內(nèi)存不能written”,然后應(yīng)用程序被關(guān)閉,如果去請(qǐng)教一些“高手”,得到的回答往往是“Windows就是這樣不穩(wěn)定”之類的義憤和不屑。其實(shí),這個(gè)錯(cuò)誤并不一定是Windows不穩(wěn)定造成的。本文就來簡(jiǎn)單分析這種錯(cuò)誤的常見原因。
一、應(yīng)用程序沒有檢查內(nèi)存分配失敗
程序需要一塊內(nèi)存用以保存數(shù)據(jù)時(shí),就需要調(diào)用操作系統(tǒng)提供的“功能函數(shù)”來申請(qǐng),如果內(nèi)存分配成功,函數(shù)就會(huì)將所新開辟的內(nèi)存區(qū)地址返回給應(yīng)用程序,應(yīng)用程序就可以通過這個(gè)地址使用這塊內(nèi)存。這就是“動(dòng)態(tài)內(nèi)存分配”,內(nèi)存地址也就是編程中的“指針”。
內(nèi)存不是永遠(yuǎn)都招之即來、用之不盡的,有時(shí)候內(nèi)存分配也會(huì)失敗。當(dāng)分配失敗時(shí)系統(tǒng)函數(shù)會(huì)返回一個(gè)0值,這時(shí)返回值“0”已不表示新啟用的指針,而是系統(tǒng)向應(yīng)用程序發(fā)出的一個(gè)通知,告知出現(xiàn)了錯(cuò)誤。作為應(yīng)用程序,在每一次申請(qǐng)內(nèi)存后都應(yīng)該檢查返回值是否為0,如果是,則意味著出現(xiàn)了故障,應(yīng)該采取一些措施挽救,這就增強(qiáng)了程序的“健壯性”。
若應(yīng)用程序沒有檢查這個(gè)錯(cuò)誤,它就會(huì)按照“思維慣性”認(rèn)為這個(gè)值是給它分配的可用指針,繼續(xù)在之后的運(yùn)行中使用這塊內(nèi)存。真正的0地址內(nèi)存區(qū)保存的是計(jì)算機(jī)系統(tǒng)中最重要的“中斷描述符表”,絕對(duì)不允許應(yīng)用程序使用。在沒有保護(hù)機(jī)制的操作系統(tǒng)下(如DOS),寫數(shù)據(jù)到這個(gè)地址會(huì)導(dǎo)致立即死機(jī),而在健壯的操作系統(tǒng)中,如Windows等,這個(gè)操作會(huì)馬上被系統(tǒng)的保護(hù)機(jī)制捕獲,其結(jié)果就是由操作系統(tǒng)強(qiáng)行關(guān)閉出錯(cuò)的應(yīng)用程序,以防止其錯(cuò)誤擴(kuò)大,
這時(shí)候,就會(huì)出現(xiàn)上述的“寫內(nèi)存”錯(cuò)誤,并指出被引用的內(nèi)存地址為“0x00000000”。
內(nèi)存分配失敗故障的原因很多,內(nèi)存不夠、系統(tǒng)函數(shù)的版本不匹配等都可能有影響。因此,這種分配失敗多見于操作系統(tǒng)使用很長(zhǎng)時(shí)間后,安裝了多種應(yīng)用程序(包括無意中“安裝”的病毒程序),更改了大量的系統(tǒng)參數(shù)和系統(tǒng)文件之后。
二、應(yīng)用程序由于自身BUG引用了不正常的內(nèi)存指針
在使用動(dòng)態(tài)分配的應(yīng)用程序中,有時(shí)會(huì)有這樣的情況出現(xiàn):程序試圖讀寫一塊“應(yīng)該可用”的內(nèi)存,但不知為什么,這個(gè)預(yù)料中可用的指針已經(jīng)失效了。有可能是“忘記了”向操作系統(tǒng)要求分配,也可能是程序自己在某個(gè)時(shí)候已經(jīng)注銷了這塊內(nèi)存而“沒有留意”等等。注銷了的內(nèi)存被系統(tǒng)回收,其訪問權(quán)已經(jīng)不屬于該應(yīng)用程序,因此讀寫操作也同樣會(huì)觸發(fā)系統(tǒng)的保護(hù)機(jī)制,企圖“違法”的程序唯一的下場(chǎng)就是 作終止運(yùn)行,回收全部資源。計(jì)算機(jī)世界的法律還是要比人類有效和嚴(yán)厲得多?。?/p>
像這樣的情況都屬于程序自身的BUG,你往往可在特定的操作順序下重現(xiàn)錯(cuò)誤。無效指針不一定總是0,因此錯(cuò)誤提示中的內(nèi)存地址也不一定為“0x00000000”,而是其他隨機(jī)數(shù)字。
如果系統(tǒng)經(jīng)常有所提到的錯(cuò)誤提示,下面的建議可能會(huì)有幫助:
1.查看系統(tǒng)中是否有木馬或病毒。這類程序?yàn)榱丝刂葡到y(tǒng)往往不負(fù)責(zé)任地修改系統(tǒng),從而導(dǎo)致操作系統(tǒng)異常。平常應(yīng)加強(qiáng)信息安全意識(shí),對(duì)來源不明的可執(zhí)行程序絕不好奇。
2.更新操作系統(tǒng),讓操作系統(tǒng)的安裝程序重新拷貝正確版本的系統(tǒng)文件、修正系統(tǒng)參數(shù)。有時(shí)候操作系統(tǒng)本身也會(huì)有BUG,要注意安裝官方發(fā)行的升級(jí)程序。
3.試用新版本的應(yīng)用程序。
linux服務(wù)器內(nèi)存占用過大解決辦法linux操作系統(tǒng)5
因?yàn)橛辛朔?wù)器,所以有了數(shù)據(jù)的讀取順序,因?yàn)橐獙?shí)現(xiàn)順序,所以有了“鎖”,因?yàn)橛辛恕版i”,結(jié)果我們的服務(wù)器阻塞了
服務(wù)器阻塞是個(gè)很頭疼的問題,多少個(gè)日日夜夜,只因?yàn)榉?wù)器的呼喚,我一路狂奔就去醫(yī)院殺“阻塞進(jìn)程”去了,
搞完ISO15189,我想解決這個(gè)問題。
一、自動(dòng)解鎖。
使用Select @@LOCK_TIMEOUT命令可以看得到當(dāng)前數(shù)據(jù)庫加鎖的超時(shí)期限,單位是毫秒。如果為“-1”,代表不會(huì)有超時(shí),服務(wù)器將會(huì)一直處于加鎖狀態(tài)。
因此,我能想到的第一種方法就是”SET LOCK_TIMEOUT 30000″。既然服務(wù)器都給予了這樣一個(gè)功能,那我不如直接用上。按照如上設(shè)定,如果加鎖持續(xù)了30秒,則自動(dòng)解鎖!
想象很美好,但是現(xiàn)實(shí)很殘酷,第二天,我還是跑過去殺進(jìn)程去了!阻塞的進(jìn)程壓根就會(huì)一直存在!
二、自動(dòng)結(jié)束阻塞進(jìn)程
以下為結(jié)束阻塞進(jìn)程的SQL存儲(chǔ)過程:
--結(jié)束SQL阻塞的進(jìn)程%%%%%%%%%%%%%%%%%%%%%%
代碼如下復(fù)制代碼create procedure sp_Kill_lockProcess
as
begin
SET NOCOUNT ON
declare @spid int,@bl int,
@intTransactionCountOnEntry int,
@intRowcount int,
@intCountProperties int,
@intCounter int,
@sSql nvarchar (200)
create table #tmp_lock_who (
id int identity(1,1),
Spid smallint,
bl smallint)
iF @@ERROR0 RETURN @@ERROR
insert into #tmp_lock_who(spid,bl)
Select 0 ,blocked
from
(select * from sysprocesses where blocked>0 ) a
Where not exists
(
Select * from (select * from sysprocesses where blocked>0 ) b
Where a.blocked=spid
)
union select spid,blocked from sysprocesses where blocked>0
iF @@ERROR0 RETURN @@ERROR
-- 找到臨時(shí)表的記錄數(shù)
Select @intCountProperties = Count(*),@intCounter = 1
from #tmp_lock_who
iF @@ERROR0 RETURN @@ERROR
While @intCounter
begin
-- 取第一 條記錄
Select @spid = spid,@bl = bl
from #tmp_lock_who where Id = @intCounter
begin
if @spid =0
begin
Set @sSql='kill ' + CAST(@bl AS VARCHAR(10))
exec sp_executesql @sSql
end
end
-- 循環(huán)指針下移
Set @intCounter = @intCounter + 1
end
drop table #tmp_lock_who
SET NOCOUNT OFF
return 0
end
go
將上述語句執(zhí)行后,在master數(shù)據(jù)庫下,即可以找到存儲(chǔ)過程sp_Kill_lockProcess,
在SQL SERVER代理中添加作業(yè)KillBlocking,將執(zhí)行時(shí)間設(shè)置為每10分鐘一次,搞定!
測(cè)試一下,每天可以殺死三個(gè)阻塞進(jìn)程,我們的LIS數(shù)據(jù)庫啊,真爛。
如果你想進(jìn)一步追蹤阻塞的原因的話,把輸出寫入到日志中去就行了!
linux服務(wù)器內(nèi)存占用過大解決辦法linux操作系統(tǒng)6
文章來給各位同學(xué)介紹Windows 系統(tǒng)查看端口占用以及解決端口占用,有需要了解的朋友不防進(jìn)入?yún)⒖迹?/p>
相信搞PHP開發(fā)的人,經(jīng)常惱怒80端口被一些其他服務(wù)占用。在沒有一個(gè)行之有效的方法情況下,只能不斷重啟apache或nginx,或者刪除那些認(rèn)為可能會(huì)占用80端口的軟件。
其實(shí),我們不必這么緊張的。
解決方法如下:
1、查看占用80端口的程序:
打開命令提示符,即在運(yùn)行里面輸入:cmd,然后執(zhí)行如下命令:
netstat -ano | findstr 80該命令的意思是:查找使用80端口的進(jìn)程。
想必有一些系統(tǒng)常識(shí)的人都知道,一般一個(gè)程序?qū)?yīng)一個(gè)進(jìn)程。找到了進(jìn)程,那么就知道對(duì)應(yīng)的程序是什么了。然后,我們直接結(jié)束掉該進(jìn)程即可。
該命令執(zhí)行行,會(huì)輸出一個(gè)列表,列表的最后一列是PID。
TCP???0.0.0.0:80????????????0.0.0.0:0?????????????LISTENING??????2060
TCP???0.0.0.0:8800??????????0.0.0.0:0?????????????LISTENING??????924
TCP???0.0.0.0:49153?????????0.0.0.0:0?????????????LISTENING??????1080
TCP???0.0.0.0:49162?????????0.0.0.0:0?????????????LISTENING??????680
TCP???192.168.100.111:80????192.168.100.111:54888?TIME_WAIT??????0
TCP???192.168.100.111:49422?123.58.182.253:80?????ESTABLISHED????5632可以看到第最后一行,有一個(gè)進(jìn)程ID為5632的程序占用了我們的80端口,
2、通過PID找到程序:
@打開任務(wù)管理器,點(diǎn)擊“進(jìn)程”選項(xiàng)卡,如果里面找不到PID列,則通過如下方式打開:
任務(wù)管理器—查看—選擇列—勾選PID。
然后,找到5632這個(gè)PID,結(jié)束掉該進(jìn)程即可。
這樣我們就解決了端口占用的問題。當(dāng)然,我們還要再重啟一下apache或nginx。
linux服務(wù)器內(nèi)存占用過大解決辦法linux操作系統(tǒng)7
初學(xué)QT開發(fā),遇到了中文亂碼的問題,查了一下資料,只需要在main.c中增加兩行代碼即可,下面我把代碼貼出來希望對(duì)大家會(huì)有所幫助,
代碼如下復(fù)制代碼#include ”myapp.h“
#include
#include //包含庫
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTextCodec::setCodecForLocale(QTextCodec::codecForName(”gbk"));?//指定GBK編碼
MyApp w;
W.show;
return a.exec();
}
linux服務(wù)器內(nèi)存占用過大解決辦法linux操作系統(tǒng)7篇 linux查看服務(wù)器內(nèi)存占用相關(guān)文章:
★ 頁面置換算法實(shí)驗(yàn)報(bào)告精選3篇(操作系統(tǒng)頁面置換算法實(shí)驗(yàn)報(bào)告總結(jié))
★ 文件系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)心得3篇(操作系統(tǒng)實(shí)驗(yàn)文件系統(tǒng)設(shè)計(jì))