真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

linux怎么調(diào)優(yōu)命令 linux常用命令修改

linux內(nèi)核優(yōu)化參數(shù)

作為高性能WEB服務(wù)器,只調(diào)整Nginx本身的參數(shù)是不行的,因為Nginx服務(wù)依賴于高性能的操作系統(tǒng)。

創(chuàng)新互聯(lián)建站是一家專業(yè)提供南沙企業(yè)網(wǎng)站建設(shè),專注與做網(wǎng)站、成都網(wǎng)站建設(shè)H5場景定制、小程序制作等業(yè)務(wù)。10年已為南沙眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。

以下為常見的幾個Linux內(nèi)核參數(shù)優(yōu)化方法。

net.ipv4.tcp_max_tw_buckets

對于tcp連接,服務(wù)端和客戶端通信完后狀態(tài)變?yōu)閠imewait,假如某臺服務(wù)器非常忙,連接數(shù)特別多的話,那么這個timewait數(shù)量就會越來越大。

畢竟它也是會占用一定的資源,所以應(yīng)該有一個最大值,當(dāng)超過這個值,系統(tǒng)就會刪除最早的連接,這樣始終保持在一個數(shù)量級。

這個數(shù)值就是由net.ipv4.tcp_max_tw_buckets這個參數(shù)來決定的。

CentOS7系統(tǒng),你可以使用sysctl -a |grep tw_buckets來查看它的值,默認(rèn)為32768,

你可以適當(dāng)把它調(diào)低,比如調(diào)整到8000,畢竟這個狀態(tài)的連接太多也是會消耗資源的。

但你不要把它調(diào)到幾十、幾百這樣,因為這種狀態(tài)的tcp連接也是有用的,

如果同樣的客戶端再次和服務(wù)端通信,就不用再次建立新的連接了,用這個舊的通道,省時省力。

net.ipv4.tcp_tw_recycle = 1

該參數(shù)的作用是快速回收timewait狀態(tài)的連接。上面雖然提到系統(tǒng)會自動刪除掉timewait狀態(tài)的連接,但如果把這樣的連接重新利用起來豈不是更好。

所以該參數(shù)設(shè)置為1就可以讓timewait狀態(tài)的連接快速回收,它需要和下面的參數(shù)配合一起使用。

net.ipv4.tcp_tw_reuse = 1

該參數(shù)設(shè)置為1,將timewait狀態(tài)的連接重新用于新的TCP連接,要結(jié)合上面的參數(shù)一起使用。

net.ipv4.tcp_syncookies = 1

tcp三次握手中,客戶端向服務(wù)端發(fā)起syn請求,服務(wù)端收到后,也會向客戶端發(fā)起syn請求同時連帶ack確認(rèn),

假如客戶端發(fā)送請求后直接斷開和服務(wù)端的連接,不接收服務(wù)端發(fā)起的這個請求,服務(wù)端會重試多次,

這個重試的過程會持續(xù)一段時間(通常高于30s),當(dāng)這種狀態(tài)的連接數(shù)量非常大時,服務(wù)器會消耗很大的資源,從而造成癱瘓,

正常的連接進(jìn)不來,這種惡意的半連接行為其實叫做syn flood攻擊。

設(shè)置為1,是開啟SYN Cookies,開啟后可以避免發(fā)生上述的syn flood攻擊。

開啟該參數(shù)后,服務(wù)端接收客戶端的ack后,再向客戶端發(fā)送ack+syn之前會要求client在短時間內(nèi)回應(yīng)一個序號,

如果客戶端不能提供序號或者提供的序號不對則認(rèn)為該客戶端不合法,于是不會發(fā)ack+syn給客戶端,更涉及不到重試。

net.ipv4.tcp_max_syn_backlog

該參數(shù)定義系統(tǒng)能接受的最大半連接狀態(tài)的tcp連接數(shù)??蛻舳讼蚍?wù)端發(fā)送了syn包,服務(wù)端收到后,會記錄一下,

