Linux伺服器系統引數優化

2021-08-27 06:42:08 字數 4159 閱讀 7742

在伺服器安裝了lnmt(linux+nginx+mysql+tomcat)環境之後linux伺服器引數必須做必要的優化,包括網路引數優化、檔案數優化、記憶體優化等等。

1、網路引數優化:

這部分主要參照張宴 《nginx 0.8.x + php 5.2.13(fastcgi)搭建勝過apache十倍的web伺服器(第6版)[原創]》其中 五、優化linux核心引數的內容:

vi /etc/sysctl.conf #編輯sysctl.conf檔案

#在/etc/sysctl.conf中新增如下內容

# 網路引數優化開始

net.ipv4.tcp_max_syn_backlog = 65536

net.core.netdev_max_backlog = 32768

net.core.somaxconn = 32768

net.core.wmem_default = 8388608

net.core.rmem_default = 8388608

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216

net.ipv4.tcp_timestamps = 0

net.ipv4.tcp_synack_retries = 2

net.ipv4.tcp_syn_retries = 2

net.ipv4.tcp_tw_recycle = 1

#net.ipv4.tcp_tw_len = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_mem = 94500000 915000000 927000000

net.ipv4.tcp_max_orphans = 3276800

#net.ipv4.tcp_fin_timeout = 30

#net.ipv4.tcp_keepalive_time = 120

net.ipv4.ip_local_port_range = 1024 65535

#網路引數優化結束

#新增內容結束

說明:net.ipv4.tcp_syncookies = 1 表示開啟syn cookies。當出現syn等待佇列溢位時,啟用cookies來處理,可防範少量syn攻擊,預設為0,表示關閉;

net.ipv4.tcp_tw_reuse = 1 表示開啟重用。允許將time-wait sockets重新用於新的tcp連線,預設為0,表示關閉;

net.ipv4.tcp_tw_recycle = 1 表示開啟tcp連線中time-wait sockets的快速**,預設為0,表示關閉。

修改完成後執行以下命令使引數生效:

/sbin/sysctl -p

2、系統最大開啟檔案數優化

預設情況下,系統允許最大開啟檔案數為1024個,這對於訪問量較大的web伺服器來說遠遠不夠用。系統最大開啟檔案數可以通過ulimit來修改和查詢。

一般情況下,可以通過ulimit -n來檢視目前系統允許的最大開啟檔案數,例如 :

ulimit -n

1024 #系統返回

如果我們要修改系統允許最大檔案開啟數,可以通過ulimit -shn來做,例如要臨時修改系統最大開啟檔案數為51201個,那麼用如下命令:

ulimit shn 51201

每次重啟系統時,該值會被自動還原,可以將上述命令寫入 /etc/rc.local 中。如果想永久更改,可以按照如下修改:

vi /etc/security/limits.conf

# add

* soft nofile 51201

* hard nofile 51201

系統最大開啟檔案數影響到的配置檔案(以下必須設定為系統設定相一致,例如設定系統最大開啟檔案數為:51201):

nginx配置檔案nginx.conf的配置項:worker_rlimit_nofile、worker_connections、open_file_cache等,例如設定為:

3、系統共享記憶體優化:

系統共享記憶體大小主要影響到eaccelerator的設定:

eaccelerator.shm_size="32"

該項為eaccelerator可使用的共享記憶體大小(單位為mb)設定。

在linux下,單個程序的最大共享記憶體使用量受/proc/sys/kernel/shmmax中設定的數字限制(單位為位元組),例如redhat 4.7的shmmax預設值為33554432位元組(33554432bytes/1024/1024=32mb)。 臨時更改該值(例如修改為128mb=128x1024x1024=134217728位元組):

echo 134217728 > /proc/sys/kernel/shmmax

echo 134217728 > /proc/sys/kernel/shmall

按照以上方法更改,在每次重啟系統時,該值會被自動還原。如果想永久更改,可以修改/etc/sysctl.conf檔案,設定:

#系統共享記憶體大小優化

kernel.shmmax = 134217728

完整的/etc/sysctl.conf修改新增內容如下:

#在/etc/sysctl.conf中新增如下內容

# 網路引數優化開始

net.ipv4.tcp_max_syn_backlog = 65536

net.core.netdev_max_backlog = 32768

net.core.somaxconn = 32768

net.core.wmem_default = 8388608

net.core.rmem_default = 8388608

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216

net.ipv4.tcp_timestamps = 0

net.ipv4.tcp_synack_retries = 2

net.ipv4.tcp_syn_retries = 2

net.ipv4.tcp_tw_recycle = 1

#net.ipv4.tcp_tw_len = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_mem = 94500000 915000000 927000000

net.ipv4.tcp_max_orphans = 3276800

#net.ipv4.tcp_fin_timeout = 30

#net.ipv4.tcp_keepalive_time = 120

net.ipv4.ip_local_port_range = 1024 65535

#網路引數優化結束

#系統共享記憶體大小優化開始

kernel.shmmax = 134217728

#系統共享記憶體大小優化結束

#新增內容結束

修改完成後執行以下命令使引數生效:

/sbin/sysctl -p

用以下語句看了一下伺服器的tcp狀態:

netstat -n | awk '/^tcp/ end '

返回結果如下:

established 1423

fin_wait1 1

fin_wait2 262

syn_sent 1

time_wait 962

Linux伺服器核心引數優化

kernel optimization root localhost vim etc sysctl.conf net.ipv4.tcp fin timeout 2 net.ipv4.tcp tw reuse 1 net.ipv4.tcp tw recycle 1 net.ipv4.tcp synco...

linux核心優化引數web伺服器

惆悵啊沒辦法,總監讓優化整個架構的核心引數,沒辦法就到處蒐集了一些整理到下面了。看下面引數我還是建議先看下 減少tcp 連線中的time wait sockets net.ipv4.tcp syncookies 1 表示開啟syn cookies。當出現syn等待佇列溢位時,啟用cookies來處理...

linux伺服器優化

1 使用free命裡檢視記憶體具體使用情況 使用 free m 命裡檢視 free命裡顯示結果,解析如下 total 總物理記憶體 total used free used 已使用記憶體,一般情況這個值會比較大,因為這個值包括了cached 應用程式使用的記憶體 free 完全未被使用的記憶體 sh...