Linux 系統優化的一些建議(核心優化)

2022-09-27 07:15:09 字數 2442 閱讀 3114

關閉swap

如果伺服器上有執行資料庫服務或訊息中介軟體服務,請關閉交換分割槽

echo "vm.swappiness = 0" >> /etc/sy程式設計客棧sctl.conf

sysctl -p

oom killer

一般我們的linux服務都是混部服務的,每個程式申請的物理記憶體都是共享的;例如物理記憶體只有1g,啟動2個程式各申請1g是可以的,linux通過這種過度分配的方式來達到記憶體的充分利用,當程式實際使用記憶體超出物理記憶體時,會被系統按照優先順序,殺掉一部分程式以確保其它程式的正常執行;為了避免核心服務被殺,可以將程序檔案設定為最高優先順序。

# 數值越小越不容易被殺

echo -17 > /proc/$pid/oom_score_adj

tcp因為我們提供的資料庫和一些訊息中介軟體服務都是內網工作的,所以可以針對內網對tcp引數進行一些優化。

預設值為6,參考值為2。主機作為客戶端,對外發起tcp連線時,即三次握手的第一步,核心傳送syn報文的重試次數,超過這個次數後放棄連線。內網環境通訊良好,因此可以適度降低此值

預設值為5,參考值為2。主機作為服務端,接受tcp連線時,在三次握手的第二步,向客戶端傳送syn+ack報文的重試次數,超過這個次數後放棄連線。內網環境中可適度降低此值

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

預設值為0,建議值為1。是否允許將處於time_wait狀態的socket用於新的tcp連線。這對於降低time_wait數量很有效。該引數只有在開啟tcp_timestamps的情況下才會生效。

是否開啟time_wait套接字的快速**,這是比tcp_tw_reuse更激進的一種方式,它同樣依賴tcp_timestamps選項。強烈建議不要開啟tcp_tw_recycle,原因有兩點,一是time_wait是十分必要的狀態,避免關閉中的連線與新建連線之間的資料混淆,二是tcp_tw_recycle選項在nat環境下會導致一些新建連線被拒絕,因為nat下每個主機存在時差,這體現在套接字中的時間戳字段,服務端會發現某個ip上的本應遞增的時間戳出現降低的情況,時間戳相對降低的報文將被丟棄

預設值為128,參考值為2048。定義了系統中每乙個埠上最大的監聽佇列的長度。當服務端監聽了某個埠時,作業系統內部完成對客戶端連線請求的三次握手。這些已建立的連www.cppcns.com接儲存在乙個佇列中,等待accept呼叫取走。本選項就是定義這個佇列的長度。調大該值,可降低高併發場景下服務端的reject次數。

客戶端的請求在服務端由兩個佇列進行管理,一種是與客戶端完成連線建立後,等待accept的放到乙個佇列,這個佇列的長度由somaxconn引數控制;另一種是正在建立但未完成的連線單獨存放乙個佇列,這個佇列的長度由tcp_max_syn_backlog控制;預設128,調到至8192.

預設值為40dsylita96,參考值為100000。定義系統同時保持time_wait套接字的最大數量,如果超過這個數,則time_wait套接字將立刻被清除並列印警告資訊。如果系統被time_wait過多問題困擾,則可以調節tcp_max_tw_buckets、tcp_tw_reuse、tcp_timestamps三個選項來緩解。time_wait狀態產生在tcp會話關閉時主動關閉的一端,如果想從根本上解決問題,則讓客戶端主動關閉連線,而非服務端。

page cache

page cache即系統髒頁,是系統的io快取,當資料寫入磁碟前會先寫入page cache中,然後非同步刷入磁碟;寫快取可以提公升io的訪問速度,但同時也會增加丟失資料的風險。

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

由系統執行的刷盤有兩種寫入策略:

在一般情況下,系統先執行第一種策略,當髒頁資料量過大,非同步執行來不及完成刷盤時,切換到同步方式。

我們可以通過核心引數調整髒資料的刷盤閾值:

除了通過百分比控制,還可以指定過期時間:vm.dirty_expire_centisecs,預設值為3000(30秒),單位為百分之1秒,超過這個時間後,髒資料被非同步刷盤。

可以通過下面的命令檢視系統當前的髒頁數量:

cat /proc/vmstat |egrep "dirty|writeback"

nr_dirty 951

nr_writeback 0

nr_writeback_temp 0

#輸出顯示有951個髒頁等待寫到磁碟。預設情況下每頁大小為4kb。另外,也可以在/proc/meminfo檔案中看到這些資訊。

如果資料安全性要求沒有那麼高,想要多「cache」一些資料,讓讀取更容易命中cache,則可以增加髒資料佔比和過期時間:

vm.dirty_background_ratio = 30

vm.dirty_ratio = 60

vm.dirty_expire_centisecs = 6000

同理,如果不希望因為刷盤導致io被阻,可適當減少非同步刷盤的數值,這樣可以讓io更加平滑:

vm.dirty_background_ratio = 5

vm.dirty_ratio = 60

vue的一些頁面優化建議

條件填充 v if 使用 div 下面的這種是改良版 v if show div template 因為第一種在頁面載入的過程中那個div元素是還沒有隱藏的,在vue的show引數載入出來之前他都是顯示在頁面上的,好像跟實際需要的就有區別 v for使用 vue陣列移除元素 vue陣列能夠用v fo...

Oracle資料庫優化的一些建議

1 oracle 優化內容 根據業務分析人員 設計人員 應用程式開發人員 資料庫管理員 系統管理員幾個不同的角色,針對每個不同角色,進行針對性的內容優化。2 怎樣寫好sql語句 1 盡量簡單,模組化 2 易讀 易維護 3 節省資源 4 記憶體 5 cpu 6 掃瞄的資料塊要少 7 少排序 8 不造成...

關於系統重灌的一些有用建議

重灌系統需要具備的一些基礎知識,像bios,uefi,mbr,gp這些就不說了。下面步入正題 系統重灌需要考慮什麼呢?pe系統 系統安裝盤 安裝檔案 驅動常用軟體 當前網際網路上有各種各樣的pe,那麼到底哪一種適合呢?要從其純淨度來考慮,鑑於中國網際網路現狀,我們無可避免要從這方面考慮,且非常重要,...