該參數(shù)決定最多能記錄幾個這樣的連接。在CentOS7,默認(rèn)是256,當(dāng)有syn flood攻擊時,這個數(shù)值太小則很容易導(dǎo)致服務(wù)器癱瘓,

實際上此時服務(wù)器并沒有消耗太多資源(cpu、內(nèi)存等),所以可以適當(dāng)調(diào)大它,比如調(diào)整到30000。

net.ipv4.tcp_syn_retries

該參數(shù)適用于客戶端,它定義發(fā)起syn的最大重試次數(shù),默認(rèn)為6,建議改為2。

net.ipv4.tcp_synack_retries

該參數(shù)適用于服務(wù)端,它定義發(fā)起syn+ack的最大重試次數(shù),默認(rèn)為5,建議改為2,可以適當(dāng)預(yù)防syn flood攻擊。

net.ipv4.ip_local_port_range

該參數(shù)定義端口范圍,系統(tǒng)默認(rèn)保留端口為1024及以下,以上部分為自定義端口。這個參數(shù)適用于客戶端,

當(dāng)客戶端和服務(wù)端建立連接時,比如說訪問服務(wù)端的80端口,客戶端隨機(jī)開啟了一個端口和服務(wù)端發(fā)起連接,

這個參數(shù)定義隨機(jī)端口的范圍。默認(rèn)為32768 61000,建議調(diào)整為1025 61000。

net.ipv4.tcp_fin_timeout

tcp連接的狀態(tài)中,客戶端上有一個是FIN-WAIT-2狀態(tài),它是狀態(tài)變遷為timewait前一個狀態(tài)。

該參數(shù)定義不屬于任何進(jìn)程的該連接狀態(tài)的超時時間,默認(rèn)值為60,建議調(diào)整為6。

net.ipv4.tcp_keepalive_time

tcp連接狀態(tài)里,有一個是established狀態(tài),只有在這個狀態(tài)下,客戶端和服務(wù)端才能通信。正常情況下,當(dāng)通信完畢,

客戶端或服務(wù)端會告訴對方要關(guān)閉連接,此時狀態(tài)就會變?yōu)閠imewait,如果客戶端沒有告訴服務(wù)端,

并且服務(wù)端也沒有告訴客戶端關(guān)閉的話(例如,客戶端那邊斷網(wǎng)了),此時需要該參數(shù)來判定。

比如客戶端已經(jīng)斷網(wǎng)了,但服務(wù)端上本次連接的狀態(tài)依然是established,服務(wù)端為了確認(rèn)客戶端是否斷網(wǎng),

就需要每隔一段時間去發(fā)一個探測包去確認(rèn)一下看看對方是否在線。這個時間就由該參數(shù)決定。它的默認(rèn)值為7200秒,建議設(shè)置為30秒。

net.ipv4.tcp_keepalive_intvl

該參數(shù)和上面的參數(shù)是一起的,服務(wù)端在規(guī)定時間內(nèi)發(fā)起了探測,查看客戶端是否在線,如果客戶端并沒有確認(rèn),

此時服務(wù)端還不能認(rèn)定為對方不在線,而是要嘗試多次。該參數(shù)定義重新發(fā)送探測的時間,即第一次發(fā)現(xiàn)對方有問題后,過多久再次發(fā)起探測。

默認(rèn)值為75秒,可以改為3秒。

net.ipv4.tcp_keepalive_probes

第10和第11個參數(shù)規(guī)定了何時發(fā)起探測和探測失敗后再過多久再發(fā)起探測,但并沒有定義一共探測幾次才算結(jié)束。

該參數(shù)定義發(fā)起探測的包的數(shù)量。默認(rèn)為9,建議設(shè)置2。

設(shè)置和范例

在Linux下調(diào)整內(nèi)核參數(shù),可以直接編輯配置文件/etc/sysctl.conf,然后執(zhí)行sysctl -p命令生效

詳解Linux系統(tǒng)內(nèi)存知識及調(diào)優(yōu)方案

