Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Linux系統教程 >> Linux系統常見問題解答 >> Linux 服務器網絡有關的內核參數

Linux 服務器網絡有關的內核參數

日期:2017/1/20 17:43:05      編輯:Linux系統常見問題解答

  幾乎所有的內核模塊,包括內核核心模塊和驅動程序,都在/proc/sys 文件系統下提供了某些配置文件以提供用戶調整模塊的屬性和行為。通常一個配置文件對應一個內核參數,文件名就是參數的名字,文件的內容是參數的值。 我們可以通過命令sysctl -a 查看所有這些內核參數。下面說明與網絡編程關系較為緊密的部分內核參數。

  一、 / proc/sys/fs 目錄下的部分文件

  /proc/sys/fs 目錄下的內核參數都與文件系統有關。對於服務器程序來說,其中最重要的是如下的兩個參數:

  /proc/sys/fs/fs/file-max,系統級文件描述符數限制。 直接修改這個參數和《linux 最大文件描述符》中修改方法有相同的效果(不過這些都是臨時修改)。一般修改/proc/sys/fs/file-max 後,應用程序需要把/proc/sys/fs/inode-max 設置為/proc/sys/fs/fs/file-max 值的3-4倍,否則可能導致i 節點數不夠用。

  查看一下系統對fs.file-max的說明:

  /proc/sys/fs/file-max

  This file defines a system-wide limit on the number of open files for all processes. (See also setrlimit(2), which can be used by a process to set the per-process limit,

  RLIMIT_NOFILE, on the number of files it may open.) If you get lots of error messages about running out of file handles, try increasing this value:

  echo 100000 > /proc/sys/fs/file-max

  The kernel constant NR_OPEN imposes an upper limit on the value that may be placed in file-max.

  If you increase /proc/sys/fs/file-max, be sure to increase /proc/sys/fs/inode-max to 3-4 times the new value of /proc/sys/fs/file-max, or you will run out of inodes.

  /proc/sys/fs/epoll/max_user_watches,一個用戶能夠往epoll 內核事件表注冊的事件總量。 它是指該用戶打開的所有epoll實例總共能監聽的事件數目,而不是單個epoll實例能監聽的事件數目。往epoll內核事件表中注冊一個事件,在32位系統上大概消耗90字節的內核空間,在64位系統上則消耗160字節的內核空間。所以,這個內核參數限制了epoll使用的內核內存總量。

  二、 /proc/sys/net 目錄下的部分文件

  內核中網絡模塊的相關參數都位於/proc/sys/net 目錄下,其中和TCP/IP 協議相關的參數主要位於如下三個目錄中:core 、ipv4 、ipv6 .

  /proc/sys/net/core/somaxconn,指定listen監聽隊列裡,能夠建立完整連接從而進入ESTABLISHED 狀態的socket 的最大數目。

  /proc/sys/net/ipv4/tcp_max_syn_backlog,指定listen監聽隊列裡,能夠轉移至ESTABLISHED或者SYN_RCVD狀態的socket的最大數目。

  /proc/sys/net/ipv4/tcp_wmem,它包含了3個值,分別指定一個socket的TCP寫緩存區的最小值、默認值和最大值。

  /proc/sys/net/ipv4/tcp_rmem,它包含了3個值,分別指定一個socket的TCP讀緩存區的最小值、默認值和最大值。

  /proc/sys/net/ipv4/tcp_syncookies,指定是否打開TCP同步標簽。同步標簽通過啟動cookie 來防止一個監聽socket因不停的重復接收來自同一個地址的連接請求(同步報文段),而導致listen監聽隊列溢出(所謂的SYN 風暴)。

  除了通過直接修改文件的方式來修改這些系統參數外,我們也可以使用sysctl 命令來修改它們。這兩種修改方式都是臨時的。永久的修改方式是在/etc/sysctl.conf 文件中加入相應網絡參數及其數值,並執行sysctl -p使之生效,就像修改系統最大允許打開的文件描述符數那樣。

Copyright © Windows教程網 All Rights Reserved