欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Linux 系統(tǒng)優(yōu)化的一些建議(內(nèi)核優(yōu)化)

 更新時間:2020年08月27日 14:38:44   作者:_江邊城外_  
這篇文章主要介紹了Linux 系統(tǒng)優(yōu)化的一些建議,幫助大家更好的使用Linux,感興趣的朋友可以了解下

關(guān)閉swap

如果服務(wù)器上有運行數(shù)據(jù)庫服務(wù)或消息中間件服務(wù),請關(guān)閉交換分區(qū)

echo "vm.swappiness = 0" >> /etc/sysctl.conf
sysctl -p

OOM Killer

一般我們的linux服務(wù)都是混部服務(wù)的,每個程序申請的物理內(nèi)存都是共享的;例如物理內(nèi)存只有1g,啟動2個程序各申請1g是可以的,linux通過這種過度分配的方式來達到內(nèi)存的充分利用,當程序?qū)嶋H使用內(nèi)存超出物理內(nèi)存時,會被系統(tǒng)按照優(yōu)先級,殺掉一部分程序以確保其它程序的正常運行;為了避免核心服務(wù)被殺,可以將進程文件設(shè)置為最高優(yōu)先級。

# 數(shù)值越小越不容易被殺
echo -17 > /proc/$pid/oom_score_adj

TCP

因為我們提供的數(shù)據(jù)庫和一些消息中間件服務(wù)都是內(nèi)網(wǎng)工作的,所以可以針對內(nèi)網(wǎng)對TCP參數(shù)進行一些優(yōu)化。

  • net.ipv4.tcp_syn_retries

默認值為6,參考值為2。主機作為客戶端,對外發(fā)起TCP連接時,即三次握手的第一步,內(nèi)核發(fā)送SYN報文的重試次數(shù),超過這個次數(shù)后放棄連接。內(nèi)網(wǎng)環(huán)境通信良好,因此可以適度降低此值

  • net.ipv4.tcp_synack_retries

默認值為5,參考值為2。主機作為服務(wù)端,接受TCP連接時,在三次握手的第二步,向客戶端發(fā)送SYN+ACK報文的重試次數(shù),超過這個次數(shù)后放棄連接。內(nèi)網(wǎng)環(huán)境中可適度降低此值

  • net.ipv4.tcp_timestamps

是否開啟時間戳,開啟后可以更精確地計算RTT,一些其他特性也依賴時間戳字段。

  • net.ipv4.tcp_tw_reuse

默認值為0,建議值為1。是否允許將處于TIME_WAIT狀態(tài)的socket用于新的TCP連接。這對于降低TIME_WAIT數(shù)量很有效。該參數(shù)只有在開啟tcp_timestamps的情況下才會生效。

  • net.ipv4.tcp_tw_recycle

是否開啟TIME_WAIT套接字的快速回收,這是比tcp_tw_reuse更激進的一種方式,它同樣依賴tcp_timestamps選項。強烈建議不要開啟tcp_tw_recycle,原因有兩點,一是TIME_WAIT是十分必要的狀態(tài),避免關(guān)閉中的連接與新建連接之間的數(shù)據(jù)混淆,二是tcp_tw_recycle選項在NAT環(huán)境下會導(dǎo)致一些新建連接被拒絕,因為NAT下每個主機存在時差,這體現(xiàn)在套接字中的時間戳字段,服務(wù)端會發(fā)現(xiàn)某個IP上的本應(yīng)遞增的時間戳出現(xiàn)降低的情況,時間戳相對降低的報文將被丟棄

  • net.core.somaxconn

默認值為128,參考值為2048。定義了系統(tǒng)中每一個端口上最大的監(jiān)聽隊列的長度。當服務(wù)端監(jiān)聽了某個端口時,操作系統(tǒng)內(nèi)部完成對客戶端連接請求的三次握手。這些已建立的連接存儲在一個隊列中,等待accept調(diào)用取走。本選項就是定義這個隊列的長度。調(diào)大該值,可降低高并發(fā)場景下服務(wù)端的reject次數(shù)。

  • net.ipv4.tcp_max_syn_backlog