內(nèi)存是計算機(jī)中重要的部件之一,它是與CPU進(jìn)行溝通的橋梁。計算機(jī)中所有程序的運行都是在內(nèi)存中進(jìn)行的,因此內(nèi)存的性能對計算機(jī)的影響非常大。內(nèi)存作用是用于暫時存放CPU中的運算數(shù)據(jù),以及與硬盤等外部存儲器交換的數(shù)據(jù)。只要計算機(jī)在運行中,CPU就會把需要運算的數(shù)據(jù)調(diào)到內(nèi)存中進(jìn)行運算,當(dāng)運算完成后CPU再將結(jié)果傳送出來,內(nèi)存的運行也決定了計算機(jī)的穩(wěn)定運行。對于整個操作系統(tǒng)來說,內(nèi)存可能是最麻煩的的設(shè)備。而其性能的好壞直接影響著整個操作系統(tǒng)。

我們知道CPU是不能與硬盤打交道的,只有數(shù)據(jù)被載入到內(nèi)存中才可以被CPU調(diào)用。cpu在訪問內(nèi)存的時候需要先像內(nèi)存監(jiān)控程序請求,由監(jiān)控程序控制和分配內(nèi)存的讀寫請求,這個監(jiān)控程序叫做MMU(內(nèi)存管理單元)。下面以32位系統(tǒng)來說明內(nèi)存的訪問過程:

32位的系統(tǒng)上每一個進(jìn)程在訪問內(nèi)存的時候,每一個進(jìn)程都當(dāng)做自己有4個G的內(nèi)存空間可用,這叫虛擬內(nèi)存(地址),虛擬內(nèi)存轉(zhuǎn)化成物理內(nèi)存是通過MMU來完成的。為了能夠從線性地址轉(zhuǎn)換成物理地址,需要page table(頁表)的內(nèi)存空間,page table要載入到MMU上。為了完成線性地址到物理地址的映射,如果按照1個字節(jié)1個字節(jié)映射的話,需要一張非常大的表,這種轉(zhuǎn)換關(guān)系會非常的復(fù)雜。因此把內(nèi)存空間又劃分成了另外一種存儲單元格式,通常為4K。在不同的硬件平臺上,它們的大小一般是不一樣的,像x86 32位的有4k的頁;而64位的有4k頁,2M頁,4M頁,8M頁等等,默認(rèn)都是4k的。每一個進(jìn)程一般而言都有自己的頁路徑和頁表映射機(jī)制,不管那一個頁表都是由內(nèi)核加載的。每一個進(jìn)程只能看到自己的線性地址空間,想要增加新的內(nèi)存的時候,只能在自己的線性地址空間中申請,并且申請后一定是通過操作系統(tǒng)的內(nèi)核映射到物理地址空間中去找那么一段空間,并且告訴線性地址空間準(zhǔn)備好了,可以訪問,并且在page table中增加一條映射關(guān)系,于是就可以訪問物理內(nèi)存了,這種叫做內(nèi)存分配。但是新的申請一定是通過操作的內(nèi)核到物理內(nèi)存中去找那么一段空間,并且告訴線性地址空間好了,可以建設(shè)映射關(guān)系,最終page table建立映射關(guān)系。

這反映了上述描述過程的大體情況??梢钥吹矫恳粋€用戶程序都會有自己的頁表,并且映射到對應(yīng)的主存儲器上去。

根據(jù)上述文字和圖表的描述可以發(fā)現(xiàn)2個問題:

1.每個進(jìn)程如果需要訪問內(nèi)存的時候都需要去查找page table的話,勢必會造成服務(wù)器的性能底下

2.如果主存儲器的內(nèi)存滿了以后,應(yīng)用程序還需要調(diào)用內(nèi)存的時候怎么辦

對于第一個問題,我們就需要借助TLB(Translation Lookaside Buffer)翻譯后備緩沖器。TLB是一個內(nèi)存管理單元,它可以用于改進(jìn)虛擬地址到物理地址轉(zhuǎn)換速度的緩存。這樣每次在查找page table的時候就可以先去TLB中查找相應(yīng)的頁表數(shù)據(jù),如果有就直接返回,沒有再去查找page table,并把查找到的結(jié)果緩存中TLB中。TLB雖然解決了緩存的功能,但是在那么page table中查找映射關(guān)系仍然很慢,所以又有了page table的分級目錄。page table可以分為1級目錄,2級目錄和偏移量

