優化Linux內核參數/etc/sysctl.conf sysctl 《高性能Linux服務器構建實戰:運維監控、性能調優與集羣應用》緩存
http://book.51cto.com/art/201202/314880.htm性能優化
2.6 Varnish優化
Varnish是否能穩定、快速地運行,與Linux自己的優化及Varnish自身參數的設置有很大關係。在安裝配置完Varnish後,還必須從操做系統和Varnish配置參數兩個方面對Varnish服務器進行性能優化,從而最大限度地發揮Varnish的性能優點。
2.6.1 優化Linux內核參數
內核參數是用戶和系統內核之間交互的一個接口,經過這個接口,用戶能夠在系統運行的同時動態更新內核配置,而這些內核參數是經過Linux Proc文件系統存在的。所以,能夠經過調整Proc文件系統達到優化Linux性能的目的。
如下參數是官方給出的一個配置:
net.ipv4.ip_local_port_range = 1024 65536
net.core.rmem_max=16777216
net.core.wmem_max=16777216
net.ipv4.tcp_rmem=4096 87380 16777216
net.ipv4.tcp_wmem=4096 65536 16777216
net.ipv4.tcp_fin_timeout = 30
net.core.netdev_max_backlog = 30000
net.ipv4.tcp_no_metrics_save=1
net.core.somaxconn = 262144
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
上面每一個參數的含義以下:
net.ipv4.ip_local_port_range:用來指定外部鏈接的端口範圍,默認是32 768到61 000,這裏設置爲1024到65 536。
net.core.rmem_max:指定接收套接字緩衝區大小的最大值,單位是字節。
net.core.wmem_max:指定發送套接字緩衝區大小的最大值,單位是字節。
net.ipv4.tcp_rmem:此參數與net.ipv4.tcp_wmem都是用來優化TCP接收/發送緩衝區的,包含3個整數值,分別是min、default、max。
對於tcp_rmem,min表示爲TCP socket預留的用於接收緩存的最小內存數量,default表示爲TCP socket預留的用於接收緩存的默認的內存值,max表示用於TCP socket接收緩存的內存最大值。
對於tcp_wmem,min表示爲TCP socket預留的用於發送緩存的內存最小值,default表示爲TCP socket預留的用於發送緩存的默認的內存值,max表示用於TCP socket發送緩存的內存最大值。
net.ipv4.tcp_fin_timeout:此參數用於減小處於FIN-WAIT-2鏈接狀態的時間,使系統能夠處理更多的鏈接。此參數值爲整數,單位爲秒。
例如,在一個tcp會話過程當中,在會話結束時,A首先向B發送一個fin包,在得到B的ack確認包後,A就進入FIN-WAIT-2狀態等待B的fin包,而後給B發ack確認包。net.ipv4.tcp_fin_timeout參數用來設置A進入FIN-WAIT-2狀態等待對方fin包的超時時間。若是時間到了仍未收到對方的fin包就主動釋放該會話。
net.core.netdev_max_backlog:該參數表示當在每一個網絡接口接收數據包的速率比內核處理這些包的速率快時,容許發送到隊列的數據包的最大數量。
net.ipv4.tcp_syncookie:表示是否打開SYN Cookie。tcp_syncookies是一個開關,該參數的功能有助於保護服務器免受SyncFlood攻擊。默認值爲0,這裏設置爲1。
net.ipv4.tcp_max_orphans:表示系統中最多有多少TCP套接字不被關聯到任何一個用戶文件句柄上。若是超過這裏設置的數字,鏈接就會復位並輸出警告信息。這個限制僅僅是爲了防止簡單的DoS攻擊。此值不能過小。這裏設置爲262 144。
net.ipv4.tcp_max_syn_backlog:表示SYN隊列的長度,預設爲1024,這裏設置隊列長度爲262 144,以容納更多的等待鏈接。
net.ipv4.tcp_synack_retries:這個參數用於設置內核放棄鏈接以前發送SYN+ACK包的數量。
net.ipv4.tcp_syn_retries:此參數表示在內核放棄創建鏈接以前發送SYN包的數量。
將以上內容添加到/etc/sysctl.conf文件中,而後執行以下命令,使設置生效。
[root@varnish-server ~]#sysctl -p 服務器