客戶端的請求在服務(wù)端由兩個隊列進行管理,一種是與客戶端完成連接建立后,等待accept的放到一個隊列,這個隊列的長度由somaxconn參數(shù)控制;另一種是正在建立但未完成的連接單獨存放一個隊列,這個隊列的長度由tcp_max_syn_backlog控制;默認128,調(diào)到至8192.

  • net.ipv4.tcp_max_tw_buckets

默認值為4096,參考值為100000。定義系統(tǒng)同時保持TIME_WAIT套接字的最大數(shù)量,如果超過這個數(shù),則TIME_WAIT套接字將立刻被清除并打印警告信息。如果系統(tǒng)被TIME_WAIT過多問題困擾,則可以調(diào)節(jié)tcp_max_tw_buckets、tcp_tw_reuse、tcp_timestamps三個選項來緩解。TIME_WAIT狀態(tài)產(chǎn)生在TCP會話關(guān)閉時主動關(guān)閉的一端,如果想從根本上解決問題,則讓客戶端主動關(guān)閉連接,而非服務(wù)端。

page cache

page cache即系統(tǒng)臟頁,是系統(tǒng)的io緩存,當數(shù)據(jù)寫入磁盤前會先寫入page cache中,然后異步刷入磁盤;寫緩存可以提升IO的訪問速度,但同時也會增加丟失數(shù)據(jù)的風險。

從page cache刷到磁盤有以下三種時機:

  • 可用物理內(nèi)存低于特定閾值時,為了給系統(tǒng)騰出空閑內(nèi)存;
  • 臟頁駐留時間超過特定閾值時,為了避免臟頁無限期駐留內(nèi)存;
  • 被用戶的sync()或fsync()觸發(fā)。

由系統(tǒng)執(zhí)行的刷盤有兩種寫入策略:

  • 異步執(zhí)行刷盤,不阻塞用戶I/O;
  • 同步執(zhí)行刷盤,用戶I/O被阻塞,直到臟頁低于某個閾值。

在一般情況下,系統(tǒng)先執(zhí)行第一種策略,當臟頁數(shù)據(jù)量過大,異步執(zhí)行來不及完成刷盤時,切換到同步方式。

我們可以通過內(nèi)核參數(shù)調(diào)整臟數(shù)據(jù)的刷盤閾值:

  • vm.dirty_background_ratio,默認值為10。該參數(shù)定義了一個百分比。當內(nèi)存中的臟數(shù)據(jù)超過這個百分比后,系統(tǒng)使用異步方式刷盤。
  • vm.dirty_ratio,默認值為30。同樣定義了一個百分比,當內(nèi)存中的臟數(shù)據(jù)超過這個百分比后,系統(tǒng)使用同步方式刷盤,寫請求被阻塞,直到臟數(shù)據(jù)低于dirty_ratio。如果還高于dirty_background_ratio,則切換到異步方式刷盤。因此 dirty_ratio 應(yīng)高于dirty_background_ratio。

除了通過百分比控制,還可以指定過期時間:vm.dirty_expire_centisecs,默認值為3000(30秒),單位為百分之1秒,超過這個時間后,臟數(shù)據(jù)被異步刷盤。

可以通過下面的命令查看系統(tǒng)當前的臟頁數(shù)量:

cat /proc/vmstat |egrep "dirty|writeback"
nr_dirty 951
nr_writeback 0
nr_writeback_temp 0
#輸出顯示有951個臟頁等待寫到磁盤。默認情況下每頁大小為4KB。另外,也可以在/proc/meminfo文件中看到這些信息。

如果數(shù)據(jù)安全性要求沒有那么高,想要多“cache”一些數(shù)據(jù),讓讀取更容易命中cache,則可以增加臟數(shù)據(jù)占比和過期時間:

vm.dirty_background_ratio = 30
vm.dirty_ratio = 60
vm.dirty_expire_centisecs = 6000