但是一個進(jìn)程在運行的時候要頻繁的打開文件,關(guān)閉文件。這就意味著要頻繁的申請內(nèi)存和釋放內(nèi)存。有些能夠在內(nèi)存中緩存數(shù)據(jù)的那些進(jìn)程,他們對內(nèi)存的分配和回收更多,那么每一次分配都會在頁表中建立一個對應(yīng)項。所以,就算內(nèi)存的速度很快,大量頻繁的同一時間分配和釋放內(nèi)存,依然會降低服務(wù)器的整體性能。當(dāng)然內(nèi)存空間不夠用的時候,我們稱為oom(out of memory,內(nèi)存耗盡)。當(dāng)內(nèi)存耗盡的時候,,整個操作系統(tǒng)掛了。這種情況下我們可以考慮交換分區(qū),交換分區(qū)畢竟是由硬盤虛擬出來的內(nèi)存,所以其性能與真正的內(nèi)存相比,差了很多,所以要盡力避免使用交換分區(qū)。有物理內(nèi)存空間的時候盡量保證全部使用物理內(nèi)存。cpu無論如何是不能給交換內(nèi)存打交道的,它也只能給物理內(nèi)存打交道,能尋址的空間也只能是物理內(nèi)存。所以當(dāng)真正物理內(nèi)存空間不夠用的時候,會通過LRU算法把其中最近最少使用的內(nèi)存放到交換內(nèi)存中去,這樣物理內(nèi)存中的那段空間就可以供新的程序使用了。但是這樣會引發(fā)另外的一個問題,即原來的進(jìn)程通過page table尋找的時候,那一段空間的數(shù)據(jù)已經(jīng)不屬于它了。所以此刻cpu發(fā)送通知或者異常告訴這個程序,這個地址空間已不屬于它,這個時候可能會出現(xiàn)2種情況:

1.物理內(nèi)存有可用的空間可用:這個時候cpu會根據(jù)以前的轉(zhuǎn)換策略會把交換分區(qū)中的那段內(nèi)存重新送到物理內(nèi)存中去,但是轉(zhuǎn)換過來的空間地址不一定會是以前的那一段空間地址,因為以前的那一段空間地址可能已經(jīng)被別人使用了。

2.物理內(nèi)存沒有可用的空間可用:這個時候依然會使用LRU算發(fā)把當(dāng)前物理地址空間上最近最少使用的空間地址轉(zhuǎn)換到交換內(nèi)存中去,并把當(dāng)前進(jìn)程需要的這斷在交換空間中的內(nèi)存送到物理內(nèi)存空間中去,并且重新建立映射關(guān)系。

上述通知或者異常出現(xiàn)的情況,通常叫做缺頁異常。缺頁異常也分為大異常和小異常兩種。大異常就是訪問的數(shù)據(jù)內(nèi)存中沒有,不的不去硬盤上加載,無論是從交換內(nèi)存中還是直接從磁盤的某個文件系統(tǒng)上,反正需要從硬盤上去加載,這種異常加載需要很長時間。小異常就是進(jìn)程之間通過共享內(nèi)存,第二個進(jìn)程訪問的時候,查看本地的內(nèi)存映射表沒有,但是其它進(jìn)程已經(jīng)擁有了這個內(nèi)存頁,所以可以直接映射,這種異常加載需要的時間一般很短。

