Sysctl是一個容許您改變正在運行中的Linux系統的接口。它包含一些 TCP/IP 堆棧和虛擬內存系統的高級選項, 這可讓有經驗的管理員提升引人注目的系統性能。用sysctl能夠讀取設置超過五百個系統變量。基於這點,sysctl(8) 提供兩個功能:讀取和修改系統設置。html
查看全部可讀變量:node
% sysctl -alinux
讀一個指定的變量,例如 kern.maxproc:web
% sysctl kern.maxproc kern.maxproc: 1044算法
要設置一個指定的變量,直接用 variable=value 這樣的語法:數據庫
# sysctl kern.maxfiles=5000apache
kern.maxfiles: 2088 -> 5000windows
您可使用sysctl修改系統變量,也能夠經過編輯sysctl.conf文件來修改系統變量。sysctl.conf 看起來很像 rc.conf。它用 variable=value 的形式來設定值。指定的值在系統進入多用戶模式以後被設定。並非全部的變量均可以在這個模式下設定。緩存
sysctl 變量的設置一般是字符串、數字或者布爾型。 (布爾型用 1 來表示’yes’,用 0 來表示’no’)。安全
sysctl -w kernel.sysrq=0
sysctl -w kernel.core_uses_pid=1
sysctl -w net.ipv4.conf.default.accept_redirects=0
sysctl -w net.ipv4.conf.default.accept_source_route=0
sysctl -w net.ipv4.conf.default.rp_filter=1
sysctl -w net.ipv4.tcp_syncookies=1
sysctl -w net.ipv4.tcp_max_syn_backlog=2048
sysctl -w net.ipv4.tcp_fin_timeout=30
sysctl -w net.ipv4.tcp_synack_retries=2
sysctl -w net.ipv4.tcp_keepalive_time=3600
sysctl -w net.ipv4.tcp_window_scaling=1
sysctl -w net.ipv4.tcp_sack=1
配置sysctl
編輯此文件:
vi /etc/sysctl.conf
若是該文件爲空,則輸入如下內容,不然請根據狀況本身作調整:
# Controls source route verification
# Default should work for all interfaces
net.ipv4.conf.default.rp_filter = 1
# net.ipv4.conf.all.rp_filter = 1
# net.ipv4.conf.lo.rp_filter = 1
# net.ipv4.conf.eth0.rp_filter = 1
# Disables IP source routing
# Default should work for all interfaces
net.ipv4.conf.default.accept_source_route = 0
# net.ipv4.conf.all.accept_source_route = 0
# net.ipv4.conf.lo.accept_source_route = 0
# net.ipv4.conf.eth0.accept_source_route = 0
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0
# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1
# Increase maximum amount of memory allocated to shm
# Only uncomment if needed!
# kernel.shmmax = 67108864
# Disable ICMP Redirect Acceptance
# Default should work for all interfaces
net.ipv4.conf.default.accept_redirects = 0
# net.ipv4.conf.all.accept_redirects = 0
# net.ipv4.conf.lo.accept_redirects = 0
# net.ipv4.conf.eth0.accept_redirects = 0
# Enable Log Spoofed Packets, Source Routed Packets, Redirect Packets
# Default should work for all interfaces
net.ipv4.conf.default.log_martians = 1
# net.ipv4.conf.all.log_martians = 1
# net.ipv4.conf.lo.log_martians = 1
# net.ipv4.conf.eth0.log_martians = 1
# Decrease the time default value for tcp_fin_timeout connection
net.ipv4.tcp_fin_timeout = 25
# Decrease the time default value for tcp_keepalive_time connection
net.ipv4.tcp_keepalive_time = 1200
# Turn on the tcp_window_scaling
net.ipv4.tcp_window_scaling = 1
# Turn on the tcp_sack
net.ipv4.tcp_sack = 1
# tcp_fack should be on because of sack
net.ipv4.tcp_fack = 1
# Turn on the tcp_timestamps
net.ipv4.tcp_timestamps = 1
# Enable TCP SYN Cookie Protection
net.ipv4.tcp_syncookies = 1
# Enable ignoring broadcasts request
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Enable bad error message Protection
net.ipv4.icmp_ignore_bogus_error_responses = 1
# Make more local ports available
# net.ipv4.ip_local_port_range = 1024 65000
# Set TCP Re-Ordering value in kernel to ‘5′
net.ipv4.tcp_reordering = 5
# Lower syn retry rates
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 3
# Set Max SYN Backlog to ‘2048′
net.ipv4.tcp_max_syn_backlog = 2048
# Various Settings
net.core.netdev_max_backlog = 1024
# Increase the maximum number of skb-heads to be cached
net.core.hot_list_length = 256
# Increase the tcp-time-wait buckets pool size
net.ipv4.tcp_max_tw_buckets = 360000
# This will increase the amount of memory available for socket input/output queues
net.core.rmem_default = 65535
net.core.rmem_max = 8388608
net.ipv4.tcp_rmem = 4096 87380 8388608
net.core.wmem_default = 65535
net.core.wmem_max = 8388608
net.ipv4.tcp_wmem = 4096 65535 8388608
net.ipv4.tcp_mem = 8388608 8388608 8388608
net.core.optmem_max = 40960
若是但願屏蔽別人 ping 你的主機,則加入如下代碼:
# Disable ping requests
net.ipv4.icmp_echo_ignore_all = 1
編輯完成後,請執行如下命令使變更當即生效:
/sbin/sysctl -p
/sbin/sysctl -w net.ipv4.route.flush=1
################### 全部rfc相關的選項都是默認啓用的,所以網上的那些還本身寫rfc支持的均可以扔掉了:) ############################### net.inet.ip.sourceroute=0 net.inet.ip.accept_sourceroute=0 ############################# 經過源路由,攻擊者能夠嘗試到達內部IP地址 --包括RFC1918中的地址,因此 不接受源路由信息包能夠防止你的內部網絡被探測。 ################################# net.inet.tcp.drop_synfin=1 ################################### 安全參數,編譯內核的時候加了options TCP_DROP_SYNFIN才能夠用,能夠阻止某些OS探測。 ################################## kern.maxvnodes=8446 #################http://www.bsdlover.cn######### vnode 是對文件或目錄的一種內部表達。 所以, 增長能夠被操做系統利用的 vnode 數量將下降磁盤的 I/O。 通常而言, 這是由操做系統自行完成的,也不須要加以修改。但在某些時候磁盤 I/O 會成爲瓶頸, 而系統的 vnode 不足, 則這一配置應被增長。此時須要考慮是非活躍和空閒內存的數量。 要查看當前在用的 vnode 數量: # sysctl vfs.numvnodes vfs.numvnodes: 91349 要查看最大可用的 vnode 數量: # sysctl kern.maxvnodes kern.maxvnodes: 100000 若是當前的 vnode 用量接近最大值,則將 kern.maxvnodes 值增大 1,000 多是個好主意。 您應繼續查看 vfs.numvnodes 的數值, 若是它再次攀升到接近最大值的程度, 仍需繼續提升 kern.maxvnodes。 在 top(1) 中顯示的內存用量應有顯著變化, 更多內存會處於活躍 (active) 狀態。 #################################### kern.maxproc: 964 #################http://www.bsdlover.cn######### Maximum number of processes #################################### kern.maxprocperuid: 867 #################http://www.bsdlover.cn######### Maximum processes allowed per userid #################################### 由於個人maxusers設置的是256,20+16*maxusers=4116。 maxprocperuid至少要比maxproc少1,由於init(8) 這個系統程序絕對要保持在運做狀態。 我給它設置的2068。 kern.maxfiles: 1928 #################http://www.bsdlover.cn######### 系統中支持最多同時開啓的文件數量,若是你在運行數據庫或大的很吃描述符的進程,那麼應該設置在20000以上, 好比kde這樣的桌面環境,它同時要用的文件很是多。 通常推薦設置爲32768或者65536。 #################################### kern.argmax: 262144 #################http://www.bsdlover.cn######### maximum number of bytes (or characters) in an argument list. 命令行下最多支持的參數,好比你在用find命令來批量刪除一些文件的時候 find . -name "*.old" -delete,若是文件數超過了這個數字,那麼會提示你數字太多的。 能夠利用find . -name "*.old" -ok rm {} \;來刪除。 默認的參數已經足夠多了,所以不建議再作修改。 #################################### kern.securelevel: -1 #################http://www.bsdlover.cn######### -1:這是系統默認級別,沒有提供任何內核的保護錯誤; 0:基本上做用很少,當你的系統剛啓動就是0級別的,當進入多用戶模式的時候就自動變成1級了。 1:在這個級別上,有以下幾個限制: a. 不能經過kldload或者kldunload加載或者卸載可加載內核模塊; b. 應用程序不能經過/dev/mem或者/dev/kmem直接寫內存; c. 不能直接往已經裝在(mounted)的磁盤寫東西,也就是不能格式化磁盤,可是能夠經過標準的內核接口執行寫操做; d. 不能啓動X-windows,同時不能使用chflags來修改文件屬性; 2:在 1 級別的基礎上還不能寫沒裝載的磁盤,並且不能在1秒以內製造屢次警告,這個是防止DoS控制檯的; 3:在 2 級別的級別上不容許修改IPFW防火牆的規則。 若是你已經裝了防火牆,而且把規則設好了,不輕易改動,那麼建議使用3級別,若是你沒有裝防火牆,並且還準備裝防火牆的話,不建議使用。 咱們這裏推薦使用 2 級別,可以避免比較多對內核攻擊。 #################################### kern.maxfilesperproc: 1735 #################http://www.bsdlover.cn######### 每一個進程可以同時打開的最大文件數量,網上不少資料寫的是32768 除非用異步I/O或大量線程,打開這麼多的文件恐怕是不太正常的。 我我的建議不作修改,保留默認。 #################################### kern.ipc.maxsockbuf: 262144 #################http://www.bsdlover.cn######### 最大的套接字緩衝區,網上有建議設置爲2097152(2M)、8388608(8M)的。 我我的卻是建議不作修改,保持默認的256K便可,緩衝區大了可能形成碎片、阻塞或者丟包。 #################################### kern.ipc.somaxconn: 128 #################http://www.bsdlover.cn######### 最大的等待鏈接完成的套接字隊列大小,即併發鏈接數。 高負載服務器和受到Dos攻擊的系統也許會由於這個隊列被塞滿而不能提供正常服務。 默認爲128,推薦在1024-4096之間,根據機器和實際狀況須要改動,數字越大佔用內存也越大。 #################################### kern.ipc.nmbclusters: 4800 #################http://www.bsdlover.cn######### 這個值用來調整系統在開機後所要分配給網絡 mbufs 的 cluster 數量, 因爲每一個 cluster 大小爲 2K,因此當這個值爲 1024 時,也是會用到 2MB 的核心內存空間。 假設咱們的網頁同時約有 1000 個聯機,而 TCP 傳送及接收的暫存區大小都是 16K, 則最糟的狀況下,咱們會須要 (16K+16K) * 1024,也就是 32MB 的空間, 然而所需的 mbufs 大概是這個空間的二倍,也就是 64MB,因此所需的 cluster 數量爲 64MB/2K,也就是 32768。 對於內存有限的機器,建議值是 1024 到 4096 之間,而當擁有海量存儲器空間時,咱們能夠將它設定爲 4096 到 32768 之間。 咱們可使用 netstat 這個指令並加上參數 -m 來查看目前所使用的 mbufs 數量。 要修改這個值必須在一開機就修改,因此只能在 /boot/loader.conf 中加入修改的設定 kern.ipc.nmbclusters=32768 #################################### kern.ipc.shmmax: 33554432 #################http://www.bsdlover.cn######### 共享內存和信號燈("System VIPC")若是這些太小的話,有些大型的軟件將沒法啓動 安裝xine和mplayer提示的設置爲67108864,即64M, 若是內存多的話,能夠設置爲134217728,即128M #################################### kern.ipc.shmall: 8192 #################http://www.bsdlover.cn######### 共享內存和信號燈("System VIPC")若是這些太小的話,有些大型的軟件將沒法啓動 安裝xine和mplayer提示的設置爲32768 #################################### kern.ipc.shm_use_phys: 0 #################http://www.bsdlover.cn######### 若是咱們將它設成 1,則全部 System V 共享內存 (share memory,一種程序間溝通的方式)部份都會被留在實體的內存 (physical memory) 中,而不會被放到硬盤上的 swap 空間。咱們知道物理內存的存取速度比硬盤快許多,而當物理內存空間不足時, 部份數據會被放到虛擬的內存上,從物理內存和虛擬內存之間移轉的動做就叫做 swap。若是時常作 swap 的動做, 則須要一直對硬盤做 I/O,速度會很慢。所以,若是咱們有大量的程序 (數百個) 須要共同分享一個小的共享內存空間, 或者是共享內存空間很大時,咱們能夠將這個值打開。 這一項,我我的建議不作修改,除非你的內存很是大。 #################################### kern.ipc.shm_allow_removed: 0 #################http://www.bsdlover.cn######### 共享內存是否容許移除?這項彷佛是在fb下裝vmware須要設置爲1的,不然會有加載SVGA出錯的提示 做爲服務器,這項不動也罷。 #################################### kern.ipc.numopensockets: 12 #################http://www.bsdlover.cn######### 已經開啓的socket數目,能夠在最繁忙的時候看看它是多少,而後就能夠知道maxsockets應該設置成多少了。 #################################### kern.ipc.maxsockets: 1928 #################http://www.bsdlover.cn######### 這是用來設定系統最大能夠開啓的 socket 數目。若是您的服務器會提供大量的 FTP 服務, 並且常快速的傳輸一些小檔案,您也許會發現常傳輸到一半就中斷。由於 FTP 在傳輸檔案時, 每個檔案都必須開啓一個 socket 來傳輸,但關閉 socket 須要一段時間,若是傳輸速度很快, 而檔案又多,則同一時間所開啓的 socket 會超過本來系統所許可的值,這時咱們就必須把這個值調大一點。 除了 FTP 外,也許有其它網絡程序也會有這種問題。 然而,這個值必須在系統一開機就設定好,因此若是要修改這項設定,咱們必須修改 /boot/loader.conf 才行 kern.ipc.maxsockets="16424" #################################### kern.ipc.nsfbufs: 1456 #################http://www.bsdlover.cn######### 常用 sendfile(2) 系統調用的繁忙的服務器, 有必要經過 NSFBUFS 內核選項或者在 /boot/loader.conf (查看 loader(8) 以得到更多細節) 中設置它的值來調節 sendfile(2) 緩存數量。這個參數須要調節的普通緣由是在進程中看到 sfbufa 狀態。sysctl kern.ipc.nsfbufs 變量在內核配置變量中是隻讀的。 這個參數是由 kern.maxusers 決定的,然而它可能有必要所以而調整。 在/boot/loader.conf里加入 kern.ipc.nsfbufs="2496" #################################### kern.maxusers: 59 #################http://www.bsdlover.cn######### maxusers 的值決定了處理程序所允許的最大值,20+16*maxusers 就是你將獲得的所允許處理程序。 系統一開機就必需要有 18 個處理程序 (process),即使是簡單的執行指令 man 又會產生 9 個 process, 因此將這個值設爲 64 應該是一個合理的數目。 若是你的系統會出現 proc table full 的訊息的話,能夠就把它設大一點,例如 128。 除非您的系統會須要同時開啓不少檔案,不然請不要設定超過 256。 能夠在 /boot/loader.conf 中加入該選項的設定, kern.maxusers=256 #################################### kern.coredump: 1 #################http://www.bsdlover.cn######### 若是設置爲0,則程序異常退出時不會生成core文件,做爲服務器,不建議這樣。 #################################### kern.corefile: %N.core #################http://www.bsdlover.cn######### 可設置爲kern.corefile="/data/coredump/%U-%P-%N.core" 其中 %U是UID,%P是進程ID,%N是進程名,固然/data/coredump必須是一個實際存在的目錄 #################################### vm.swap_idle_enabled: 0 vm.swap_idle_threshold1: 2 vm.swap_idle_threshold2: 10 ######################### 在有不少用戶進入、離開系統和有不少空閒進程的大的多用戶系統中頗有用。 可讓進程更快地進入內存,但它會吃掉更多的交換和磁盤帶寬。 系統默認的頁面調度算法已經很好了,最好不要更改。 ######################## vfs.ufs.dirhash_maxmem: 2097152 ######################### 默認的dirhash最大內存,默認2M 增長它有助於改善單目錄超過100K個文件時的反覆讀目錄時的性能 建議修改成33554432(32M) ############################# vfs.vmiodirenable: 1 ################# 這個變量控制目錄是否被系統緩存。大多數目錄是小的,在系統中只使用單個片段(典型的是1K)而且在緩存中使用的更小 (典型的是512字節)。 當這個變量設置爲關閉 (0) 時,緩存器僅僅緩存固定數量的目錄,即便您有很大的內存。 而將其開啓 (設置爲1) 時,則容許緩存器用 VM 頁面緩存來緩存這些目錄,讓全部可用內存來緩存目錄。 不利的是最小的用來緩存目錄的核心內存是大於 512 字節的物理頁面大小(一般是 4k)。 咱們建議若是您在運行任何操做大量文件的程序時保持這個選項打開的默認值。 這些服務包括 web 緩存,大容量郵件系統和新聞系統。 儘管可能會浪費一些內存,但打開這個選項一般不會下降性能。但仍是應該檢驗一下。 #################### vfs.hirunningspace: 1048576 ############################ 這個值決定了系統能夠將多少數據放在寫入儲存設備的等候區。一般使用默認值便可, 但當咱們有多顆硬盤時,咱們能夠將它調大爲 4MB 或 5MB。 注意這個設置成很高的值(超過緩存器的寫極限)會致使壞的性能。 不要盲目的把它設置過高!高的數值會致使同時發生的讀操做的遲延。 ############################# vfs.write_behind: 1 ######################### 這個選項預設爲 1,也就是打開的狀態。在打開時,在系統須要寫入數據在硬盤或其它儲存設備上時, 它會等到收集了一個 cluster 單位的數據後再一次寫入,不然會在一個暫存區空間有寫入需求時就當即寫到硬盤上。 這個選項打開時,對於一個大的連續的文件寫入速度很是有幫助。但若是您遇到有不少行程延滯在等待寫入動做時,您可能必須關閉這個功能。 ############################ net.local.stream.sendspace: 8192 ################################## 本地套接字鏈接的數據發送空間 建議設置爲65536 ################################### net.local.stream.recvspace: 8192 ################################## 本地套接字鏈接的數據接收空間 建議設置爲65536 ################################### net.inet.ip.portrange.lowfirst: 1023 net.inet.ip.portrange.lowlast: 600 net.inet.ip.portrange.first: 49152 net.inet.ip.portrange.last: 65535 net.inet.ip.portrange.hifirst: 49152 net.inet.ip.portrange.hilast: 65535 ################### 以上六項是用來控制TCP及UDP所使用的port範圍,這個範圍被分紅三個部份,低範圍、預設範圍、及高範圍。 這些是你的服務器主動發起鏈接時的臨時端口的範圍,預設的已經1萬多了,通常的應用就足夠了。 若是是比較忙碌的FTP server,通常也不會同時提供給1萬多人訪問的, 固然若是很不幸,你的服務器就要提供不少,那麼能夠修改first的值,好比直接用1024開始 ######################### net.inet.ip.redirect: 1 ######################### 設置爲0,屏蔽ip重定向功能 ########################### net.inet.ip.rtexpire: 3600 net.inet.ip.rtminexpire: 10 ######################## 不少apache產生的CLOSE_WAIT狀態,這種狀態是等待客戶端關閉,可是客戶端那邊並無正常的關閉,因而留下不少這樣的東東。 建議都修改成2 ######################### net.inet.ip.intr_queue_maxlen: 50 ######################## Maximum size of the IP input queue,若是下面的net.inet.ip.intr_queue_drops一直在增長, 那就說明你的隊列空間不足了,那麼能夠考慮增長該值。 ########################## net.inet.ip.intr_queue_drops: 0 #################### Number of packets dropped from the IP input queue,若是你sysctl它一直在增長, 那麼增長net.inet.ip.intr_queue_maxlen的值。 ####################### net.inet.ip.fastforwarding: 0 ############################# 若是打開的話每一個目標地址一次轉發成功之後它的數據都將被記錄進路由表和arp數據表,節約路由的計算時間 但會須要大量的內核內存空間來保存路由表。 若是內存夠大,打開吧,呵呵 ############################# net.inet.ip.random_id: 0 ##################### 默認狀況下,ip包的id號是連續的,而這些可能會被攻擊者利用,好比能夠知道你nat後面帶了多少主機。 若是設置成1,則這個id號是隨機的,嘿嘿。 ##################### net.inet.icmp.maskrepl: 0 ############################ 防止廣播風暴,關閉其餘廣播探測的響應。默認便是,無須修改。 ############################### net.inet.icmp.icmplim: 200 ############################## 限制系統發送ICMP速率,改成100吧,或者保留也可,並不會給系統帶來太大的壓力。 ########################### net.inet.icmp.icmplim_output: 1 ################################### 若是設置成0,就不會看到提示說Limiting icmp unreach response from 214 to 200 packets per second 等等了不過禁止輸出容易讓咱們忽視攻擊的存在。這個本身看着辦吧。 ###################################### net.inet.icmp.drop_redirect: 0 net.inet.icmp.log_redirect: 0 ################################### 設置爲1,屏蔽ICMP重定向功能 ################################### net.inet.icmp.bmcastecho: 0 ############################ 防止廣播風暴,關閉廣播ECHO響應,默認便是,無須修改。 ############################### net.inet.tcp.mssdflt: 512 net.inet.tcp.minmss: 216 ############################### 數據包數據段最小值,以上兩個選項最好不動!或者只修改mssdflt爲1460,minmss不動。 緣由詳見http://www.bsdlover.cn/security/2007/1211/article_4.html ############################# net.inet.tcp.keepidle: 7200000 ###################### TCP的套接字的空閒時間,默認時間太長,能夠改成600000(10分鐘)。 ########################## net.inet.tcp.sendspace: 32768 #################http://www.bsdlover.cn######### 最大的待發送TCP數據緩衝區空間,應用程序將數據放到這裏就認爲發送成功了,系統TCP堆棧保證數據的正常發送。 #################################### net.inet.tcp.recvspace: 65536 ################################### 最大的接受TCP緩衝區空間,系統從這裏將數據分發給不一樣的套接字,增大該空間可提升系統瞬間接受數據的能力以提升性能。 ################################### 這二個選項分別控制了網絡 TCP 聯機所使用的傳送及接收暫存區的大小。預設的傳送暫存區爲 32K,而接收暫存區爲 64K。 若是須要加速 TCP 的傳輸,能夠將這二個值調大一點,但缺點是太大的值會形成系統核心佔用太多的內存。 若是咱們的機器會同時服務數百或數千個網絡聯機,那麼這二個選項最好維持默認值,不然會形成系統核心內存不足。 但若是咱們使用的是 gigabite 的網絡,將這二個值調大會有明顯效能的提高。 傳送及接收的暫存區大小能夠分開調整, 例如,假設咱們的系統主要作爲網頁服務器,咱們能夠將接收的暫存區調小一點,並將傳送的暫存區調大,如此一來,咱們就能夠避免佔去太多的核心內存空間。 net.inet.udp.maxdgram: 9216 ######################### 最大的發送UDP數據緩衝區大小,網上的資料大多都是65536,我我的認爲沒多大必要, 若是要調整,能夠試試24576。 ############################## net.inet.udp.recvspace: 42080 ################## 最大的接受UDP緩衝區大小,網上的資料大多都是65536,我我的認爲沒多大必要, 若是要調整,能夠試試49152。 ####################### 以上四項配置一般不會致使問題,通常說來網絡流量是不對稱的,所以應該根據實際狀況調整,並觀察其效果。 若是咱們將傳送或接收的暫存區設爲大於 65535,除非服務器自己及客戶端所使用的操做系統都支持 TCP 協議的 windows scaling extension (請參考 RFC 1323 文件)。FreeBSD默認已支持 rfs1323 (即 sysctl 的 net.inet.tcp.rfc1323 選項)。 ################################################### net.inet.tcp.log_in_vain: 0 ################## 記錄下任何TCP鏈接,這個通常狀況下不該該更改。 #################### net.inet.tcp.blackhole: 0 ################################## 建議設置爲2,接收到一個已經關閉的端口發來的全部包,直接drop,若是設置爲1則是隻針對TCP包 ##################################### net.inet.tcp.delayed_ack: 1 ########################### 當一臺計算機發起TCP鏈接請求時,系統會迴應ACK應答數據包。 該選項設置是否延遲ACK應答數據包,把它和包含數據的數據包一塊兒發送。 在高速網絡和低負載的狀況下會略微提升性能,但在網絡鏈接較差的時候, 對方計算機得不到應答會持續發起鏈接請求,反而會讓網絡更加擁堵,下降性能。 所以這個值我建議您看狀況而定,若是您的網速不是問題,能夠將封包數量減小一半 若是網絡不是特別好,那麼就設置爲0,有請求就先回應,這樣其實浪費的網通、電信的帶寬速率而不是你的處理時間:) ############################ net.inet.tcp.inflight.enable: 1 net.inet.tcp.inflight.debug: 0 net.inet.tcp.inflight.rttthresh: 10 net.inet.tcp.inflight.min: 6144 net.inet.tcp.inflight.max: 1073725440 net.inet.tcp.inflight.stab: 20 ########################### 限制 TCP 帶寬延遲積和 NetBSD 的 TCP/Vegas 相似。 它能夠經過將 sysctl 變量 net.inet.tcp.inflight.enable 設置成 1 來啓用。 系統將嘗試計算每個鏈接的帶寬延遲積,並將排隊的數據量限制在剛好能保持最優吞吐量的水平上。 這一特性在您的服務器同時向使用普通調制解調器,千兆以太網,乃至更高速度的光與網絡鏈接 (或其餘帶寬延遲積很大的鏈接) 的時候尤其重要, 特別是當您同時使用滑動窗縮放,或使用了大的發送窗口的時候。 若是啓用了這個選項,您還應該把 net.inet.tcp.inflight.debug 設置爲 0 (禁用調試), 對於生產環境而言, 將 net.inet.tcp.inflight.min 設置成至少 6144 會頗有好處。 然而, 須要注意的是,這個值設置過大事實上至關於禁用了鏈接帶寬延遲積限制功能。 這個限制特性減小了在路由和交換包隊列的堵塞數據數量,也減小了在本地主機接口隊列阻塞的數據的數量。 在少數的等候隊列中、交互式鏈接,尤爲是經過慢速的調制解調器,也能用低的 往返時間操做。 可是,注意這隻影響到數據發送 (上載/服務端)。對數據接收(下載)沒有效果。 調整 net.inet.tcp.inflight.stab 是 不 推薦的。 這個參數的默認值是 20,表示把 2 個最大包加入到帶寬延遲積窗口的計算中。 額外的窗口似的算法更爲穩定,並改善對於多變網絡環境的相應能力, 但也會致使慢速鏈接下的 ping 時間增加 (儘管仍是會比沒有使用 inflight 算法低許多)。 對於這些情形, 您可能會但願把這個參數減小到 15, 10, 或 5; 並可能所以而不得不減小 net.inet.tcp.inflight.min (好比說, 3500) 來獲得但願的效果。 減小這些參數的值, 只應做爲最後不得已時的手段來使用。 ############################ net.inet.tcp.syncookies: 1 ######################### SYN cookies是一種用於經過選擇加密的初始化TCP序列號,能夠對迴應的包作驗證來下降SYN'洪水'攻擊的影響的技術。 默認便是,不需修改 ######################## net.inet.tcp.msl: 30000 ####################### 這個值網上不少文章都推薦的7500, 還能夠改的更小一些(如2000或2500),這樣能夠加快不正常鏈接的釋放過程(三次握手2秒、FIN_WAIT4秒)。 ######################### net.inet.tcp.always_keepalive: 1 ########################### 幫助系統清除沒有正常斷開的TCP鏈接,這增長了一些網絡帶寬的使用,可是一些死掉的鏈接最終能被識別並清除。 死的TCP鏈接是被撥號用戶存取的系統的一個特別的問題,由於用戶常常斷開modem而不正確的關閉活動的鏈接。 ############################# net.inet.udp.checksum: 1 ######################### 防止不正確的udp包的攻擊,默認便是,不需修改 ############################## net.inet.udp.log_in_vain: 0 ####################### 記錄下任何UDP鏈接,這個通常狀況下不該該修改。 ####################### net.inet.udp.blackhole: 0 #################### 建議設置爲1,接收到一個已經關閉的端口發來的全部UDP包直接drop ####################### net.inet.raw.maxdgram: 8192 ######################### Maximum outgoing raw IP datagram size 不少文章建議設置爲65536,好像沒多大必要。 ###################################### net.inet.raw.recvspace: 8192 ###################### Maximum incoming raw IP datagram size 不少文章建議設置爲65536,好像沒多大必要。 ####################### net.link.ether.inet.max_age: 1200 #################### 調整ARP清理的時間,經過向IP路由緩衝填充僞造的ARP條目可讓惡意用戶產生資源耗竭和性能減低攻擊。 這項彷佛你們都未作改動,我建議不動或者稍微減小,好比300(HP-UX默認的5分鐘) ####################### net.inet6.ip6.redirect: 1 ############################### 設置爲0,屏蔽ipv6重定向功能 ########################### net.isr.direct: 0 #################http://www.bsdlover.cn######### 全部MPSAFE的網絡ISR對包作當即響應,提升網卡性能,設置爲1。 #################################### hw.ata.wc: 1 ##################### 這個選項用來打開 IDE 硬盤快取。當打開時,若是有數據要寫入硬盤時,硬盤會僞裝已完成寫入,並將數據快取起來。 這種做法會加速硬盤的存取速度,但當系統異常關機時,比較容易形成數據遺失。 不過因爲關閉這個功能所帶來的速度差別實在太大,建議仍是保留本來打開的狀態吧,不作修改。 ################### security.bsd.see_other_uids: 1 security.bsd.see_other_gids: 1 ##################### 不容許用戶看到其餘用戶的進程,所以應該改爲0, #######################