同理,如果不希望因為刷盤導(dǎo)致io被阻,可適當減少異步刷盤的數(shù)值,這樣可以讓io更加平滑:

vm.dirty_background_ratio = 5
vm.dirty_ratio = 60

以上就是Linux 系統(tǒng)優(yōu)化的一些建議(內(nèi)核優(yōu)化)的詳細內(nèi)容,更多關(guān)于Linux 系統(tǒng)優(yōu)化的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Linux下執(zhí)行java程序的方法

    Linux下執(zhí)行java程序的方法

    本文通過圖文并茂的方式給大家介紹linux下執(zhí)行java程序的方法,想要在Ubuntu上運行java程序,可以將java程序編譯成功后打包,然后在Ubuntu上用命令執(zhí)行jar文件,具體詳情請參考本文
    2016-10-10
  • CentOS 6.6服務(wù)器編譯安裝lnmp(Nginx1.6.2+MySQL5.6.21+PHP5.6.3)

    CentOS 6.6服務(wù)器編譯安裝lnmp(Nginx1.6.2+MySQL5.6.21+PHP5.6.3)

    這篇文章主要介紹了CentOS 6.6服務(wù)器編譯安裝lnmp(Nginx1.6.2+MySQL5.6.21+PHP5.6.3),需要的朋友可以參考下
    2016-10-10
  • 教你如何修改Linux遠程登錄歡迎提示信息

    教你如何修改Linux遠程登錄歡迎提示信息

    教你如何在Linux中創(chuàng)建登錄歡迎提示信息,要登錄或登錄后的用戶顯示不同的警告或消息
    2018-03-03
  • linux系統(tǒng)命令筆記整理

    linux系統(tǒng)命令筆記整理

    這篇文章主要介紹了linux系統(tǒng)命令,整理總結(jié)了linux系統(tǒng)常用的安裝、卸載、編輯器使用等相關(guān)操作命令與使用注意事項,需要的朋友可以參考下
    2020-03-03
  • linux使用docker-compose部署軟件配置詳解

    linux使用docker-compose部署軟件配置詳解

    這篇文章主要給大家介紹了關(guān)于linux使用docker-compose部署軟件配置的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2018-12-12
  • Ubuntu18.04下將 磁盤掛載在某目錄下

    Ubuntu18.04下將 磁盤掛載在某目錄下

    這篇文章主要介紹了Ubuntu18.04 下將磁盤掛載在某目錄下,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • Linux系統(tǒng)中KafKa安裝和使用方法 java客戶端連接kafka過程

    Linux系統(tǒng)中KafKa安裝和使用方法 java客戶端連接kafka過程

    這篇文章主要介紹了Linux系統(tǒng)中KafKa安裝和使用方法 java客戶端連接kafka過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Linux的netstat命令詳解

    Linux的netstat命令詳解

    這篇文章主要介紹了Linux的netstat命令,netstat命令用于顯示與IP、TCP、UDP和ICMP協(xié)議相關(guān)的統(tǒng)計數(shù)據(jù),它能提供TCP連接,TCP和UDP監(jiān)聽,進程內(nèi)存管理的相關(guān)報告。需要的朋友可以參考下面文章內(nèi)容
    2021-09-09
  • Linux 操作系統(tǒng)下Web服務(wù)器配置詳細介紹

    Linux 操作系統(tǒng)下Web服務(wù)器配置詳細介紹

    Linux 操作系統(tǒng)下Web服務(wù)器配置詳細介紹,需要的朋友可以參考下。
    2009-10-10
  • Linux命令每天必學(xué)(5)之rm命令

    Linux命令每天必學(xué)(5)之rm命令

    rm是常用的命令,該命令的功能為刪除一個目錄中的一個或多個文件或目錄,它也可以將某個目錄及其下的所有文件及子目錄均刪除。對于鏈接文件,只是刪除了鏈接,原有文件均保持不變
    2016-01-01

最新評論