在操作系統(tǒng)開機(jī)的時候,每一個io設(shè)備都會像cpu申請一些列的隨機(jī)端口,這種端口叫做io端口。在IBM PC體系結(jié)構(gòu)中,I/O地址空間一共提供了65,536個8位的I/O端口。正是這些io端口的存在,cpu可以與io設(shè)備進(jìn)行讀寫交互的過程。在執(zhí)行讀寫操作時,CPU使用地址總線選擇所請求的I/O端口,使用數(shù)據(jù)總線在CPU寄存器和端口之間傳送數(shù)據(jù)。I/O端口還可以被映射到物理地址空間:因此,處理器和I/O設(shè)備之間的通信就可以直接使用對內(nèi)存進(jìn)行操作的匯編語言指令(例如,mov、and、or等等)?,F(xiàn)代的硬件設(shè)備更傾向于映射I/O,因為這樣處理的速度較快,并可以和DMA結(jié)合起來使用。這樣io在和內(nèi)存?zhèn)鲾?shù)據(jù)的時候就不需要通過cpu,cpu把總線的控制權(quán)交給DMA,每次io傳數(shù)據(jù)的時候就調(diào)用DMA一次,就把cpu給解放了出來。當(dāng)數(shù)據(jù)傳輸完了以后,DMA通知給cpu中斷一次。DMA在運行的時候?qū)φ麄€總線有控制權(quán)限,當(dāng)cpu發(fā)現(xiàn)有其它進(jìn)程需要使用總線的時候,二者就會產(chǎn)生爭用。這個時候,在總線控制權(quán)的使用上,CPU和DMA具有相等的權(quán)限。只要CPU委托給了DMA,就不能隨意的收回這個委托,就要等待DMA的用完。

如果沒有其它進(jìn)程可以運行,或者其它進(jìn)程運行的時間非常短,這個時候CPU發(fā)現(xiàn)我們的IO仍然沒有完成,那就意味著,CPU只能等待IO了。CPU在時間分配里面有個iowait的值,就是CPU在等待IO花費的時間。有些是在同步調(diào)用過程中,CPU必須要等待IO的完成;否者CPU可以釋放IO的傳輸在背后自動完成,CPU自己去處理其它的事情。等硬盤數(shù)據(jù)傳輸完成以后,硬盤只需要像CPU發(fā)起一個通知即可。CPU外圍有一種設(shè)備,這個設(shè)備叫做可編程中斷控制器。每一個硬件設(shè)備為了給CPU通信,在剛開機(jī)的時候,在BIOS實現(xiàn)檢測的時候,這個設(shè)備就要到可編程中斷控制器上去注冊一個所謂的中斷號。那么這個號碼就歸這個硬件使用了。當(dāng)前主機(jī)上可能有多個硬件,每一個硬件都有自己的號碼,CPU在收到中斷號以后,就能夠通過中斷相量表查找到那個硬件設(shè)備進(jìn)行中斷。并且就由對應(yīng)的IO端口過來處理了。

CPU正在運行其它進(jìn)程,當(dāng)一個中斷請求發(fā)過來的時候,CPU會立即終止當(dāng)前正在處理的進(jìn)程,而去處理中斷。當(dāng)前CPU掛起當(dāng)前正在處理的進(jìn)程,轉(zhuǎn)而去執(zhí)行中斷的過程,也叫做中斷切換。只不過,這種切換在量級別上比進(jìn)程切換要低一些,而且任何中斷的優(yōu)先級通常比任何進(jìn)程也要高,因為我們指的是硬件中斷。中斷還分為上半部和下半部,一般而言,上半部就是CPU在處理的時候,把它接進(jìn)來,放到內(nèi)存中,如果這個事情不是特別緊急(CPU或者內(nèi)核會自己判斷),因此在這種情況下,CPU回到現(xiàn)場繼續(xù)執(zhí)行剛才掛起的進(jìn)程,當(dāng)這個進(jìn)程處理完了,再回過頭來執(zhí)行中斷的下半部分。

