版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Linux系統(tǒng)優(yōu)化調(diào)整方案一、Linux系統(tǒng)優(yōu)化概述
Linux系統(tǒng)以其穩(wěn)定性和可定制性,在服務器和個人電腦領(lǐng)域得到廣泛應用。為了提升系統(tǒng)性能、優(yōu)化資源利用率和改善用戶體驗,進行系統(tǒng)優(yōu)化調(diào)整是必要的。本方案將從多個方面提供具體的優(yōu)化措施,幫助用戶提升Linux系統(tǒng)的運行效率。
(一)優(yōu)化目標
1.提高系統(tǒng)響應速度
2.優(yōu)化內(nèi)存和CPU使用效率
3.增強文件系統(tǒng)性能
4.提升網(wǎng)絡(luò)傳輸速度
(二)優(yōu)化方法
1.系統(tǒng)參數(shù)調(diào)整
2.內(nèi)核參數(shù)優(yōu)化
3.服務和進程管理
4.文件系統(tǒng)配置
5.網(wǎng)絡(luò)設(shè)置優(yōu)化
二、系統(tǒng)參數(shù)調(diào)整
系統(tǒng)參數(shù)調(diào)整是優(yōu)化Linux系統(tǒng)的基礎(chǔ),通過調(diào)整內(nèi)核參數(shù)和系統(tǒng)配置文件,可以顯著提升系統(tǒng)性能。
(一)調(diào)整sysctl參數(shù)
sysctl是Linux系統(tǒng)中用于動態(tài)修改內(nèi)核參數(shù)的工具。以下是一些常見的優(yōu)化參數(shù):
1.內(nèi)存管理
-設(shè)置`vm.swappiness`:控制交換空間的使用比例,建議值在1-10之間。
```bash
sysctl-wvm.swappiness=3
```
-設(shè)置`vm.dirty_ratio`:內(nèi)存中臟頁的比例上限,建議值在10-20之間。
```bash
sysctl-wvm.dirty_ratio=15
```
2.網(wǎng)絡(luò)性能
-設(shè)置`net.core.somaxconn`:TCP連接請求隊列的最大長度,建議值在1024-4096之間。
```bash
sysctl-wnet.core.somaxconn=4096
```
-設(shè)置`net.ipv4.tcp_tw_reuse`:允許重新使用TIME_WAIT狀態(tài)的socket,建議值設(shè)置為1。
```bash
sysctl-wnet.ipv4.tcp_tw_reuse=1
```
(二)持久化配置
為了使sysctl參數(shù)在重啟后依然生效,需要將參數(shù)添加到`/etc/sysctl.conf`文件中。
echo"vm.swappiness=3">>/etc/sysctl.conf
echo"vm.dirty_ratio=15">>/etc/sysctl.conf
echo"net.core.somaxconn=4096">>/etc/sysctl.conf
echo"net.ipv4.tcp_tw_reuse=1">>/etc/sysctl.conf
三、內(nèi)核參數(shù)優(yōu)化
內(nèi)核參數(shù)的優(yōu)化可以顯著提升系統(tǒng)性能,特別是在高負載環(huán)境下。
(一)調(diào)整內(nèi)核參數(shù)
1.文件系統(tǒng)性能
-設(shè)置`fs.file-max`:系統(tǒng)可同時打開的文件描述符數(shù)量,建議值在100000-200000之間。
```bash
sysctl-wfs.file-max=150000
```
-設(shè)置`vm.dirty_background_ratio`:后臺臟頁比例上限,建議值在5-10之間。
```bash
sysctl-wvm.dirty_background_ratio=10
```
2.網(wǎng)絡(luò)性能
-設(shè)置`net.ipv4.ip_local_port_range`:本地端口范圍,建議值在1024-65535之間。
```bash
sysctl-wnet.ipv4.ip_local_port_range="102465535"
```
(二)持久化配置
同樣,將內(nèi)核參數(shù)添加到`/etc/sysctl.conf`文件中,確保重啟后生效。
echo"fs.file-max=150000">>/etc/sysctl.conf
echo"vm.dirty_background_ratio=10">>/etc/sysctl.conf
echo"net.ipv4.ip_local_port_range=\"102465535\"">>/etc/sysctl.conf
四、服務和進程管理
合理管理服務和進程可以釋放系統(tǒng)資源,提升整體性能。
(一)關(guān)閉不必要的系統(tǒng)服務
使用`systemctl`命令查看并關(guān)閉不必要的系統(tǒng)服務。
1.查看服務狀態(tài)
```bash
systemctllist-units--type=service--state=running
```
2.關(guān)閉服務
```bash
systemctldisable<service_name>
systemctlstop<service_name>
```
(二)優(yōu)化進程管理
使用`nice`和`ionice`命令調(diào)整進程優(yōu)先級。
1.調(diào)整進程優(yōu)先級
-使用`nice`命令:
```bash
nice-n10./long_running_script.sh
```
-使用`ionice`命令:
```bash
ionice-c2-n7./long_running_script.sh
```
五、文件系統(tǒng)配置
文件系統(tǒng)的配置對系統(tǒng)性能有重要影響,以下是一些常見的優(yōu)化措施。
(一)調(diào)整掛載選項
在`/etc/fstab`文件中調(diào)整掛載選項,提升文件系統(tǒng)性能。
1.添加noatime選項
```bash
/dev/sda1/mntext4defaults,noatime00
```
2.添加nodiratime選項
```bash
/dev/sda1/mntext4defaults,nodiratime00
```
(二)使用SSD優(yōu)化
如果系統(tǒng)使用SSD,可以調(diào)整相關(guān)參數(shù)以提升性能。
1.調(diào)整timeout值
```bash
echo"3600">/sys/block/sda/queue/scheduler
```
六、網(wǎng)絡(luò)設(shè)置優(yōu)化
網(wǎng)絡(luò)設(shè)置對系統(tǒng)性能有直接影響,以下是一些常見的優(yōu)化措施。
(一)調(diào)整TCP參數(shù)
1.設(shè)置tcp_congestion_control
```bash
sysctl-wnet.ipv4.tcp_congestion_control=reno
```
2.設(shè)置tcp_tw_reuse
```bash
sysctl-wnet.ipv4.tcp_tw_reuse=1
```
(二)優(yōu)化網(wǎng)絡(luò)接口
使用`ethtool`工具優(yōu)化網(wǎng)絡(luò)接口性能。
1.查看網(wǎng)絡(luò)接口信息
```bash
ethtool-ieth0
```
2.設(shè)置網(wǎng)絡(luò)接口參數(shù)
```bash
ethtool--set-priv-flagseth0ring-size1024
```
七、總結(jié)
三、內(nèi)核參數(shù)優(yōu)化(續(xù))
(一)調(diào)整內(nèi)核參數(shù)(續(xù))
除了前面提到的文件系統(tǒng)和網(wǎng)絡(luò)性能參數(shù)外,還有一些其他關(guān)鍵的內(nèi)核參數(shù)可以調(diào)整以優(yōu)化系統(tǒng)性能。
1.進程和調(diào)度性能
設(shè)置最大文件句柄數(shù)(`fs.file-max`):系統(tǒng)可以同時打開的最大文件描述符數(shù)量。這個值需要根據(jù)系統(tǒng)負載和應用程序需求進行調(diào)整。如果系統(tǒng)經(jīng)常因為文件描述符耗盡而失敗,可以增加此值。
檢查當前值:
```bash
cat/proc/sys/fs/file-max
```
臨時修改:
```bash
sudosysctl-wfs.file-max=500000
```
永久修改:將上述命令添加到`/etc/sysctl.conf`或`/etc/sysctl.d/`目錄下的某個配置文件中。
調(diào)整進程最大堆大小(`kernel.shmmax`):設(shè)置內(nèi)存共享段的最大大小,單位為字節(jié)。對于需要大量使用共享內(nèi)存的應用程序,增大此值可能有助于避免內(nèi)存不足錯誤。
檢查當前值:
```bash
cat/proc/sys/kernel/shmmax
```
臨時修改(例如設(shè)置為2GB):
```bash
sudosysctl-wkernel.shmmax=2147483648
```
永久修改:將上述命令添加到`/etc/sysctl.conf`或相應的配置文件中。
調(diào)整最大可分配內(nèi)存映射區(qū)域大小(`vm.max_map_count`):這個參數(shù)限制了每個進程可以映射到虛擬地址空間的文件數(shù)量。增加此值對于數(shù)據(jù)庫服務器或使用大量內(nèi)存映射文件的應用程序可能很有用。
檢查當前值:
```bash
cat/proc/sys/vm/max_map_count
```
臨時修改(例如設(shè)置為655360):
```bash
sudosysctl-wvm.max_map_count=655360
```
永久修改:將上述命令添加到`/etc/sysctl.conf`或相應的配置文件中。
2.網(wǎng)絡(luò)性能(續(xù))
調(diào)整TCP接收緩沖區(qū)大小(`net.core.rmem_max`和`net.core.wmem_max`):設(shè)置TCPsocket接收和發(fā)送緩沖區(qū)的最大值。
檢查當前值:
```bash
cat/proc/sys/net/core/rmem_max
cat/proc/sys/net/core/wmem_max
```
臨時修改(例如設(shè)置為10MB):
```bash
sudosysctl-wnet.core.rmem_max=10485760
sudosysctl-wnet.core.wmem_max=10485760
```
永久修改:將上述命令添加到`/etc/sysctl.conf`或相應的配置文件中。
調(diào)整TCP發(fā)送緩沖區(qū)大小(`net.ipv4.tcp_rmem`和`net.ipv4.tcp_wmem`):設(shè)置TCPsocket接收和發(fā)送緩沖區(qū)的默認值范圍。
檢查當前值:
```bash
cat/proc/sys/net/ipv4/tcp_rmem
cat/proc/sys/net/ipv4/tcp_wmem
```
臨時修改(例如設(shè)置為4096-65535-1048576):
```bash
sudosysctl-wnet.ipv4.tcp_rmem="4096655351048576"
sudosysctl-wnet.ipv4.tcp_wmem="4096655351048576"
```
永久修改:將上述命令添加到`/etc/sysctl.conf`或相應的配置文件中。
啟用TCP快速打開(`net.ipv4.tcp_fastopen`):這個選項可以加速TCP連接的建立過程,減少三次握手的延遲。
檢查當前值:
```bash
cat/proc/sys/net/ipv4/tcp_fastopen
```
臨時修改(例如設(shè)置為3,啟用并使用快速SYN):
```bash
sudosysctl-wnet.ipv4.tcp_fastopen=3
```
永久修改:將上述命令添加到`/etc/sysctl.conf`或相應的配置文件中。注意:此功能需要客戶端和服務器都支持,并且可能需要在防火墻規(guī)則中做相應配置。
(二)持久化配置(續(xù))
將所有需要持久化的`sysctl`參數(shù)修改都添加到`/etc/sysctl.conf`文件中。如果需要更細粒度的控制,可以將參數(shù)修改添加到`/etc/sysctl.d/`目錄下的獨立文件中(例如`99-custom-params.conf`)。修改后,使用以下命令使更改立即生效,而無需重啟系統(tǒng):
sudosysctl--system
或者逐個加載
sudosysctl-p/etc/sysctl.conf
或
sudosysctl-p/etc/sysctl.d/99-custom-params.conf
四、服務和進程管理(續(xù))
(一)關(guān)閉不必要的系統(tǒng)服務(續(xù))
識別并關(guān)閉不必要的服務是釋放系統(tǒng)資源的關(guān)鍵步驟。以下是一些方法和需要考慮的方面:
1.使用`systemctl`進行管理:
列出所有服務及其狀態(tài):
```bash
sudosystemctllist-units--type=service--all
```
查找運行中的服務:
```bash
sudosystemctllist-units--type=service--state=running
```
查找啟用自動啟動的服務(即使當前未運行):
```bash
sudosystemctllist-unit-files--type=service--state=enabled
```
停止服務:對于不需要的服務,可以使用`stop`命令停止其當前運行實例。
```bash
sudosystemctlstop<service_name>
例如:停止avahi-daemon服務
sudosystemctlstopavahi-daemon
```
禁用服務:使用`disable`命令阻止服務在系統(tǒng)啟動時自動啟動。
```bash
sudosystemctldisable<service_name>
例如:禁用avahi-daemon服務
sudosystemctldisableavahi-daemon
```
重啟服務:有時在修改配置后需要重啟服務。
```bash
sudosystemctlrestart<service_name>
```
查看服務日志:在決定關(guān)閉某個服務之前,檢查其日志文件了解其功能和影響。
```bash
sudojournalctl-u<service_name>-f
或者查看/var/log/syslog或/var/log/messages
```
2.識別可禁用的服務:
打印服務列表:系統(tǒng)管理員可以使用`prunesysv`工具(需要安裝)來識別可以安全移除或禁用的服務。
```bash
安裝(如果系統(tǒng)支持,例如Debian/Ubuntu)
sudoapt-getinstallprunesysv
運行
sudoprunesysv
```
該工具會顯示所有可以通過`systemctlmask`或`systemctldisable`禁用的服務。
手動識別:根據(jù)系統(tǒng)的用途和運行的應用程序,手動列出可能不需要的服務。例如:
`bluetooth`:如果系統(tǒng)沒有藍牙硬件或不使用藍牙功能。
`cups`:如果系統(tǒng)不作為打印服務器。
`avahi-daemon`:如果系統(tǒng)不需要網(wǎng)絡(luò)發(fā)現(xiàn)功能(如samba或ssh無密碼登錄)。
`iscsid`/`nfs-server`/`nfs-client`:如果系統(tǒng)不參與NFS共享。
`postgresql`/`mysql`/`mariadb`:如果系統(tǒng)不運行這些數(shù)據(jù)庫,即使安裝了它們。
`samba`:如果系統(tǒng)不作為Samba文件服務器。
`snmp`/`snmpd`:如果系統(tǒng)不需要SNMP監(jiān)控。
`systemd-journald`:如果不需要系統(tǒng)日志服務,但需謹慎,因為它可能被其他系統(tǒng)組件依賴。
3.注意事項:
測試環(huán)境優(yōu)先:在生產(chǎn)環(huán)境中關(guān)閉服務前,務必在測試環(huán)境中進行驗證,確保不會影響業(yè)務或系統(tǒng)功能。
依賴關(guān)系:使用`systemd`的`depends-on`和`requires`機制來理解服務間的依賴關(guān)系。強行禁用關(guān)鍵服務可能導致系統(tǒng)不穩(wěn)定或無法啟動??梢允褂胉systemd--failed`查看失敗的服務。
最小化原則:僅保留系統(tǒng)運行和應用程序所需的最少服務。
(二)優(yōu)化進程管理(續(xù))
合理管理進程的優(yōu)先級和資源占用,可以確保關(guān)鍵任務獲得必要的資源,同時限制資源消耗大的進程。
1.使用`nice`調(diào)整優(yōu)先級:
`nice`命令允許以較低的優(yōu)先級運行指定的命令。優(yōu)先級范圍從`-20`(最高優(yōu)先級)到`19`(最低優(yōu)先級),默認值為`0`。
語法:
```bash
nice[-npriority]command[arguments...]
或者
renicepriority-ppid
或者
renicepriority-uusername
```
示例:
以最低優(yōu)先級(`19`)運行一個腳本:
```bash
nice-n19./long_running_script.sh
```
將正在運行的進程`1234`的優(yōu)先級提高(例如設(shè)置為`5`):
```bash
sudorenice5-p1234
```
將用戶`username`所有進程的優(yōu)先級降低(例如設(shè)置為`10`):
```bash
sudorenice10-uusername
```
注意:`nice`調(diào)整的是進程的靜態(tài)優(yōu)先級(`staticnice`),該優(yōu)先級在進程運行期間通常不會改變,除非顯式調(diào)整。動態(tài)優(yōu)先級(`dynamicnice`)由內(nèi)核根據(jù)負載情況調(diào)整。
2.使用`ionice`控制I/O優(yōu)先級:
`ionice`命令允許控制進程對磁盤I/O的訪問權(quán)限,尤其是在多個進程爭搶磁盤資源時。它提供了三種調(diào)度策略:
`FAIR`(公平調(diào)度):這是默認策略(值`1`),進程按順序公平地訪問磁盤。適用于大多數(shù)情況。
`BESTEFFORT`(盡力而為):進程在磁盤空閑時可以搶占其他`BESTEFFORT`進程(值`2`)。適用于對I/O不敏感的后臺任務。
`DEADLINE`(截止時間):進程可以設(shè)定一個截止時間,系統(tǒng)會優(yōu)先滿足其I/O請求(值`3`)。適用于需要按時完成I/O的任務。
語法:
```bash
ionice[-cclass][-nlevel]command[arguments...]
或者
ionice-cclass-nlevel-ppid
或者
ionice-cclass-nlevel-uusername
```
示例:
以`DEADLINE`策略(`ionice`類別`3`,級別`0`)運行一個腳本,爭取優(yōu)先I/O:
```bash
ionice-c3-n0./urgent_io_script.sh
```
將正在運行的進程`5678`設(shè)置為`BESTEFFORT`策略:
```bash
sudoionice-c2-n7-p5678
```
將用戶`username`所有進程設(shè)置為`FAIR`策略:
```bash
sudoionice-c1-n4-uusername
```
注意:`ionice`控制的是進程的磁盤I/O優(yōu)先級,而`nice`控制的是CPU優(yōu)先級。兩者可以結(jié)合使用以全面優(yōu)化進程資源。
3.使用`htop`或`top`監(jiān)控和管理進程:
安裝`htop`(如果系統(tǒng)未預裝):
```bash
Debian/Ubuntu
sudoapt-getinstallhtop
CentOS/RHEL
sudoyuminstallhtop
或者使用包管理器
sudodnfinstallhtop
```
使用`htop`:
打開`htop`:`sudohtop`
在`htop`界面中,可以使用鼠標右鍵點擊進程進行管理:
S:更改進程優(yōu)先級(使用`nice`)。
I:設(shè)置進程I/O優(yōu)先級(使用`ionice`)。
K:發(fā)送信號(如`SIGTERM`終止進程,`SIGKILL`強制終止)。
M:將進程移動到后臺。
使用`top`命令同樣可以查看和終止進程,但功能相對`htop`較少。
4.使用`nohup`和`screen`/`tmux`進行后臺任務管理:
對于需要長時間運行的后臺任務,可以使用`nohup`命令使其在用戶退出終端后繼續(xù)運行。
```bash
nohup./long_running_script.sh>output.log2>&1&
&將命令放入后臺執(zhí)行
```
使用`screen`或`tmux`等終端復用器,可以在一個終端會話中創(chuàng)建多個窗口或會話,即使退出終端后也可以重新連接并繼續(xù)工作。
五、文件系統(tǒng)配置(續(xù))
(一)調(diào)整掛載選項(續(xù))
除了`noatime`和`nodiratime`之外,還有一些其他的掛載選項可以用于優(yōu)化文件系統(tǒng)性能。
1.`barrier`選項:
用途:強制文件系統(tǒng)進行每個寫操作后的屏障(barrier)寫入,確保數(shù)據(jù)寫入物理存儲設(shè)備。這有助于避免數(shù)據(jù)損壞,但在某些情況下可能會降低寫性能。
適用場景:對于需要高數(shù)據(jù)一致性的應用(如數(shù)據(jù)庫),或者在使用某些SSD時,可以考慮啟用。
添加到`/etc/fstab`:
```bash
/dev/sda1/mntext4defaults,barrier00
```
注意:并非所有文件系統(tǒng)都支持`barrier`選項,或者其效果可能不同。啟用前請查閱具體文件系統(tǒng)的文檔。
2.`commit`選項(主要針對XFS):
用途:控制XFS文件系統(tǒng)的日志提交(logcommit)間隔。日志提交是將內(nèi)存中的日志數(shù)據(jù)寫入磁盤的過程。
調(diào)整方法:通過`xfs_admin`命令設(shè)置。
```bash
查看當前日志大小和延遲
xfs_admin-dl/mountpoint
設(shè)置日志大小為128MB,延遲為10秒
sudoxfs_admin-L128M-l10/mountpoint
```
注意:不當?shù)脑O(shè)置可能導致系統(tǒng)崩潰或數(shù)據(jù)丟失,調(diào)整時需非常小心。通常建議保持默認值。
3.`data=writeback`/`data=ordered`/`data=journal`選項(主要針對ext4):
`data=writeback`:將文件數(shù)據(jù)和元數(shù)據(jù)分開寫入。元數(shù)據(jù)寫入日志(提高寫入性能),數(shù)據(jù)直接寫入數(shù)據(jù)塊(可能延遲寫入)。風險較高,在斷電時可能導致數(shù)據(jù)損壞。
`data=ordered`:保證數(shù)據(jù)寫入先于元數(shù)據(jù)寫入完成。提高了寫入性能,同時保證了數(shù)據(jù)的順序性。推薦在大多數(shù)使用場景下使用。
`data=journal`:將數(shù)據(jù)和元數(shù)據(jù)都寫入日志。寫入性能最低,但提供了最高的數(shù)據(jù)安全性。適用于對數(shù)據(jù)一致性要求極高的應用。
添加到`/etc/fstab`(以ext4文件系統(tǒng)為例):
```bash
使用ordered(推薦)
/dev/sda1/mntext4defaults,data=ordered00
使用writeback(風險較高)
/dev/sda1/mntext4defaults,data=writeback00
使用journal
/dev/sda1/mntext4defaults,data=journal00
```
注意:`data=writeback`在斷電時可能導致數(shù)據(jù)丟失,使用時需謹慎。`data=ordered`是一個相對安全的平衡選項。
(二)使用SSD優(yōu)化(續(xù))
固態(tài)硬盤(SSD)與傳統(tǒng)的機械硬盤(HDD)在性能和特性上有顯著差異,需要不同的優(yōu)化策略。
1.啟用TRIM支持:
用途:TRIM命令允許操作系統(tǒng)告知SSD哪些數(shù)據(jù)塊不再使用,從而讓SSD可以釋放和重用這些塊,避免寫入放大,維持性能和延長壽命。
檢查支持:TRIM功能需要文件系統(tǒng)、內(nèi)核和SSD本身都支持??梢酝ㄟ^以下命令檢查:
```bash
檢查內(nèi)核是否支持
dmesg|grepTRIM
檢查ext4是否啟用TRIM
tune2fs-l/dev/sda1|grep'TRIMsupport'
檢查XFS是否啟用TRIM
xfs_info/dev/sda1|grep'TRIM'
```
啟用TRIM(以ext4為例):
確保內(nèi)核參數(shù)`vm.dirty_ratio`和`vm.dirty_background_ratio`設(shè)置合理(不要設(shè)置得太低)。
對于`ext4`,通常默認支持TRIM。如果需要手動確認或調(diào)整,可以修改`/etc/fstab`,添加`discard`選項:
```bash
/dev/sda1/mntext4defaults,discard00
```
重啟系統(tǒng)或重新掛載分區(qū)使更改生效。
對于`XFS`,可以通過`xfs_setattr`命令設(shè)置:
```bash
sudoxfs_setattr-n'trusted(TRIM)'/dev/sda1
```
注意:`discard`選項不僅包括TRIM,還可能包括SSD的空閑空間整理(GC)。某些SSD可能不支持或不喜歡`discard`,此時應禁用該選項。
2.調(diào)整SSD的調(diào)度策略:
`deadline`調(diào)度器:適用于混合負載(讀寫混合),平衡性能和壽命。
`noop`調(diào)度器:幾乎不做任何操作,將延遲交給塊層,性能較好,適用于純隨機讀寫的應用。
`deadline`通常是SSD的良好默認選擇??梢允褂胉ethtool`或`udev`規(guī)則來設(shè)置。
使用`ethtool`查看和設(shè)置:
```bash
查看當前調(diào)度器
ethtool--show-featureseth0|grepscheduler
設(shè)置為deadline(假設(shè)eth0是系統(tǒng)管理接口)
echodeadline|sudotee/sys/block/sda/queue/scheduler
設(shè)置為noop
echonoop|sudotee/sys/block/sda/queue/scheduler
```
注意:設(shè)置調(diào)度器可能需要重啟服務或系統(tǒng)。不同的SSD和驅(qū)動可能支持不同的調(diào)度器。
3.禁用不必要的SSD特性:
某些SSD特性(如SLCCaching、HostProtectedArea(HPA))可能會影響性能或可用空間。如果了解自己SSD的特性,并確定不需要,可以嘗試通過SSD自帶的工具或固件設(shè)置禁用它們。但這通常需要查閱SSD的具體文檔。
六、網(wǎng)絡(luò)設(shè)置優(yōu)化(續(xù))
(一)調(diào)整TCP參數(shù)(續(xù))
除了前面提到的緩沖區(qū)大小和快速打開外,還有一些其他TCP參數(shù)可以進一步優(yōu)化網(wǎng)絡(luò)性能。
1.調(diào)整TCP連接請求隊列(`net.ipv4.tcp_max_syn_backlog`):
用途:設(shè)置TCP連接請求隊列的最大長度。當所有可用的端口都被占用時,這個隊列用于暫存新的連接請求。
調(diào)整方法:
```bash
檢查當前值
cat/proc/sys/net/ipv4/tcp_max_syn_backlog
臨時修改(例如設(shè)置為4096)
sudosysctl-wnet.ipv4.tcp_max_syn_backlog=4096
永久修改
echo"net.ipv4.tcp_max_syn_backlog=4096">>/etc/sysctl.conf
```
注意:增加此值可以容納更多的并發(fā)連接請求,但過大的值可能會消耗更多內(nèi)存,并且在拒絕服務攻擊(DoS)下可能更容易崩潰。通常保持默認值(如1024或2048)即可。
2.啟用TCP窗口縮放(`net.ipv4.tcp_window_scaling`):
用途:允許TCP使用窗口縮放選項,從而在慢啟動階段更有效地利用帶寬,尤其是在高延遲的網(wǎng)絡(luò)連接中。
檢查當前值:
```bash
cat/proc/sys/net/ipv4/tcp_window_scaling
```
臨時修改:
```bash
sudosysctl-wnet.ipv4.tcp_window_scaling=1
```
永久修改:
echo"net.ipv4.tcp_window_scaling=1">>/etc/sysctl.conf
注意:此功能在絕大多數(shù)現(xiàn)代網(wǎng)絡(luò)環(huán)境中都是開啟的,并且是RFC標準。通常不需要手動修改。
3.調(diào)整TCP快速重傳和快速恢復(`net.ipv4.tcp_fack`):
用途:啟用FACK(FastAcknowledgement)機制,該機制可以更快地檢測到丟包并啟動重傳,同時減少不必要的重傳嘗試。與快速重傳(FRT)和快速恢復(FR)配合使用,可以顯著減少網(wǎng)絡(luò)擁塞時的延遲。
檢查當前值:
```bash
cat/proc/sys/net/ipv4/tcp_fack
```
臨時修改:
```bash
sudosysctl-wnet.ipv4.tcp_fack=1
```
永久修改:
echo"net.ipv4.tcp_fack=1">>/etc/sysctl.conf
注意:啟用FACK需要內(nèi)核版本支持。在某些情況下可能需要同時調(diào)整其他TCP擁塞控制算法參數(shù)。對于大多數(shù)通用用途,可以嘗試啟用。
(二)優(yōu)化網(wǎng)絡(luò)接口(續(xù))
除了`ethtool`設(shè)置環(huán)尺寸外,還有一些其他方法可以優(yōu)化網(wǎng)絡(luò)接口。
1.使用`ethtool`調(diào)整中斷合并(`InterruptCoalescing`):
用途:中斷合并可以將多個網(wǎng)絡(luò)事件(如接收或發(fā)送完成)合并成單個中斷處理,減少CPU中斷次數(shù),降低中斷處理開銷。
調(diào)整方法:
```bash
查看當前中斷合并設(shè)置
ethtool-ieth0
ethtool-Xeth0
設(shè)置中斷合并參數(shù)(示例)
設(shè)置RX合并64個包,TX合并32個包
sudoethtool-Ceth0rx_coalesce_count=64tx_coalesce_count=32
設(shè)置中斷延遲100微秒
sudoethtool-Ceth0interrupt_delay=100
```
注意:最佳的合并參數(shù)取決于網(wǎng)絡(luò)流量模式、CPU性能和網(wǎng)卡類型。需要根據(jù)實際情況進行調(diào)整,可以通過觀察系統(tǒng)負載和網(wǎng)絡(luò)性能來找到最佳值。
2.啟用多隊列(`Multi-Queue`/`RSS`):
用途:將網(wǎng)絡(luò)接口的流量分散到多個CPU核心上處理,可以顯著提高高吞吐量網(wǎng)絡(luò)環(huán)境下的CPU利用率和整體性能。
檢查支持:
```bash
ethtool-Leth0
```
如果顯示多個隊列(如`Queue0`,`Queue1`),則該接口支持多隊列。
啟用多隊列:通常在`systemd`系統(tǒng)中,網(wǎng)絡(luò)管理器(NetworkManager)會自動啟用RSS并進行負載均衡。如果使用`network`服務,可能需要在配置文件中手動設(shè)置。
使用`ethtool`配置RSS:
```bash
啟用RSS并指定哈希鍵(例如IP地址)
sudoethtool-Neth0rxofftxoffmulti_queueon
更詳細的RSS配置(可能需要特定網(wǎng)卡驅(qū)動支持)
sudoethtool-Neth0ring6464646464646464rxontxonmulti_queueon
sudoethtool-Keth0rxontxon
```
注意:啟用多隊列需要內(nèi)核和驅(qū)動程序的良好支持。效果取決于CPU核心數(shù)量和網(wǎng)絡(luò)負載。
3.調(diào)整IPv6設(shè)置:
如果系統(tǒng)使用IPv6,也可以進行一些優(yōu)化。
禁用不安全的IPv6功能:
```bash
禁用節(jié)點路由(NDPNodeRoute)
sudosysctl-wnet.ipv6.conf.all.ndp_node_route=0
禁用路由轉(zhuǎn)發(fā)(如果不需要)
sudosysctl-wnet.ipv6.conf.all.forwarding=0
禁用無狀態(tài)地址自動配置(如果不需要)
sudosysctl-wnet.ipv6.conf.all.autocfg_enable=0
```
永久修改:
echo"net.ipv6.conf.all.ndp_node_route=0">>/etc/sysctl.conf
echo"net.ipv6.conf.all.forwarding=0">>/etc/sysctl.conf
echo"net.ipv6.conf.all.autocfg_enable=0">>/etc/sysctl.conf
七、總結(jié)(續(xù))
Linux系統(tǒng)優(yōu)化是一個持續(xù)的過程,需要根據(jù)具體的應用場景、硬件配置和性能瓶頸來調(diào)整。本方案涵蓋了系統(tǒng)參數(shù)、內(nèi)核參數(shù)、服務和進程管理、文件系統(tǒng)以及網(wǎng)絡(luò)設(shè)置等多個方面的優(yōu)化措施。
關(guān)鍵要點總結(jié):
1.系統(tǒng)參數(shù)(`sysctl`):合理調(diào)整內(nèi)存管理、網(wǎng)絡(luò)堆棧等核心參數(shù),如`vm.swappiness`,`net.core.somaxconn`,`net.ipv4.tcp_rmem`等,可以顯著提升基礎(chǔ)性能。
2.內(nèi)核參數(shù):針對特定負載優(yōu)化內(nèi)核參數(shù),如文件句柄數(shù)、共享內(nèi)存大小、進程調(diào)度和I/O調(diào)度,可以最大化資源利用率。
3.服務和進程管理:通過`systemctl`關(guān)閉不必要的系統(tǒng)服務,釋放資源;使用`nice`和`ionice`控制關(guān)鍵進程的優(yōu)先級和I/O訪問權(quán),確保系統(tǒng)平穩(wěn)運行。
4.文件系統(tǒng)配置:調(diào)整掛載選項(如`noatime`,`barrier`,`data=ordered`)可以提升文件操作性能和數(shù)據(jù)安全性。針對SSD啟用TRIM和選擇合適的調(diào)度策略(如`deadline`)可以充分發(fā)揮其優(yōu)勢。
5.網(wǎng)絡(luò)設(shè)置優(yōu)化:調(diào)整TCP/IP協(xié)議棧參數(shù)(如緩沖區(qū)大小、快速打開、FACK)和啟用網(wǎng)絡(luò)接口的多隊列(RSS)功能,可以顯著改善網(wǎng)絡(luò)吞吐量和響應速度。
實施建議:
備份配置:在進行任何修改之前,務必備份相關(guān)的配置文件(如`/etc/sysctl.conf`,`/etc/fstab`)。
逐步修改:不要一次性修改太多參數(shù)。每次修改后,在測試環(huán)境中驗證效果,確保沒有引入新的問題。
監(jiān)控性能:使用`top`,`htop`,`vmstat`,`iostat`,`netstat`,`ss`,`ethtool`等工具監(jiān)控系統(tǒng)性能變化,以便評估優(yōu)化效果。
考慮實際負載:優(yōu)化參數(shù)沒有通用最佳值,需要根據(jù)系統(tǒng)的實際工作負載進行調(diào)整。例如,數(shù)據(jù)庫服務器和網(wǎng)頁服務器的優(yōu)化重點可能不同。
查閱文檔:對于特定的內(nèi)核參數(shù)、文件系統(tǒng)選項或網(wǎng)絡(luò)配置,請查閱相關(guān)文檔以獲取更詳細的信息和推薦值。
一、Linux系統(tǒng)優(yōu)化概述
Linux系統(tǒng)以其穩(wěn)定性和可定制性,在服務器和個人電腦領(lǐng)域得到廣泛應用。為了提升系統(tǒng)性能、優(yōu)化資源利用率和改善用戶體驗,進行系統(tǒng)優(yōu)化調(diào)整是必要的。本方案將從多個方面提供具體的優(yōu)化措施,幫助用戶提升Linux系統(tǒng)的運行效率。
(一)優(yōu)化目標
1.提高系統(tǒng)響應速度
2.優(yōu)化內(nèi)存和CPU使用效率
3.增強文件系統(tǒng)性能
4.提升網(wǎng)絡(luò)傳輸速度
(二)優(yōu)化方法
1.系統(tǒng)參數(shù)調(diào)整
2.內(nèi)核參數(shù)優(yōu)化
3.服務和進程管理
4.文件系統(tǒng)配置
5.網(wǎng)絡(luò)設(shè)置優(yōu)化
二、系統(tǒng)參數(shù)調(diào)整
系統(tǒng)參數(shù)調(diào)整是優(yōu)化Linux系統(tǒng)的基礎(chǔ),通過調(diào)整內(nèi)核參數(shù)和系統(tǒng)配置文件,可以顯著提升系統(tǒng)性能。
(一)調(diào)整sysctl參數(shù)
sysctl是Linux系統(tǒng)中用于動態(tài)修改內(nèi)核參數(shù)的工具。以下是一些常見的優(yōu)化參數(shù):
1.內(nèi)存管理
-設(shè)置`vm.swappiness`:控制交換空間的使用比例,建議值在1-10之間。
```bash
sysctl-wvm.swappiness=3
```
-設(shè)置`vm.dirty_ratio`:內(nèi)存中臟頁的比例上限,建議值在10-20之間。
```bash
sysctl-wvm.dirty_ratio=15
```
2.網(wǎng)絡(luò)性能
-設(shè)置`net.core.somaxconn`:TCP連接請求隊列的最大長度,建議值在1024-4096之間。
```bash
sysctl-wnet.core.somaxconn=4096
```
-設(shè)置`net.ipv4.tcp_tw_reuse`:允許重新使用TIME_WAIT狀態(tài)的socket,建議值設(shè)置為1。
```bash
sysctl-wnet.ipv4.tcp_tw_reuse=1
```
(二)持久化配置
為了使sysctl參數(shù)在重啟后依然生效,需要將參數(shù)添加到`/etc/sysctl.conf`文件中。
echo"vm.swappiness=3">>/etc/sysctl.conf
echo"vm.dirty_ratio=15">>/etc/sysctl.conf
echo"net.core.somaxconn=4096">>/etc/sysctl.conf
echo"net.ipv4.tcp_tw_reuse=1">>/etc/sysctl.conf
三、內(nèi)核參數(shù)優(yōu)化
內(nèi)核參數(shù)的優(yōu)化可以顯著提升系統(tǒng)性能,特別是在高負載環(huán)境下。
(一)調(diào)整內(nèi)核參數(shù)
1.文件系統(tǒng)性能
-設(shè)置`fs.file-max`:系統(tǒng)可同時打開的文件描述符數(shù)量,建議值在100000-200000之間。
```bash
sysctl-wfs.file-max=150000
```
-設(shè)置`vm.dirty_background_ratio`:后臺臟頁比例上限,建議值在5-10之間。
```bash
sysctl-wvm.dirty_background_ratio=10
```
2.網(wǎng)絡(luò)性能
-設(shè)置`net.ipv4.ip_local_port_range`:本地端口范圍,建議值在1024-65535之間。
```bash
sysctl-wnet.ipv4.ip_local_port_range="102465535"
```
(二)持久化配置
同樣,將內(nèi)核參數(shù)添加到`/etc/sysctl.conf`文件中,確保重啟后生效。
echo"fs.file-max=150000">>/etc/sysctl.conf
echo"vm.dirty_background_ratio=10">>/etc/sysctl.conf
echo"net.ipv4.ip_local_port_range=\"102465535\"">>/etc/sysctl.conf
四、服務和進程管理
合理管理服務和進程可以釋放系統(tǒng)資源,提升整體性能。
(一)關(guān)閉不必要的系統(tǒng)服務
使用`systemctl`命令查看并關(guān)閉不必要的系統(tǒng)服務。
1.查看服務狀態(tài)
```bash
systemctllist-units--type=service--state=running
```
2.關(guān)閉服務
```bash
systemctldisable<service_name>
systemctlstop<service_name>
```
(二)優(yōu)化進程管理
使用`nice`和`ionice`命令調(diào)整進程優(yōu)先級。
1.調(diào)整進程優(yōu)先級
-使用`nice`命令:
```bash
nice-n10./long_running_script.sh
```
-使用`ionice`命令:
```bash
ionice-c2-n7./long_running_script.sh
```
五、文件系統(tǒng)配置
文件系統(tǒng)的配置對系統(tǒng)性能有重要影響,以下是一些常見的優(yōu)化措施。
(一)調(diào)整掛載選項
在`/etc/fstab`文件中調(diào)整掛載選項,提升文件系統(tǒng)性能。
1.添加noatime選項
```bash
/dev/sda1/mntext4defaults,noatime00
```
2.添加nodiratime選項
```bash
/dev/sda1/mntext4defaults,nodiratime00
```
(二)使用SSD優(yōu)化
如果系統(tǒng)使用SSD,可以調(diào)整相關(guān)參數(shù)以提升性能。
1.調(diào)整timeout值
```bash
echo"3600">/sys/block/sda/queue/scheduler
```
六、網(wǎng)絡(luò)設(shè)置優(yōu)化
網(wǎng)絡(luò)設(shè)置對系統(tǒng)性能有直接影響,以下是一些常見的優(yōu)化措施。
(一)調(diào)整TCP參數(shù)
1.設(shè)置tcp_congestion_control
```bash
sysctl-wnet.ipv4.tcp_congestion_control=reno
```
2.設(shè)置tcp_tw_reuse
```bash
sysctl-wnet.ipv4.tcp_tw_reuse=1
```
(二)優(yōu)化網(wǎng)絡(luò)接口
使用`ethtool`工具優(yōu)化網(wǎng)絡(luò)接口性能。
1.查看網(wǎng)絡(luò)接口信息
```bash
ethtool-ieth0
```
2.設(shè)置網(wǎng)絡(luò)接口參數(shù)
```bash
ethtool--set-priv-flagseth0ring-size1024
```
七、總結(jié)
三、內(nèi)核參數(shù)優(yōu)化(續(xù))
(一)調(diào)整內(nèi)核參數(shù)(續(xù))
除了前面提到的文件系統(tǒng)和網(wǎng)絡(luò)性能參數(shù)外,還有一些其他關(guān)鍵的內(nèi)核參數(shù)可以調(diào)整以優(yōu)化系統(tǒng)性能。
1.進程和調(diào)度性能
設(shè)置最大文件句柄數(shù)(`fs.file-max`):系統(tǒng)可以同時打開的最大文件描述符數(shù)量。這個值需要根據(jù)系統(tǒng)負載和應用程序需求進行調(diào)整。如果系統(tǒng)經(jīng)常因為文件描述符耗盡而失敗,可以增加此值。
檢查當前值:
```bash
cat/proc/sys/fs/file-max
```
臨時修改:
```bash
sudosysctl-wfs.file-max=500000
```
永久修改:將上述命令添加到`/etc/sysctl.conf`或`/etc/sysctl.d/`目錄下的某個配置文件中。
調(diào)整進程最大堆大小(`kernel.shmmax`):設(shè)置內(nèi)存共享段的最大大小,單位為字節(jié)。對于需要大量使用共享內(nèi)存的應用程序,增大此值可能有助于避免內(nèi)存不足錯誤。
檢查當前值:
```bash
cat/proc/sys/kernel/shmmax
```
臨時修改(例如設(shè)置為2GB):
```bash
sudosysctl-wkernel.shmmax=2147483648
```
永久修改:將上述命令添加到`/etc/sysctl.conf`或相應的配置文件中。
調(diào)整最大可分配內(nèi)存映射區(qū)域大小(`vm.max_map_count`):這個參數(shù)限制了每個進程可以映射到虛擬地址空間的文件數(shù)量。增加此值對于數(shù)據(jù)庫服務器或使用大量內(nèi)存映射文件的應用程序可能很有用。
檢查當前值:
```bash
cat/proc/sys/vm/max_map_count
```
臨時修改(例如設(shè)置為655360):
```bash
sudosysctl-wvm.max_map_count=655360
```
永久修改:將上述命令添加到`/etc/sysctl.conf`或相應的配置文件中。
2.網(wǎng)絡(luò)性能(續(xù))
調(diào)整TCP接收緩沖區(qū)大小(`net.core.rmem_max`和`net.core.wmem_max`):設(shè)置TCPsocket接收和發(fā)送緩沖區(qū)的最大值。
檢查當前值:
```bash
cat/proc/sys/net/core/rmem_max
cat/proc/sys/net/core/wmem_max
```
臨時修改(例如設(shè)置為10MB):
```bash
sudosysctl-wnet.core.rmem_max=10485760
sudosysctl-wnet.core.wmem_max=10485760
```
永久修改:將上述命令添加到`/etc/sysctl.conf`或相應的配置文件中。
調(diào)整TCP發(fā)送緩沖區(qū)大小(`net.ipv4.tcp_rmem`和`net.ipv4.tcp_wmem`):設(shè)置TCPsocket接收和發(fā)送緩沖區(qū)的默認值范圍。
檢查當前值:
```bash
cat/proc/sys/net/ipv4/tcp_rmem
cat/proc/sys/net/ipv4/tcp_wmem
```
臨時修改(例如設(shè)置為4096-65535-1048576):
```bash
sudosysctl-wnet.ipv4.tcp_rmem="4096655351048576"
sudosysctl-wnet.ipv4.tcp_wmem="4096655351048576"
```
永久修改:將上述命令添加到`/etc/sysctl.conf`或相應的配置文件中。
啟用TCP快速打開(`net.ipv4.tcp_fastopen`):這個選項可以加速TCP連接的建立過程,減少三次握手的延遲。
檢查當前值:
```bash
cat/proc/sys/net/ipv4/tcp_fastopen
```
臨時修改(例如設(shè)置為3,啟用并使用快速SYN):
```bash
sudosysctl-wnet.ipv4.tcp_fastopen=3
```
永久修改:將上述命令添加到`/etc/sysctl.conf`或相應的配置文件中。注意:此功能需要客戶端和服務器都支持,并且可能需要在防火墻規(guī)則中做相應配置。
(二)持久化配置(續(xù))
將所有需要持久化的`sysctl`參數(shù)修改都添加到`/etc/sysctl.conf`文件中。如果需要更細粒度的控制,可以將參數(shù)修改添加到`/etc/sysctl.d/`目錄下的獨立文件中(例如`99-custom-params.conf`)。修改后,使用以下命令使更改立即生效,而無需重啟系統(tǒng):
sudosysctl--system
或者逐個加載
sudosysctl-p/etc/sysctl.conf
或
sudosysctl-p/etc/sysctl.d/99-custom-params.conf
四、服務和進程管理(續(xù))
(一)關(guān)閉不必要的系統(tǒng)服務(續(xù))
識別并關(guān)閉不必要的服務是釋放系統(tǒng)資源的關(guān)鍵步驟。以下是一些方法和需要考慮的方面:
1.使用`systemctl`進行管理:
列出所有服務及其狀態(tài):
```bash
sudosystemctllist-units--type=service--all
```
查找運行中的服務:
```bash
sudosystemctllist-units--type=service--state=running
```
查找啟用自動啟動的服務(即使當前未運行):
```bash
sudosystemctllist-unit-files--type=service--state=enabled
```
停止服務:對于不需要的服務,可以使用`stop`命令停止其當前運行實例。
```bash
sudosystemctlstop<service_name>
例如:停止avahi-daemon服務
sudosystemctlstopavahi-daemon
```
禁用服務:使用`disable`命令阻止服務在系統(tǒng)啟動時自動啟動。
```bash
sudosystemctldisable<service_name>
例如:禁用avahi-daemon服務
sudosystemctldisableavahi-daemon
```
重啟服務:有時在修改配置后需要重啟服務。
```bash
sudosystemctlrestart<service_name>
```
查看服務日志:在決定關(guān)閉某個服務之前,檢查其日志文件了解其功能和影響。
```bash
sudojournalctl-u<service_name>-f
或者查看/var/log/syslog或/var/log/messages
```
2.識別可禁用的服務:
打印服務列表:系統(tǒng)管理員可以使用`prunesysv`工具(需要安裝)來識別可以安全移除或禁用的服務。
```bash
安裝(如果系統(tǒng)支持,例如Debian/Ubuntu)
sudoapt-getinstallprunesysv
運行
sudoprunesysv
```
該工具會顯示所有可以通過`systemctlmask`或`systemctldisable`禁用的服務。
手動識別:根據(jù)系統(tǒng)的用途和運行的應用程序,手動列出可能不需要的服務。例如:
`bluetooth`:如果系統(tǒng)沒有藍牙硬件或不使用藍牙功能。
`cups`:如果系統(tǒng)不作為打印服務器。
`avahi-daemon`:如果系統(tǒng)不需要網(wǎng)絡(luò)發(fā)現(xiàn)功能(如samba或ssh無密碼登錄)。
`iscsid`/`nfs-server`/`nfs-client`:如果系統(tǒng)不參與NFS共享。
`postgresql`/`mysql`/`mariadb`:如果系統(tǒng)不運行這些數(shù)據(jù)庫,即使安裝了它們。
`samba`:如果系統(tǒng)不作為Samba文件服務器。
`snmp`/`snmpd`:如果系統(tǒng)不需要SNMP監(jiān)控。
`systemd-journald`:如果不需要系統(tǒng)日志服務,但需謹慎,因為它可能被其他系統(tǒng)組件依賴。
3.注意事項:
測試環(huán)境優(yōu)先:在生產(chǎn)環(huán)境中關(guān)閉服務前,務必在測試環(huán)境中進行驗證,確保不會影響業(yè)務或系統(tǒng)功能。
依賴關(guān)系:使用`systemd`的`depends-on`和`requires`機制來理解服務間的依賴關(guān)系。強行禁用關(guān)鍵服務可能導致系統(tǒng)不穩(wěn)定或無法啟動??梢允褂胉systemd--failed`查看失敗的服務。
最小化原則:僅保留系統(tǒng)運行和應用程序所需的最少服務。
(二)優(yōu)化進程管理(續(xù))
合理管理進程的優(yōu)先級和資源占用,可以確保關(guān)鍵任務獲得必要的資源,同時限制資源消耗大的進程。
1.使用`nice`調(diào)整優(yōu)先級:
`nice`命令允許以較低的優(yōu)先級運行指定的命令。優(yōu)先級范圍從`-20`(最高優(yōu)先級)到`19`(最低優(yōu)先級),默認值為`0`。
語法:
```bash
nice[-npriority]command[arguments...]
或者
renicepriority-ppid
或者
renicepriority-uusername
```
示例:
以最低優(yōu)先級(`19`)運行一個腳本:
```bash
nice-n19./long_running_script.sh
```
將正在運行的進程`1234`的優(yōu)先級提高(例如設(shè)置為`5`):
```bash
sudorenice5-p1234
```
將用戶`username`所有進程的優(yōu)先級降低(例如設(shè)置為`10`):
```bash
sudorenice10-uusername
```
注意:`nice`調(diào)整的是進程的靜態(tài)優(yōu)先級(`staticnice`),該優(yōu)先級在進程運行期間通常不會改變,除非顯式調(diào)整。動態(tài)優(yōu)先級(`dynamicnice`)由內(nèi)核根據(jù)負載情況調(diào)整。
2.使用`ionice`控制I/O優(yōu)先級:
`ionice`命令允許控制進程對磁盤I/O的訪問權(quán)限,尤其是在多個進程爭搶磁盤資源時。它提供了三種調(diào)度策略:
`FAIR`(公平調(diào)度):這是默認策略(值`1`),進程按順序公平地訪問磁盤。適用于大多數(shù)情況。
`BESTEFFORT`(盡力而為):進程在磁盤空閑時可以搶占其他`BESTEFFORT`進程(值`2`)。適用于對I/O不敏感的后臺任務。
`DEADLINE`(截止時間):進程可以設(shè)定一個截止時間,系統(tǒng)會優(yōu)先滿足其I/O請求(值`3`)。適用于需要按時完成I/O的任務。
語法:
```bash
ionice[-cclass][-nlevel]command[arguments...]
或者
ionice-cclass-nlevel-ppid
或者
ionice-cclass-nlevel-uusername
```
示例:
以`DEADLINE`策略(`ionice`類別`3`,級別`0`)運行一個腳本,爭取優(yōu)先I/O:
```bash
ionice-c3-n0./urgent_io_script.sh
```
將正在運行的進程`5678`設(shè)置為`BESTEFFORT`策略:
```bash
sudoionice-c2-n7-p5678
```
將用戶`username`所有進程設(shè)置為`FAIR`策略:
```bash
sudoionice-c1-n4-uusername
```
注意:`ionice`控制的是進程的磁盤I/O優(yōu)先級,而`nice`控制的是CPU優(yōu)先級。兩者可以結(jié)合使用以全面優(yōu)化進程資源。
3.使用`htop`或`top`監(jiān)控和管理進程:
安裝`htop`(如果系統(tǒng)未預裝):
```bash
Debian/Ubuntu
sudoapt-getinstallhtop
CentOS/RHEL
sudoyuminstallhtop
或者使用包管理器
sudodnfinstallhtop
```
使用`htop`:
打開`htop`:`sudohtop`
在`htop`界面中,可以使用鼠標右鍵點擊進程進行管理:
S:更改進程優(yōu)先級(使用`nice`)。
I:設(shè)置進程I/O優(yōu)先級(使用`ionice`)。
K:發(fā)送信號(如`SIGTERM`終止進程,`SIGKILL`強制終止)。
M:將進程移動到后臺。
使用`top`命令同樣可以查看和終止進程,但功能相對`htop`較少。
4.使用`nohup`和`screen`/`tmux`進行后臺任務管理:
對于需要長時間運行的后臺任務,可以使用`nohup`命令使其在用戶退出終端后繼續(xù)運行。
```bash
nohup./long_running_script.sh>output.log2>&1&
&將命令放入后臺執(zhí)行
```
使用`screen`或`tmux`等終端復用器,可以在一個終端會話中創(chuàng)建多個窗口或會話,即使退出終端后也可以重新連接并繼續(xù)工作。
五、文件系統(tǒng)配置(續(xù))
(一)調(diào)整掛載選項(續(xù))
除了`noatime`和`nodiratime`之外,還有一些其他的掛載選項可以用于優(yōu)化文件系統(tǒng)性能。
1.`barrier`選項:
用途:強制文件系統(tǒng)進行每個寫操作后的屏障(barrier)寫入,確保數(shù)據(jù)寫入物理存儲設(shè)備。這有助于避免數(shù)據(jù)損壞,但在某些情況下可能會降低寫性能。
適用場景:對于需要高數(shù)據(jù)一致性的應用(如數(shù)據(jù)庫),或者在使用某些SSD時,可以考慮啟用。
添加到`/etc/fstab`:
```bash
/dev/sda1/mntext4defaults,barrier00
```
注意:并非所有文件系統(tǒng)都支持`barrier`選項,或者其效果可能不同。啟用前請查閱具體文件系統(tǒng)的文檔。
2.`commit`選項(主要針對XFS):
用途:控制XFS文件系統(tǒng)的日志提交(logcommit)間隔。日志提交是將內(nèi)存中的日志數(shù)據(jù)寫入磁盤的過程。
調(diào)整方法:通過`xfs_admin`命令設(shè)置。
```bash
查看當前日志大小和延遲
xfs_admin-dl/mountpoint
設(shè)置日志大小為128MB,延遲為10秒
sudoxfs_admin-L128M-l10/mountpoint
```
注意:不當?shù)脑O(shè)置可能導致系統(tǒng)崩潰或數(shù)據(jù)丟失,調(diào)整時需非常小心。通常建議保持默認值。
3.`data=writeback`/`data=ordered`/`data=journal`選項(主要針對ext4):
`data=writeback`:將文件數(shù)據(jù)和元數(shù)據(jù)分開寫入。元數(shù)據(jù)寫入日志(提高寫入性能),數(shù)據(jù)直接寫入數(shù)據(jù)塊(可能延遲寫入)。風險較高,在斷電時可能導致數(shù)據(jù)損壞。
`data=ordered`:保證數(shù)據(jù)寫入先于元數(shù)據(jù)寫入完成。提高了寫入性能,同時保證了數(shù)據(jù)的順序性。推薦在大多數(shù)使用場景下使用。
`data=journal`:將數(shù)據(jù)和元數(shù)據(jù)都寫入日志。寫入性能最低,但提供了最高的數(shù)據(jù)安全性。適用于對數(shù)據(jù)一致性要求極高的應用。
添加到`/etc/fstab`(以ext4文件系統(tǒng)為例):
```bash
使用ordered(推薦)
/dev/sda1/mntext4defaults,data=ordered00
使用writeback(風險較高)
/dev/sda1/mntext4defaults,data=writeback00
使用journal
/dev/sda1/mntext4defaults,data=journal00
```
注意:`data=writeback`在斷電時可能導致數(shù)據(jù)丟失,使用時需謹慎。`data=ordered`是一個相對安全的平衡選項。
(二)使用SSD優(yōu)化(續(xù))
固態(tài)硬盤(SSD)與傳統(tǒng)的機械硬盤(HDD)在性能和特性上有顯著差異,需要不同的優(yōu)化策略。
1.啟用TRIM支持:
用途:TRIM命令允許操作系統(tǒng)告知SSD哪些數(shù)據(jù)塊不再使用,從而讓SSD可以釋放和重用這些塊,避免寫入放大,維持性能和延長壽命。
檢查支持:TRIM功能需要文件系統(tǒng)、內(nèi)核和SSD本身都支持。可以通過以下命令檢查:
```bash
檢查內(nèi)核是否支持
dmesg|grepTRIM
檢查ext4是否啟用TRIM
tune2fs-l/dev/sda1|grep'TRIMsupport'
檢查XFS是否啟用TRIM
xfs_info/dev/sda1|grep'TRIM'
```
啟用TRIM(以ext4為例):
確保內(nèi)核參數(shù)`vm.dirty_ratio`和`vm.dirty_background_ratio`設(shè)置合理(不要設(shè)置得太低)。
對于`ext4`,通常默認支持TRIM。如果需要手動確認或調(diào)整,可以修改`/etc/fstab`,添加`discard`選項:
```bash
/dev/sda1/mntext4defaults,discard00
```
重啟系統(tǒng)或重新掛載分區(qū)使更改生效。
對于`XFS`,可以通過`xfs_setattr`命令設(shè)置:
```bash
sudoxfs_setattr-n'trusted(TRIM)'/dev/sda1
```
注意:`discard`選項不僅包括TRIM,還可能包括SSD的空閑空間整理(GC)。某些SSD可能不支持或不喜歡`discard`,此時應禁用該選項。
2.調(diào)整SSD的調(diào)度策略:
`deadline`調(diào)度器:適用于混合負載(讀寫混合),平衡性能和壽命。
`noop`調(diào)度器:幾乎不做任何操作,將延遲交給塊層,性能較好,適用于純隨機讀寫的應用。
`deadline`通常是SSD的良好默認選擇??梢允褂胉ethtool`或`udev`規(guī)則來設(shè)置。
使用`ethtool`查看和設(shè)置:
```bash
查看當前調(diào)度器
ethtool--show-featureseth0|grepscheduler
設(shè)置為deadline(假設(shè)eth0是系統(tǒng)管理接口)
echodeadline|sudotee/sys/block/sda/queue/scheduler
設(shè)置為noop
echonoop|sudotee/sys/block/sda/queue/scheduler
```
注意:設(shè)置調(diào)度器可能需要重啟服務或系統(tǒng)。不同的SSD和驅(qū)動可能支持不同的調(diào)度器。
3.禁用不必要的SSD特性:
某些SSD特性(如SLCCaching、HostProtectedArea(HPA))可能會影響性能或可用空間。如果了解自己SSD的特性,并確定不需要,可以嘗試通過SSD自帶的工具或固件設(shè)置禁用它們。但這通常需要查閱SSD的具體文檔。
六、網(wǎng)絡(luò)設(shè)置優(yōu)化(續(xù))
(一)調(diào)整TCP參數(shù)(續(xù))
除了前面提到的緩沖區(qū)大小和快速打開外,還有一些其他TCP參數(shù)可以進一步優(yōu)化網(wǎng)絡(luò)性能。
1.調(diào)整TCP連接請求隊列(`net.ipv4.tcp_max_syn_backlog`):
用途:設(shè)置TCP連接請求隊列的最大長度。當所有可用的端口都被占用時,這個隊列用于暫存新的連接請求。
調(diào)整方法:
```bash
檢查當前值
cat/proc/sys/net/ipv4/tcp_max_syn_backlog
臨時修改(例如設(shè)置為4096)
sudosysctl-wnet.ipv4.tcp_max_syn_backlog=4096
永久修改
echo"net.ipv4.tcp_max_syn_backlog=4096">>/etc/sysctl.conf
```
注意:增加此值可以容納更多的并發(fā)連接請求,但過大的值可能會消耗更多內(nèi)存,并且在拒絕服務攻擊(DoS)下可能更容易崩潰。通常保持默認值(如1024或2048)即可。
2.啟用TCP窗口縮放(`net.ipv4.tcp_window_scaling`):
用途:允許TCP使用窗口縮放選項,從而在慢啟動階段更有效地利用帶寬,尤其是在高延遲的網(wǎng)絡(luò)連接中。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 商場進貨管理制度
- 商務知識產(chǎn)權(quán)保護與運用制度
- 醫(yī)院醫(yī)療糾紛處理制度
- 倉庫庫存管理及安全檢查制度
- 知情同意重構(gòu)經(jīng)驗:基因檢測的總結(jié)
- 知情同意新范式:3D打印醫(yī)患交互模型實踐
- 瞼緣炎患者淚膜保護方案-1
- 眼科手術(shù)麻醉不良事件的預防與應對
- 真實世界證據(jù)支持藥物個體化用藥方案優(yōu)化-2
- 真實世界證據(jù)支持下的青少年抑郁癥臨床路徑干預評價
- 2024-2025學年江蘇省南京市玄武區(qū)八年級上學期期末語文試題及答案
- 專升本語文教學課件
- 別人買房子給我合同范本
- 電力通信培訓課件
- 中建三局2024年項目經(jīng)理思維導圖
- 基層黨建知識測試題及答案
- DG-TJ08-2021-2025 干混砌筑砂漿抗壓強度現(xiàn)場檢測技術(shù)標準
- 鼻竇炎的護理講課課件
- 腸系膜脂膜炎CT診斷
- 體外膜肺氧合技術(shù)ECMO培訓課件
- 老年醫(yī)院重點??平ㄔO(shè)方案
評論
0/150
提交評論