在32位系統(tǒng)中,我們的內(nèi)存(線性地址)地址空間中,一般而言,低地址空間有一個G是給內(nèi)核使用的,上面3個G是給進(jìn)程使用的。但是應(yīng)該明白,其實在內(nèi)核內(nèi)存當(dāng)中,再往下,不是直接這樣劃分的。32位系統(tǒng)和64位系統(tǒng)可能不一樣(物理地址),在32位系統(tǒng)中,最低端有那么10多M的空間是給DMA使用的。DNA的總線寬度是很小的,可能只有幾位,所以尋址能力很有限,訪問的內(nèi)存空間也就很有限。如果DMA需要復(fù)制數(shù)據(jù),而且自己能夠?qū)ぶ肺锢韮?nèi)存,還可以把數(shù)據(jù)直接壯哉進(jìn)內(nèi)存中去,那么就必須保證DMA能夠?qū)ぶ纺嵌蝺?nèi)存才行。尋址的前提就是把最低地址斷M,DA的尋址范圍內(nèi)的那一段給了DMA。所以站在這個角度來說,我們的內(nèi)存管理是分區(qū)域的。

在32位系統(tǒng)上,16M的內(nèi)存空間給了ZONE_DMA(DMA使用的物理地址空間);從16M到896M給了ZONE_NORMAL(正常物理地址空間),對于Linux操作系統(tǒng)來說,是內(nèi)核可以直接訪問的地址空間;從896M到1G這斷空間叫做"Reserved"(預(yù)留的物理地址空間);從1G到4G的這段物理地址空間中,我們的內(nèi)核是不能直接訪問的,要想訪問必須把其中的一段內(nèi)容映射到Reserved來,在Reserved中保留出那一段內(nèi)存的地址編碼,我們內(nèi)核才能上去訪問,所以內(nèi)核不直接訪問大于1G的物理地址空間。所以在32位系統(tǒng)上,它訪問內(nèi)存當(dāng)中的數(shù)據(jù),中間是需要一個額外步驟的。

在64位系統(tǒng)上,ZONE_DAM給了低端的1G地址空間,這個時候DMA的尋址能力被大大加強(qiáng)了;ZONE_DAM32可以使用4G的空間;而大于1G以上給劃分了ZONE_NORMAL,這段空間都可以被內(nèi)核直接訪問。所以在64位上,內(nèi)核訪問大于1G的內(nèi)存地址,就不需要額外的步驟了,效率和性能上也大大增加,這也就是為什么要使用64位系統(tǒng)的原因。

在現(xiàn)在的PC架構(gòu)上,AMD,INTER都支持一種機(jī)制,叫做PEA(物理地址擴(kuò)展)。所謂PAE。指的是在32位系統(tǒng)的地址總線上,又?jǐn)U展了4位,使得32位系統(tǒng)上的地址空間可以達(dá)到64G。當(dāng)然在32為系統(tǒng)上,不管你的物理內(nèi)存有多大,單個進(jìn)程所使用的空間是無法擴(kuò)展的。因為在32位的系統(tǒng)上,線性地址空間只有4個G,而單個進(jìn)程能夠識別的訪問也只有3個G。

linux的虛擬內(nèi)存子系統(tǒng)包含了以下幾個功能模塊:

slab allocator,zoned buddy allocator,MMU,kswapd,bdflush

slab allocator叫做slab分配器

buddy allocator又叫做buddy system,叫做伙伴系統(tǒng),也是一種內(nèi)存分配器

buddy system是工作在MMU之上的,而slab allocator又是工作在buddy system之上的。

設(shè)置為小于等于1G,在數(shù)據(jù)庫服務(wù)器應(yīng)該勁量避免使用交換內(nèi)存

3.在應(yīng)用服務(wù)器上,可以設(shè)置為RAM*0.5,當(dāng)然這個是理論值

如果不的不使用交換內(nèi)存,應(yīng)該把交換內(nèi)存放到最靠外的磁道分區(qū)上,因為最外邊的磁盤的訪問速度最快。所以如果有多塊硬盤,可以把每塊硬盤的最外層的磁道拿一小部分出來作為交換分區(qū)。交換分區(qū)可以定義優(yōu)先級,因此把這些硬盤的交換內(nèi)存的優(yōu)先級設(shè)置為一樣,可以實現(xiàn)負(fù)載均衡的效果。定義交換分區(qū)優(yōu)先級的方法為編輯/etc/fstab:

/dev/sda1 swap swap pri=5 0 0

/dev/sdb1 swap swap pri=5 0 0

/dev/sdc1 swap swap pri=5 0 0

/dev/sdd1 swap swap pri=5 0 0

四.內(nèi)存耗盡時候的相關(guān)調(diào)優(yōu)參數(shù)

當(dāng)Linux內(nèi)存耗盡的時候,它會殺死那些占用內(nèi)存最多的進(jìn)程,以下三種情況會殺死進(jìn)程:

1.所有的進(jìn)程都是活動進(jìn)程,這個時候想交換出去都沒有空閑的進(jìn)程

2.沒有可用的page頁在ZONE_NORMAL中

3.有其它新進(jìn)程啟動,申請內(nèi)存空間的時候,要找一個空閑內(nèi)存給做映射,但是這個時候找不到了

一旦內(nèi)存耗盡的時候,操作系統(tǒng)就會啟用oom-kill機(jī)制。

在/proc/PID/目錄下有一個文件叫做oom_score,就是用來指定oom的評分的,就是壞蛋指數(shù)。

如果要手動啟用oom-kill機(jī)制的話,只需要執(zhí)行echo f/proc/sysrq-trigger即可,它會自動殺掉我們指定的壞蛋指數(shù)評分最高的那個進(jìn)程

可以通過echo n /proc/PID/oom_adj來調(diào)整一個進(jìn)程的壞蛋評分指數(shù)。最終的評分指數(shù)就是2的oom_adj的值的N次方。假如我們的一個進(jìn)程的oom_adj的值是5,那么它的壞蛋評分指數(shù)就是2的5次方。

如果想禁止oom-kill功能的使用可以使用vm.panic_on_oom=1即可。

五.與容量有關(guān)的內(nèi)存調(diào)優(yōu)參數(shù):

overcommit_memory,可用參數(shù)有3個,規(guī)定是否能夠過量使用內(nèi)存:

0:默認(rèn)設(shè)置,內(nèi)核執(zhí)行啟發(fā)式的過量使用處理

1:內(nèi)核執(zhí)行無內(nèi)存的過量使用處理。使用這個值會增大內(nèi)存超載的可能性

2:內(nèi)存的使用量等于swap的大小+RAM*overcommit_ratio的值。如果希望減小內(nèi)存的過度使用,這個值是最安全的

overcommit_ratio:將overcommit_memory指定為2時候,提供的物理RAM比例,默認(rèn)為50

六.與通信相關(guān)的調(diào)優(yōu)參數(shù)

常見在同一個主機(jī)中進(jìn)行進(jìn)程間通信的方式:

1.通過消息message;2.通過signal信號量進(jìn)行通信;3.通過共享內(nèi)存進(jìn)行通信,跨主機(jī)常見的通信方式是rpc

以消息的方式實現(xiàn)進(jìn)程通信的調(diào)優(yōu)方案:

msgmax:以字節(jié)為單位規(guī)定消息隊列中任意消息的最大允許大小。這個值一定不能超過該隊列的大小(msgmnb),默認(rèn)值為65536

msgmnb:以字節(jié)為單位規(guī)定單一消息隊列的最大值(最大長度)。默認(rèn)為65536字節(jié)

msgmni:規(guī)定消息隊列識別符的最大數(shù)量(及隊列的最大數(shù)量)。64位架構(gòu)機(jī)器的默認(rèn)值為1985;32位架構(gòu)機(jī)器的默認(rèn)值為1736

以共享內(nèi)存方式實現(xiàn)進(jìn)程通信的調(diào)優(yōu)方案:

shmall:以字節(jié)為單位規(guī)定一次在該系統(tǒng)中可以使用的共享內(nèi)存總量(單次申請的上限)

shmmax:以字節(jié)為單位規(guī)定每一個共享內(nèi)存片段的最大大小

shmmni:規(guī)定系統(tǒng)范圍內(nèi)最大共享內(nèi)存片段。在64和32位的系統(tǒng)上默認(rèn)值都是4096

七.與容量相關(guān)的文件系統(tǒng)可調(diào)優(yōu)參數(shù):

file-max:列出內(nèi)核分配的文件句柄的最大值

dirty_ratio:規(guī)定百分比值,當(dāng)臟數(shù)據(jù)達(dá)到系統(tǒng)內(nèi)存總數(shù)的這個百分比值后開始執(zhí)行pdflush,默認(rèn)為20

dirty_background_ratio:規(guī)定百分比值,當(dāng)某一個進(jìn)程自己所占用的臟頁比例達(dá)到系統(tǒng)內(nèi)存總數(shù)的這個百分比值后開始在后臺執(zhí)行pdflush,默認(rèn)為10

dirty_expire_centisecs:pdlush每隔百分之一秒的時間開啟起來刷新臟頁,默認(rèn)值為3000,所以每隔30秒起來開始刷新臟頁

dirty_writeback_centisecs:每隔百分之一秒開始刷新單個臟頁。默認(rèn)值為500,所以一個臟頁的存在時間達(dá)到了5秒,就開始刷新臟

八.linux內(nèi)存常用的觀察指標(biāo)命令:

Memory activity

vmstat [interval] [count]

sar -r [interval] [count]

Rate of change in memory

sar -R [interval] [count]

frmpg/s:每秒釋放或者分配的內(nèi)存頁,如果為正數(shù),則為釋放的內(nèi)存頁;如果為負(fù)數(shù),則為分配的內(nèi)存頁

bufpg/s:每秒buffer中獲得或者釋放的內(nèi)存頁。如果為正數(shù)則為獲得的內(nèi)存頁,為負(fù)數(shù)。則為釋放的內(nèi)存頁

campg/s:每秒cache中獲得或者釋放的內(nèi)存頁。如果為正數(shù)則為獲得的內(nèi)存頁,為負(fù)數(shù)。則為釋放的內(nèi)存頁

Swap activity

sar -W [interval] [count]

ALL IO

sar -B [interval] [count]

pgpgin/s:每秒從磁盤寫入到內(nèi)核的塊數(shù)量

pgpgout/s:每秒從內(nèi)核寫入到磁盤的塊數(shù)量

fault/s:每秒鐘出現(xiàn)的缺頁異常的個數(shù)

majflt/s:每秒鐘出現(xiàn)的大頁異常的個數(shù)

pgfree/s:每秒回收回來的頁面?zhèn)€數(shù)

Linux 性能調(diào)優(yōu)都有哪幾種方法

Disabling daemons (關(guān)閉 daemons)。

Shutting down the GUI (關(guān)閉 GUI)。

Changing kernel parameters (改變內(nèi)核參數(shù))。

Kernel parameters (內(nèi)核參數(shù))。

Tuning the processor subsystem (處理器子系統(tǒng)調(diào)優(yōu))。

Tuning the memory subsystem (內(nèi)存子系統(tǒng)調(diào)優(yōu))。

Tuning the file system (文件系統(tǒng)子系統(tǒng)調(diào)優(yōu))。

Tuning the network subsystem(網(wǎng)絡(luò)子系統(tǒng)調(diào)優(yōu))。

linux 調(diào)優(yōu)--修改文件最大句柄數(shù)

最近重啟平臺后,啟動數(shù)據(jù)流,確發(fā)生報錯:

發(fā)現(xiàn)文件打開太多,句柄數(shù)不夠用了,需要調(diào)優(yōu)linux參數(shù):

首先查看下系統(tǒng)的句柄是多少,用ulimit -a 命令查看

linux默認(rèn)最大文件句柄數(shù)是1024個,當(dāng)你的服務(wù)器在大并發(fā)達(dá)到極限時,就會報出“too many open files”。

修改linux系統(tǒng)參數(shù):vi /etc/security/limits.conf

*softnofile65536

*hardnofile65536

修改以后保存,注銷當(dāng)前用戶,重新登錄,執(zhí)行ulimit -a


當(dāng)前題目:linux怎么調(diào)優(yōu)命令 linux常用命令修改
URL標(biāo)題:http://weahome.cn/article/hjjhdp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部