Centos內核參數


內核參數

 

abi.vsyscall32 = 1  在2.6.25版本以后的x86-64內核中,默認啟用了VDSO32。

虛擬動態共享對象 http://man7.org/linux/man-pages/man7/vdso.7.html

1.通常情況下,每次請求會通過用戶態調用內核態,從而發生一次系統調用。

2.內核態將動態共享對象映射至於用戶態,用戶態請求直接調用,從而減少系統調用,加快系統處理效率。

debug.exception-trace = 1

debug.kprobes-optimization = 1

dev.cdrom.autoclose = 1

dev.cdrom.autoeject = 0

dev.cdrom.check_media = 0

dev.cdrom.debug = 0

dev.cdrom.info = CD-ROM information, Id: cdrom.c 3.20 2003/12/17

dev.cdrom.info =

dev.cdrom.info = drive name:

dev.cdrom.info = drive speed:

dev.cdrom.info = drive # of slots:

dev.cdrom.info = Can close tray:

dev.cdrom.info = Can open tray:

dev.cdrom.info = Can lock tray:

dev.cdrom.info = Can change speed:

dev.cdrom.info = Can select disk:

dev.cdrom.info = Can read multisession:

dev.cdrom.info = Can read MCN:

dev.cdrom.info = Reports media changed:

dev.cdrom.info = Can play audio:

dev.cdrom.info = Can write CD-R:

dev.cdrom.info = Can write CD-RW:

dev.cdrom.info = Can read DVD:

dev.cdrom.info = Can write DVD-R:

dev.cdrom.info = Can write DVD-RAM:

dev.cdrom.info = Can read MRW:

dev.cdrom.info = Can write MRW:

dev.cdrom.info = Can write RAM:

dev.cdrom.info =

dev.cdrom.info =

dev.cdrom.lock = 0

dev.hpet.max-user-freq = 64

dev.mac_hid.mouse_button2_keycode = 97

dev.mac_hid.mouse_button3_keycode = 100

dev.mac_hid.mouse_button_emulation = 0

dev.parport.default.spintime = 500

dev.parport.default.timeslice = 200

dev.raid.speed_limit_max = 200000

dev.raid.speed_limit_min = 1000

dev.scsi.logging_level = 0

 

##fs.aio-max-nr = 65536   //指的是可以同時擁有異步I/O請求的數目,Oracle推薦的值為1048576(1024×1024),也就是1024Kb個。

##fs.aio-nr = 0  //是在上指定的事件數的運行總計io_setup系統調用所有當前活動的aio上下文。如果aio-nr達到aio-max-nr,則io_setup將失敗,並返回EAGAIN。

注意,提高aio-max-nr不會導致預分配或重新調整大小的任何內核數據結構。aio-nr顯示當前系統范圍的異步io請求數。aio-max-nr允許您更改aio-nr可以增長到的最大值。

fs.dentry-state = 449936 438574 45 0 0 0  //保存目錄緩存的狀態,保存有六個值,只有前三個有效 

nr_dentry:當前已經分配的目錄項數量 

nr_unused:還沒有使用的目錄項數量 

age_limit:當內存緊缺時,延遲多少秒后會回收目錄項所占內存

fs.dir-notify-enable = 1  //設置是否啟用dnotify,已被inotify取代,因為dnotify 需要您為每個打算監控是否發生改變的目錄打開一個文件描述符。

當同時監控多個目錄時,這會消耗大量的資源,因為有可能達到每個進程的文件描述符限制。並且不允許卸載(unmount)支持的設備 0:不使用 1:使用

##fs.epoll.max_user_watches = 415416  //IO復用epoll監聽文件句柄的數量最大值

##fs.file-max = 1000000  /系統所有進程一共可以打開的文件數量 64bytes  cat /proc/sys/fs/file-nr在'高負荷'的情況,看看有多少文件描述符都在使用。lsof

fs.file-nr = 1600 0 1000000  //此文件中保存了三個值,分別是:系統中已分配的文件句柄數量,已分配但沒有使用的文件句柄數量,最大的文件句柄號

##fs.inode-nr = 536478 182309 //此文件保存了兩個值,是:已分配inode數,空閑inode數

fs.inode-state = 536478 182309 0 0 0 0 0  //此文件保存了三個值,前兩個分別表示 已分配inode數和空閑inode數。

第三個是已超出系統最大inode值的數量,此時系統需要清除排查inode列表

fs.inotify.max_queued_events = 327679  //inotify用於監控文件系統事件,該文件中的值為調用inotify_init函數時分配給inotify隊列的事件數目的最大值,

超出這個值得事件被丟棄,但會觸發IN_Q_OVERFLOW事件文件系統變化越頻繁,這個值就應該越大 

fs.inotify.max_user_instances = 128  //設置每個用戶可以運行的inotifywait或inotifywatch命令的進程數

fs.inotify.max_user_watches = 10000000  //設置inotifywait或inotifywatch命令可以監視的文件數量(單進程)

fs.lease-break-time = 45 //當進程嘗試打開一個被租借鎖保護的文件時,該進程會被阻塞,同時,在一定時間內擁有該文件租借鎖的進程會收到一個信號。收到信號之后,擁有該文件租借鎖的進程會首先更新文件,從而保證了文件內容的一致性,接着,該進程釋放這個租借鎖。如果擁有租借鎖的進程在一定的時間間隔內沒有完成工作,內核就會自動刪除這個租借鎖或者將該鎖進行降級,從而允許被阻塞的進程繼續工作。此保存租借鎖的超時時間(以秒為單位)

fs.leases-enable = 1  //是否啟用文件的租借鎖 1:啟用 0:不啟用

fs.mqueue.msg_default = 10  //POSIX的消息隊列此文件保存一個消息隊列中消息數量的默認值,如果此值超過msg_max,則會被設置為msg_max

fs.mqueue.msg_max = 10  //一個消息隊列的最大消息數

fs.mqueue.msgsize_default = 8192//消息隊列中一個消息的默認大小(以字節為單位)

fs.mqueue.msgsize_max = 8192  //消息隊列中一個消息的最大大小(以字節為單位)

fs.mqueue.queues_max = 256  //系統中允許的消息隊列的最大數量

fs.nr_open = 1048576  //一個進程最多同時打開的文件句柄數量

fs.overflowgid = 65534 //Linux的GID為32位,但有些文件系統只支持16位的GID,此時若進行寫操作會出錯;當GID超過65535時會自動被轉換為一個固定值,這個固定值保存在這個文件中

fs.overflowuid = 65534 //Linux的UID為32位,但有些文件系統只支持16位的UID,此時若進行寫操作會出錯;當UID超過65535時會自動被轉換為一個固定值,這個固定值保存在這個文件中

fs.pipe-max-size = 1048576  //此文件限制非特權程序使用pipe時的緩存最大大小(以字節為單位,最小設置為4096)

fs.protected_hardlinks = 1  //用於限制普通用戶建立硬鏈接 0:不限制用戶建立硬鏈接  1:限制,如果文件不屬於用戶,或者用戶對此用戶沒有讀寫權限,則不能建立硬鏈接

fs.protected_symlinks = 1  //用於限制普通用戶建立軟鏈接 

0:不限制用戶建立軟鏈接 

1:限制,允許用戶建立軟連接的情況是 軟連接所在目錄是全局可讀寫目錄或者軟連接的uid與跟從者的uid匹配,又或者目錄所有者與軟連接所有者匹配

 

fs.quota.allocated_dquots = 0

fs.quota.cache_hits = 0

fs.quota.drops = 0

fs.quota.free_dquots = 0

fs.quota.lookups = 0

fs.quota.reads = 0

fs.quota.syncs = 6

fs.quota.writes = 0

fs.suid_dumpable = 2

fs.xfs.age_buffer_centisecs = 1500

fs.xfs.error_level = 3

fs.xfs.filestream_centisecs = 3000

fs.xfs.inherit_noatime = 1

fs.xfs.inherit_nodefrag = 1

fs.xfs.inherit_nodump = 1

fs.xfs.inherit_nosymlinks = 0

fs.xfs.inherit_sync = 1

fs.xfs.irix_sgid_inherit = 0

fs.xfs.irix_symlink_mode = 0

fs.xfs.panic_mask = 0

fs.xfs.rotorstep = 1

fs.xfs.speculative_prealloc_lifetime = 300

fs.xfs.stats_clear = 0

fs.xfs.xfsbufd_centisecs = 100

fs.xfs.xfssyncd_centisecs = 3000

 

 

##內核

kernel.acct = 4 2 30 acct功能用於系統記錄進程信息,正常結束的進程都會在該文件尾添加對應的信息。異常結束是指重啟或其它致命的系統問題,不能夠記錄永不停止的進程。該設置需要配置三個值,分別是: 

1.如果文件系統可用空間低於這個百分比值,則停止記錄進程信息。 

2.如果文件系統可用空間高於這個百分比值,則開始記錄進程信息。 

3.檢查上面兩個值的頻率(以秒為單位)。

kernel.acpi_video_flags = 0

kernel.auto_msgmni = 1   //系統自動設置同時運行的消息隊列個數。 0:不自動 1:自動

kernel.blk_iopoll = 1

kernel.bootloader_type = 114

kernel.bootloader_version = 2

sysctl: permission denied on key 'kernel.cad_pid'

kernel.cap_last_cap = 36  //系統capabilities最高支持的權限等級。詳見:http://www.cnblogs.com/iamfy/archive/2012/09/20/2694977.html

kernel.compat-log = 1

kernel.core_pattern = |/usr/share/apport/apport %p %s %c %P  //設置core文件保存位置或文件名,只有文件名時,則保存在應用程序運行的目錄下

kernel.core_pipe_limit = 0   //定義了可以有多少個並發的崩潰程序可以通過管道模式傳遞給指定的core信息收集程序。如果超過了指定數,則后續的程序將不會處理,

只在內核日志中做記錄。0是個特殊的值,當設置為0時,不限制並行捕捉崩潰的進程,但不會等待用戶程序搜集完畢方才回收/proc/pid目錄(就是說,崩潰程序的相關信息可能隨時被回收,搜集的信息可能不全)。

kernel.core_uses_pid = 1   //Core文件的文件名是否添加應用程序pid做為擴展 0:不添加 1:添加

kernel.ctrl-alt-del = 0   //該值控制系統在接收到 ctrl+alt+delete 按鍵組合時如何反應: 

1:不捕獲ctrl-alt-del,將系統類似於直接關閉電源 

0:捕獲ctrl-alt-del,並將此信號傳至cad_pid保存的PID號進程進行處理

##kernel.dmesg_restrict = 0  //限制哪些用戶可以查看syslog日志 0:不限制  1:只有特權用戶能夠查看

##kernel.domainname = (none)  //網絡域名(重啟失效)

kernel.ftrace_dump_on_oops = 0  //確定是否將ftrace的緩沖區的信息打印出來,是通過printk來打印的 0:不打印 1:在系統oops時,自動dump堆棧信息到輸出終端

kernel.ftrace_enabled = 1

kernel.hostname = jump-host  //主機名(重啟失效)

kernel.hotplug =  //該文件給出了當前系統支持熱插拔(hotplug)時接收熱插拔事件的程序的名字(包括路徑)。

kernel.hung_task_check_count = 4194304 //hung_task檢查的進程數量最大值hung_task用於檢測一個進程是否在TASK_UNINTERRUPTIBLE狀態過長,

只有在等待IO的時候進程才會處於TASK_UNINTERRUPTIBLE狀態,這個狀態的進程內核不能夠通過信號將其喚醒並殺死

kernel.hung_task_panic = 0    //設置hung_task發生后是否引發panic 1:觸發 0:不觸發

kernel.hung_task_timeout_secs = 120  //hung_task超時時間(以秒為單位),當一個進程在TASK_UNINTERRUPTIBLE狀態超過這個時間后,

會發生一個hung_tasklinux會設置40%的可用內存用來做系統cache,當flush數據時這40%內存中的數據由於和IO同步問題導致超時

 kernel.hung_task_warnings = 10  //最大產生警告數量,當發生一次hung_task時會產生一次警告,但警告數量到達此值后之后的hung_task就不會發生警告

kernel.io_delay_type = 1

kernel.kexec_load_disabled = 0  //表示kexec_load系統調用是否被禁止,此系統調用用於kdump。當發生了一次kexec_load后,此值會自動設置為1。 

0:開啟kexec_load系統調用 

1:禁止kexec_load系統調用

kernel.keys.gc_delay = 300

kernel.keys.maxbytes = 20000

kernel.keys.maxkeys = 200

kernel.keys.persistent_keyring_expiry = 259200

kernel.keys.root_maxbytes = 20000

kernel.keys.root_maxkeys = 200

kernel.kptr_restrict = 1 //是否啟用kptr_restrice,此功能為安全性功能,用於屏蔽內核指針。

0:該特性被完全禁止;

1:那些使用“%pk”打印出來的內核指針被隱藏(會以一長串0替換掉),除非用戶有CAP_SYSLOG權限,並且沒有改變他們的UID/GID(防止在撤銷權限之前打開的文件泄露指針信息);

2:所有內核指使用“%pk”打印的都被隱藏。

kernel.kstack_depth_to_print = 12

kernel.latencytop = 0

kernel.max_lock_depth = 1024 //觸發死鎖檢查的嵌套深度值

kernel.modprobe = /sbin/modprobe //該文件給出了當系統支持module時完成modprobe功能的程序的名字(包括路徑)。

kernel.modules_disabled = 0 //表示是否禁止內核運行時可加載模塊 0:不禁止 1:禁止

kernel.msg_next_id = -1

kernel.msgmax = 65536 //消息隊列中單個消息的最大字節數

kernel.msgmnb = 65536 //單個消息隊列中允許的最大字節長度(限制單個消息隊列中所有消息包含的字節數之和)

kernel.msgmni = 3998 //系統中同時運行的消息隊列的個數

kernel.ngroups_max = 65536 //每個用戶最大的組數

kernel.nmi_watchdog = 1 //使能nmi_watchdog 0:禁止 1:開啟

kernel.ns_last_pid = 15069

kernel.numa_balancing = 0 //是否開啟numa_balancing?這塊具體看代碼

kernel.numa_balancing_migrate_deferred = 16

kernel.numa_balancing_scan_delay_ms = 1000  //單個進程每次進行numa_balancing掃描的間隔時間

kernel.numa_balancing_scan_period_max_ms = 60000  //每次掃描最多花費的時間?

kernel.numa_balancing_scan_period_min_ms = 1000  //每次掃描最少花費的時間?

kernel.numa_balancing_scan_size_mb = 256  //一次掃描進程多少MB的虛擬地址空間內存

kernel.numa_balancing_settle_count = 4    //

kernel.osrelease = 3.13.0-49-generic    //內核版本(例:3.10.0-229.7.2.rs1.2.ppc64)

kernel.ostype = Linux   //操作系統的類型

kernel.overflowuid = 65534   //Linux的UID為32位,但有些文件系統只支持16位的UID,此時若進行寫操作會出錯;

當UID超過65535時會自動被轉換為一個固定值,這個固定值保存在這個文件中

kernel.panic = 0  //系統發生panic時內核重新引導之前的等待時間    0:禁止重新引導   >0:重新引導前的等待時間(秒)

kernel.panic_on_io_nmi = 0  //

kernel.panic_on_oops = 0  //當系統發生oops或BUG時,所采取的措施 

0:繼續運行 

1:讓klog記錄oops的輸出,然后panic,若kernel.panic不為0,則等待后重新引導內核

kernel.panic_on_unrecovered_nmi = 0

kernel.perf_cpu_time_max_percent = 25  //perf分析工具最大能夠占用CPU性能的百分比 0:不限制  1~100:百分比值

kernel.perf_event_max_sample_rate = 100000  //設置perf_event的最大取樣速率,默認值為100000

kernel.perf_event_mlock_kb = 516  //設置非特權用戶能夠允許常駐內存的內存大小。默認為516(KB)

kernel.perf_event_paranoid = 1  //用於限制訪問性能計數器的權限 

0:僅允許訪問用戶空間的性能計數器 

1:內核與用戶空間的性能計數器都可以訪問 

2:僅允許訪問特殊的CPU數據(不包括跟蹤點) 

-1:不限制

kernel.pid_max = 32768  //進程pid號的最大值

 

##random

kernel.random.boot_id = 6707de07-d8a1-499f-b4ea-5b156f41feba  //此文件是個只讀文件,包含了一個隨機字符串,在系統啟動的時候會自動生成這個uuid

kernel.random.entropy_avail = 161  //此文件是個只讀文件,給出了一個有效的熵(4096位)

kernel.random.poolsize = 4096  //熵池大小,一般是4096位,可以改成任何大小

kernel.random.read_wakeup_threshold = 64  //該文件保存熵的長度,該長度用於喚醒因讀取/dev/random設備而待機的進程(random設備的讀緩沖區長度?)

kernel.random.urandom_min_reseed_secs = 60  

kernel.random.uuid = 53d97cf1-cfa5-4f40-9dd0-786544bc02d5  //此文件是個只讀文件,包含了一個隨機字符串,在random設備每次被讀的時候生成

kernel.random.write_wakeup_threshold = 896  //該文件保存熵的長度,該長度用於喚醒因寫入/dev/random設備而待機的進程(random設備的寫緩沖區長度?)

kernel.randomize_va_space = 2  //用於設置進程虛擬地址空間的隨機化 

0:關閉進程虛擬地址空間隨機化 

1:隨機化進程虛擬地址空間中的mmap映射區的初始地址,棧空間的初始地址以及VDSO頁的地址 

2:在1的基礎上加上堆區的隨機化 

(VDSO是用於兼容不同內核與glibc的接口的機制)

kernel.real-root-dev = 0 ##根文件系統所在的設備(寫入格式是0x主設備號(16位)次設備號(16位),例如0x801,主設備號是8,次設備號是1),只有使用initrd.img此參數才有效

kernel.sched_autogroup_enabled = 1  ##啟用后,內核會創建任務組來優化桌面程序的調度。它將把占用大量資源的應用程序放在它們自己的任務組,這有助於性能提升 

0:禁止 

1:開啟

kernel.sched_cfs_bandwidth_slice_us = 5000  ##

kernel.sched_child_runs_first = 0   ### 設置保證子進程初始化完成后在父進程之前先被調度 0:先調度父進程 1:先調度子進程

kernel.sched_latency_ns = 6000000   ##表示正在運行進程的所能運行的時間的最大值,即使只有一個處於running狀態的進程,運行到這個時間也要重新調度一次(以納秒為單位,在運行時會自動變化?)同時這個值也是所有可運行進程都運行一次所需的時間,每個CPU的running進程數 = sched_latency_ns / sched_min_granularity_ns

kernel.sched_migration_cost_ns = 500000  ##該變量用來判斷一個進程是否還是hot,如果進程的運行時間(now - p->se.exec_start)小於它,那么內核認為它的code還在cache里,所以該進程還是hot,那么在遷移的時候就不會考慮它

kernel.sched_min_granularity_ns = 750000   ##表示一個進程在CPU上運行的最小時間,在此時間內,內核是不會主動挑選其他進程進行調度(以納秒為單位,在運行時會自動變化?)

kernel.sched_nr_migrate = 32   ##在多CPU情況下進行負載均衡時,一次最多移動多少個進程到另一個CPU上

kernel.sched_rr_timeslice_ms = 25  ##用來指示round robin調度進程的間隔,這個間隔默認是100ms。

kernel.sched_rt_period_us = 1000000 #該參數與sched_rt_runtime_us一起決定了實時進程在以sched_rt_period為周期的時間內,實時進程最多能夠運行的總的時間不能超過sched_rt_runtime_u

kernel.sched_rt_runtime_us = 950000  ##該參數與sched_rt_period一起決定了實時進程在以sched_rt_period為周期的時間內,實時進程最多能夠運行的總的時間不能超過sched_rt_runtime_us

kernel.sched_shares_window_ns = 10000000  ##

kernel.sched_time_avg_ms = 1000

kernel.sched_tunable_scaling = 1  //當內核試圖調整sched_min_granularity,sched_latency和sched_wakeup_granularity這三個值的時候所使用的更新方法. 

0:不調整 

1:按照cpu個數以2為底的對數值進行調整 

2:按照cpu的個數進行線性比例的調整

kernel.sched_wakeup_granularity_ns = 1000000  //該變量表示進程被喚醒后至少應該運行的時間的基數,它只是用來判斷某個進程是否應該搶占當前進程,並不代表它能夠執行的最小時間(sysctl_sched_min_granularity),如果這個數值越小,那么發生搶占的概率也就越高

kernel.sem = 250 32000 32 128    //該文件包含4個值: 

1.同一類信號的最多數量(semmsl) 

2.系統中信號的最多數目,=semmni*semmsl (semmns) 

3.每個semop系統調用所包含的最大的操作數(能調用的信號量的最多次數) (semopm) 

4.系統中信號類型的數目的最大值,一個信號量標識符代表一個類型(semmni)

kernel.sem_next_id = -1   ##

kernel.sg-big-buff = 32768  ##

kernel.shm_next_id = -1

kernel.shm_rmid_forced = 0  ##強制SHM空間和一個進程聯系在一起,所以可以通過殺死進程來釋放內存 0:不設置 1:設置

kernel.shmall = 268435456   ##系統上可以使用的共享內存的總量(以字節為單位

kernel.shmmax = 4294964295   ##系統所允許的最大共享內存段的大小(以字節為單位)

kernel.shmmni = 4096     ###整個系統共享內存段的最大數量

kernel.softlockup_panic = 0  ##

設置產生softlockup時是否拋出一個panic。Softlockup用於檢測CPU可以響應中斷,但是在長時間內不能調度(比如禁止搶占時間太長)的死鎖情況。這個機制運行在一個hrtimer的中斷上下文,每隔一段時間檢測一下是否發生了調度,如果過長時間沒發生調度,說明系統被死鎖。 

0:不產生panic 

1:產生panic

kernel.stack_tracer_enabled = 0

kernel.sysrq = 0  //該文件指定的值為非零,則激活鍵盤上的sysrq按鍵。這個按鍵用於給內核傳遞信息,用於緊急情況下重啟系統。當遇到死機或者沒有響應的時候,甚至連 tty 都進不去,可以嘗試用 SysRq 重啟計算機。

kernel.tainted = 0  //1:加載非GPL module0:強制加載module 

kernel.threads-max = 31693  //系統中進程數量(包括線程)的最大值

kernel.timer_migration = 1

kernel.traceoff_on_warning = 0

kernel.unknown_nmi_panic = 0 //該參數的值影響的行為(非屏蔽中斷處理)。當這個值為非0,未知的NMI受阻,PANIC出現。這時,內核調試信息顯示控制台,則可以減輕系統中的程序掛起。

kernel.sysrq = 0 //0關閉,1開啟。內核沒有被完全鎖住,不管內核在做什么事情,使用組合鍵能即時打印出內核的信息。一般用於調試

sysrq功能被打開后,有幾種sysrq事件能被觸發。不同的內核版本可能會有些不同。但有一些是共用的:

* m - 導出關於內存分配的信息,

* t - 導出線程狀態信息,

* p - 導出當前CPU寄存器信息和標志位的信息,

* c - 故意讓系統崩潰(在使用netdump或diskdump的時候有用),

* s - 即時同步所有掛載的文件系統,

* u - 即時重新掛載所有的文件系統為只讀,

* b - 即時重新啟動系統,

* o - 即時關機(如果機器設置並支持此項功能)。

kernel.usermodehelper.bset = 4294967295 4294967295

kernel.usermodehelper.inheritable = 4294967295 4294967295

kernel.version = #83-Ubuntu SMP Fri Apr 10 20:11:33 UTC 2015  //版本號

kernel.watchdog = 1  ## 表示是否禁止softlockup模式和nmi_watchdog(softlockup用於喚醒watchdog) 0:禁止 1:開啟

kernel.watchdog_thresh = 10 ##用於設置高精度定時器(hrtimer)、nmi事件、softlockup、hardlockup的閥值(以秒為單位)0:不設置閥值

kernel.yama.ptrace_scope = 1

 

 

##網絡core

net.core.bpf_jit_enable = 0 //基於時間規則的編譯器,用於基於PCAP(packet capture library)並使用伯克利包過濾器(Berkeley Packet Filter,如tcpdump)的用戶工具,可以大幅提升復雜規則的處理性能。 

0:禁止 

1:開啟 

2:開啟並請求編譯器將跟蹤數據時間寫入內核日志

 

net.core.busy_poll = 0 //默認對網絡設備進行poll和select操作的超時時間(us),具體數值最好以sockets數量而定

net.core.busy_read = 0  //默認讀取在設備幀隊列上數據幀的超時時間(us),推薦值:50

net.core.default_qdisc = pfifo_fast

net.core.dev_weight = 64 //每個CPU一次NAPI中斷能夠處理網絡包數量的最大值

net.core.flow_limit_cpu_bitmap = 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000

net.core.flow_limit_table_len = 4096

net.core.message_burst = 10 //設置每十秒寫入多少次請求警告;此設置可以用來防止DOS攻擊

net.core.message_cost = 5 //置每一個警告的度量值,缺省為5,當用來防止DOS攻擊時設置為0

net.core.netdev_budget = 300 //每次軟中斷處理的網絡包個數

net.core.netdev_max_backlog = 1000 //設置當個別接口接收包的速度快於內核處理速度時允許的最大的包序列

net.core.netdev_tstamp_prequeue = 1 //0:關閉,接收的數據包的時間戳在RPS程序處理之后進行標記,這樣有可能時間戳會不夠准確1:打開,時間戳會盡可能早的標記

net.core.optmem_max = 20480  //表示每個socket所允許的最大緩沖區的大小(字節)

net.core.rmem_default = 212992 //設置接收socket的缺省緩存大小(字節)

net.core.rmem_max = 327679 //設置接收socket的最大緩存大小(字節)

net.core.rps_sock_flow_entries = 0

net.core.somaxconn = 128 //定義了系統中每一個端口最大的監聽隊列的長度,這是個全局的參數。

net.core.warnings = 1 //已經不使用此參數

net.core.wmem_default = 212992 //設置發送的socket缺省緩存大小(字節)

net.core.wmem_max = 327679 //設置發送的socket最大緩存大小(字節)

net.core.xfrm_acq_expires = 30

net.core.xfrm_aevent_etime = 10

net.core.xfrm_aevent_rseqth = 2

net.core.xfrm_larval_drop = 1

 

 

 

 

 

 

##網絡ipv4

net.ipv4.cipso_cache_bucket_size = 10

net.ipv4.cipso_cache_enable = 1

net.ipv4.cipso_rbm_optfmt = 0

net.ipv4.cipso_rbm_strictvalid = 1

net.ipv4.conf.all.accept_local = 0

net.ipv4.conf.all.accept_redirects = 0  //如果主機所在的網段中有兩個路由器,你將其中一個設置成了缺省網關,但是該網關 

在收到你的ip包時發現該ip包必須經過另外一個路由器,這時這個路由器就會給你發一個所謂的“重定向”icmp包,告訴將ip包轉發到另外一個路由器。

參數值為布爾 值,1表示接收這類重定向icmp 信息,0表示忽略。在充當路由器的linux主機上缺 省值為0,在一般的linux主機上缺省值為1。建議將其改為0以消除安全性隱患。 

net.ipv4.conf.all.accept_source_route = 0  //是否接受含有源路由信息的ip包。參數值為布爾值,1表示接受,0表示不接受。在 

充當網關的linux主機上缺省值為1,在一般的linux主機上缺省值為0。從安全性角 度出發,建議關閉該功能。 

net.ipv4.conf.all.arp_accept = 0

net.ipv4.conf.all.arp_announce = 0

net.ipv4.conf.all.arp_filter = 0

net.ipv4.conf.all.arp_ignore = 0

net.ipv4.conf.all.arp_notify = 0

net.ipv4.conf.all.bootp_relay = 0

net.ipv4.conf.all.disable_policy = 0

net.ipv4.conf.all.disable_xfrm = 0

net.ipv4.conf.all.force_igmp_version = 0

net.ipv4.conf.all.forwarding = 0

net.ipv4.conf.all.igmpv2_unsolicited_report_interval = 10000

net.ipv4.conf.all.igmpv3_unsolicited_report_interval = 1000

net.ipv4.conf.all.log_martians = 0

net.ipv4.conf.all.mc_forwarding = 0

net.ipv4.conf.all.medium_id = 0

net.ipv4.conf.all.promote_secondaries = 0

net.ipv4.conf.all.proxy_arp = 0 

net.ipv4.conf.all.proxy_arp_pvlan = 0

net.ipv4.conf.all.route_localnet = 0

net.ipv4.conf.all.rp_filter = 1

net.ipv4.conf.all.secure_redirects = 0  //其實所謂的“安全重定向”就是只接受來自網關的“重定向”icmp包。1表示啟用,0表示禁止,默認值為啟用。 

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.all.shared_media = 1

net.ipv4.conf.all.src_valid_mark = 0

net.ipv4.conf.all.tag = 0

net.ipv4.conf.default.accept_local = 0

net.ipv4.conf.default.accept_redirects = 0

net.ipv4.conf.default.accept_source_route = 0  //處理無源路由的包

net.ipv4.conf.default.arp_accept = 0

net.ipv4.conf.default.arp_announce = 0

net.ipv4.conf.default.arp_filter = 0

net.ipv4.conf.default.arp_ignore = 0

net.ipv4.conf.default.arp_notify = 0

net.ipv4.conf.default.bootp_relay = 0

net.ipv4.conf.default.disable_policy = 0

net.ipv4.conf.default.disable_xfrm = 0

net.ipv4.conf.default.force_igmp_version = 0

net.ipv4.conf.default.forwarding = 0

net.ipv4.conf.default.igmpv2_unsolicited_report_interval = 10000

net.ipv4.conf.default.igmpv3_unsolicited_report_interval = 1000

net.ipv4.conf.default.log_martians = 0

net.ipv4.conf.default.mc_forwarding = 0

net.ipv4.conf.default.medium_id = 0

net.ipv4.conf.default.promote_secondaries = 0

net.ipv4.conf.default.proxy_arp = 0

net.ipv4.conf.default.proxy_arp_pvlan = 0

net.ipv4.conf.default.route_localnet = 0

net.ipv4.conf.default.rp_filter = 1

net.ipv4.conf.default.secure_redirects = 0

net.ipv4.conf.default.send_redirects = 0

net.ipv4.conf.default.shared_media = 1

net.ipv4.conf.default.src_valid_mark = 0

net.ipv4.conf.default.tag = 0

net.ipv4.conf.eth0.accept_local = 0

net.ipv4.conf.eth0.accept_redirects = 0

net.ipv4.conf.eth0.accept_source_route = 1

net.ipv4.conf.eth0.arp_accept = 0

net.ipv4.conf.eth0.arp_announce = 0

net.ipv4.conf.eth0.arp_filter = 0

net.ipv4.conf.eth0.arp_ignore = 0

net.ipv4.conf.eth0.arp_notify = 0

net.ipv4.conf.eth0.bootp_relay = 0

net.ipv4.conf.eth0.disable_policy = 0

net.ipv4.conf.eth0.disable_xfrm = 0

net.ipv4.conf.eth0.force_igmp_version = 0

net.ipv4.conf.eth0.forwarding = 0

net.ipv4.conf.eth0.igmpv2_unsolicited_report_interval = 10000

net.ipv4.conf.eth0.igmpv3_unsolicited_report_interval = 1000

net.ipv4.conf.eth0.log_martians = 0

net.ipv4.conf.eth0.mc_forwarding = 0

net.ipv4.conf.eth0.medium_id = 0

net.ipv4.conf.eth0.promote_secondaries = 0

net.ipv4.conf.eth0.proxy_arp = 0

net.ipv4.conf.eth0.proxy_arp_pvlan = 0

net.ipv4.conf.eth0.route_localnet = 0

net.ipv4.conf.eth0.rp_filter = 1

net.ipv4.conf.eth0.secure_redirects = 0

net.ipv4.conf.eth0.send_redirects = 0

net.ipv4.conf.eth0.shared_media = 1

net.ipv4.conf.eth0.src_valid_mark = 0

net.ipv4.conf.eth0.tag = 0

net.ipv4.conf.lo.accept_local = 0

net.ipv4.conf.lo.accept_redirects = 0

net.ipv4.conf.lo.accept_source_route = 1

net.ipv4.conf.lo.arp_accept = 0

net.ipv4.conf.lo.arp_announce = 0

net.ipv4.conf.lo.arp_filter = 0

net.ipv4.conf.lo.arp_ignore = 0

net.ipv4.conf.lo.arp_notify = 0

net.ipv4.conf.lo.bootp_relay = 0

net.ipv4.conf.lo.disable_policy = 1

net.ipv4.conf.lo.disable_xfrm = 1

net.ipv4.conf.lo.force_igmp_version = 0

net.ipv4.conf.lo.forwarding = 0

net.ipv4.conf.lo.igmpv2_unsolicited_report_interval = 10000

net.ipv4.conf.lo.igmpv3_unsolicited_report_interval = 1000

net.ipv4.conf.lo.log_martians = 0

net.ipv4.conf.lo.mc_forwarding = 0

net.ipv4.conf.lo.medium_id = 0

net.ipv4.conf.lo.promote_secondaries = 0

net.ipv4.conf.lo.proxy_arp = 0

net.ipv4.conf.lo.proxy_arp_pvlan = 0

net.ipv4.conf.lo.route_localnet = 0

net.ipv4.conf.lo.rp_filter = 1

net.ipv4.conf.lo.secure_redirects = 0

net.ipv4.conf.lo.send_redirects = 0

net.ipv4.conf.lo.shared_media = 1

net.ipv4.conf.lo.src_valid_mark = 0

net.ipv4.conf.lo.tag = 0

net.ipv4.icmp_echo_ignore_all = 0  //表示內核是否忽略所有的ICMP ECHO請求,或忽略廣播和多播請求 0:響應請求 1:忽略請求 。 默認設置:0 建議設置:1 

net.ipv4.icmp_echo_ignore_broadcasts = 1

net.ipv4.icmp_errors_use_inbound_ifaddr = 0

net.ipv4.icmp_ignore_bogus_error_responses = 1

net.ipv4.icmp_ratelimit = 1000

net.ipv4.icmp_ratemask = 6168

net.ipv4.igmp_max_memberships = 20 //該文件表示多播組中的最大成員數量。 默認設置:20 

net.ipv4.igmp_max_msf = 10

net.ipv4.inet_peer_maxttl = 600  //條目的最大存活期。在此期限到達之后,如果緩沖池沒有耗盡壓力的話,不使用的條目將會超時。默認設置600 

net.ipv4.inet_peer_minttl = 120  //條目的最低存活期。在重組端必須要有足夠的碎片存活期。這個最低存活期必須保證緩沖池容積是否少於inet_peer_threshold。 默認設置120

net.ipv4.inet_peer_threshold = 65664 //INET對端存儲器某個合適值,當超過該閥值條目將被丟棄。該閥值同樣決定生存 時間以及廢物收集通過的時間間隔。條目越多,存活期越低,GC 間隔越短。 

 

 

##網路IP

net.ipv4.ip_default_ttl = 64 //表示一個數據報的生存周期(Time To Live),即最多經過多少路由器。 默認設置64

net.ipv4.ip_dynaddr = 0 //該參數通常用於使用撥號連接的情況,可以使系統動能夠立即改變ip包的源地址為該ip地址,

同時中斷原有的tcp對話而用新地址重新發出一個syn請求 包,開始新的tcp對話。在使用ip欺騙時,該參數可以立即改變偽裝地址為新的ip地址。

該文件表示是否允許動態地址,如果該值非0,表示允許;如果該值 大於1,內核將通過log記錄動態地址重寫信息。 

net.ipv4.ip_early_demux = 1

net.ipv4.ip_forward = 0  //是否打開IP轉發,默認設置0。0:禁止 1:轉發

net.ipv4.ip_local_port_range = 32768 61000  //表示TCP/UDP協議打開的本地端口號。 默認設置:1024 4999 建議設置:32768 61000 

net.ipv4.ip_local_reserved_ports =

net.ipv4.ip_no_pmtu_disc = 0  //表示在全局范圍內關閉路徑MTU探測功能。默認設置0

net.ipv4.ip_nonlocal_bind = 0  //表示是否允許進程邦定到非本地地址。 默認設置:0

net.ipv4.ipfrag_high_thresh = 4194304

net.ipv4.ipfrag_low_thresh = 3145728  //表示用於重組IP分段的內存分配最低值和最高值,一旦達到最高內存分配值,其它分段將被丟棄,直到達到最低內存分配值。 默認設置:196608

net.ipv4.ipfrag_max_dist = 64

net.ipv4.ipfrag_secret_interval = 600

net.ipv4.ipfrag_time = 30  //表示一個IP分段在內存中保留多少秒。默認設置30(秒)

 

 

 

 

##網絡neigh

net.ipv4.neigh.default.anycast_delay = 100 //對相鄰請求信息的回復的最大延遲時間(單位 秒)

net.ipv4.neigh.default.app_solicit = 0 //在使用多播探測前,通過netlink發送到用戶空間arp守護程序的最大探測數

net.ipv4.neigh.default.base_reachable_time_ms = 30000 //一旦發現相鄰記錄,至少在一段介於 base_reachable_time/2和3*base_reachable_time/2之間的隨機時間內,該記錄是有效的.如果收到上層協議的肯定反饋, 那么記錄的有效期將延長.(單位 秒)

net.ipv4.neigh.default.delay_first_probe_time = 5 發現某個相鄰層記錄無效后,發出第一個探測要等待的時間。(單位 秒)

net.ipv4.neigh.default.gc_interval = 30 //垃圾收集器收集相鄰層記錄和無用記錄的運行周期(單位 秒)

net.ipv4.neigh.default.gc_stale_time = 60 //決定檢查一次相鄰層記錄的有效性的周期. 當相鄰層記錄失效時,將在給它發送數據前,再解析一次.(單位 秒)

net.ipv4.neigh.default.gc_thresh1 = 2048 //存在於ARP高速緩存中的最少個數,如果少於這個數,垃圾收集器將不會運行

net.ipv4.neigh.default.gc_thresh2 = 4096 //保存在 ARP 高速緩存中的最多的記錄軟限制. 垃圾收集器在開始收集前,允許記錄數超過這個數字,在創建新表項時如果發現5秒沒有刷新過,那么進行強制回收

net.ipv4.neigh.default.gc_thresh3 = 8192 //保存在 ARP 高速緩存中的最多記錄的硬限制, 一旦高速緩存中的數目高於此, 垃圾收集器將馬上運行

net.ipv4.neigh.default.locktime = 100 //防止相鄰記錄被過度頻繁刷新,引起抖動,只有距鄰居上次刷新時間超過這時才允許被再次刷新.(單位 秒)

net.ipv4.neigh.default.mcast_solicit = 3 //在把記錄標記為不可達之前, 用多播/廣播方式解析地址的最大次數.

net.ipv4.neigh.default.proxy_delay = 80 //當接收到有一個arp請求時,在回應前可以延遲的時間,這個請求是要得到一個已知代理arp項的地址.(單位 百毫秒)

net.ipv4.neigh.default.proxy_qlen = 64 //能放入代理 ARP 地址隊列的數據包最大數目.

net.ipv4.neigh.default.retrans_time_ms = 1000 //重發一個arp請求前的等待的毫秒數

net.ipv4.neigh.default.ucast_solicit = 3 //arp請求最多發送次數

net.ipv4.neigh.default.unres_qlen = 31 //a最大掛起arp請求的數量,這些請求都正在被解析中.

net.ipv4.neigh.default.unres_qlen_bytes = 65536 //最大處理arp包的字節數

net.ipv4.neigh.eth0.anycast_delay = 100 //對相鄰請求信息的回復的最大延遲時間(單位 秒)

net.ipv4.neigh.eth0.app_solicit = 0 //在使用多播探測前,通過netlink發送到用戶空間arp守護程序的最大探測數

net.ipv4.neigh.eth0.base_reachable_time_ms = 30000 //一旦發現相鄰記錄,至少在一段介於 base_reachable_time/2和3*base_reachable_time/2之間的隨機時間內,該記錄是有效的.如果收到上層協議的肯定反饋, 那么記錄的有效期將延長.(單位 毫秒)

net.ipv4.neigh.eth0.delay_first_probe_time = 5 //發現某個相鄰層記錄無效后,發出第一個探測要等待的時間。(單位 秒)

net.ipv4.neigh.eth0.gc_stale_time = 60 //決定檢查一次相鄰層記錄的有效性的周期. 當相鄰層記錄失效時,將在給它發送數據前,再解析一次.(單位 秒)

net.ipv4.neigh.eth0.locktime = 100 //防止相鄰記錄被過度頻繁刷新,引起抖動,只有距鄰居上次刷新時間超過這時才允許被再次刷新.(單位 秒)

net.ipv4.neigh.eth0.mcast_solicit = 3 //把記錄標記為不可達之前, 用多播/廣播方式解析地址的最大次數.

net.ipv4.neigh.eth0.proxy_delay = 80 //當接收到有一個arp請求時,在回應前可以延遲的時間,這個請求是要得到一個已知代理arp項的地址.(單位 百毫秒)

net.ipv4.neigh.eth0.proxy_qlen = 64 //能放入代理 ARP 地址隊列的數據包最大數目.

net.ipv4.neigh.eth0.retrans_time_ms = 1000 //重發一個arp請求前的等待的毫秒數

net.ipv4.neigh.eth0.ucast_solicit = 3 //arp請求最多發送次數

net.ipv4.neigh.eth0.unres_qlen = 31 //a最大掛起arp請求的數量,這些請求都正在被解析中.

net.ipv4.neigh.eth0.unres_qlen_bytes = 65536 //最大處理arp包的字節數

net.ipv4.neigh.lo.anycast_delay = 100 //對相鄰請求信息的回復的最大延遲時間(單位 秒)

net.ipv4.neigh.lo.app_solicit = 0

net.ipv4.neigh.lo.base_reachable_time_ms = 30000

net.ipv4.neigh.lo.delay_first_probe_time = 5

net.ipv4.neigh.lo.gc_stale_time = 60

net.ipv4.neigh.lo.locktime = 100

net.ipv4.neigh.lo.mcast_solicit = 3

net.ipv4.neigh.lo.proxy_delay = 80

net.ipv4.neigh.lo.proxy_qlen = 64

net.ipv4.neigh.lo.retrans_time_ms = 1000

net.ipv4.neigh.lo.ucast_solicit = 3

net.ipv4.neigh.lo.unres_qlen = 31

net.ipv4.neigh.lo.unres_qlen_bytes = 65536

net.ipv4.ping_group_range = 1 0

 

 

 

##網絡路由

net.ipv4.route.error_burst = 1250 //這個參數和error_cast一起用於限制有多少個icmp不可達消息被發送.當數據包不能到達下一跳時會發送icmp不可達數據包.當一些主機忽略我們的icmp重定向消息時也會打印一些錯誤信息到dmesg.這個選項也控制打印的次數.(單位 秒)

net.ipv4.route.error_cost = 250  //這個參數和error_burst一起用於限制有多少個icmp不可達消息被發送.當數據包不能到達下一跳時會發送icmp不可達數據包. 

當一些主機忽略我們的icmp重定向消息時也會打印一些錯誤信息到dmesg.這個選項也控制打印的次數. 

error_cost值越大,那么icmp不可達和寫錯誤信息的頻率就越低.(單位 秒)

net.ipv4.route.gc_elasticity = 8 //用來控制路由緩存垃圾回收機制的頻率和行為.當路由表一個hash項的長度超過此值時,會進行緩存縮減,當路由緩存項長度超過ip_rt_gc_elasticity << rt_hash_log(表示路由高速緩存hash table的容量以2為對數所得的值) 時會進行強烈的回收.

net.ipv4.route.gc_interval = 60 //此參數定義了路由表垃圾回收的間隔(秒)

net.ipv4.route.gc_min_interval = 0 //已不再使用,並被gc_min_interval_ms取代

net.ipv4.route.gc_min_interval_ms = 500 //此參數定義了路由表垃圾回收的最小間隔(ms)

net.ipv4.route.gc_thresh = -1 //路由hash table的大小,當cache中的路由條數超過此值時,開始垃圾回收.

net.ipv4.route.gc_timeout = 300 //#路由緩存刷新頻率,當一個路由失敗后多長時間跳到另一個路由,默認是300。

net.ipv4.route.max_size = 2147483647  //路由高速緩存的最大項數,超過會進行清除舊項操作.

net.ipv4.route.min_adv_mss = 256  //該文件表示最小的MSS大小,取決於第一跳的路由器MTU。默認設置256(bytes) 

net.ipv4.route.min_pmtu = 552  //該文件表示最小路徑MTU的大小。 默認設置552

net.ipv4.route.mtu_expires = 600  //該文件表示PMTU信息緩存多長時間。 默認設置600(秒)

net.ipv4.route.redirect_load = 5 //決定是否要向特定主機發送更多的ICMP重定向的時間因子.一旦達到load時間或number個數就不再發送.

net.ipv4.route.redirect_number = 9  //決定是否要向特定主機發送更多的ICMP重定向的數量因子.一旦達到load時間或number個數就不再發送.

net.ipv4.route.redirect_silence = 5120  //重定向的超時.經過這么長時間后,重定向會重發,而不管是否已經因為超過load或者number限制而停止.

 

 

 

##網絡tcp

net.ipv4.tcp_abort_on_overflow = 0  //當守護進程太忙而不能接受新的連接,就向對方發送reset消息,默認值是false。 默認設置:0

net.ipv4.tcp_adv_win_scale = 1  //表示計算緩沖開銷。默認設置:2

net.ipv4.tcp_allowed_congestion_control = cubic reno

net.ipv4.tcp_app_win = 31  //表示保留max數量的窗口由於應用緩沖。當為0時表示不需要緩沖。 默認設置:31

net.ipv4.tcp_available_congestion_control = cubic reno

net.ipv4.tcp_base_mss = 512

net.ipv4.tcp_challenge_ack_limit = 100

net.ipv4.tcp_congestion_control = cubic

net.ipv4.tcp_dsack = 1  //表示是否允許TCP發送“兩個完全相同”的SACK。 默認設置:1

net.ipv4.tcp_early_retrans = 3

net.ipv4.tcp_ecn = 2  //表示是否打開TCP的直接擁塞通告功能。 默認設置:2

net.ipv4.tcp_fack = 1  //表示是否打開FACK擁塞避免和快速重傳功能。 默認設置:1

net.ipv4.tcp_fastopen = 1

net.ipv4.tcp_fastopen_key = 00000000-00000000-00000000-00000000

net.ipv4.tcp_fin_timeout = 60  //對於本端斷開的socket連接,TCP保持在FIN-WAIT-2狀態的時間。對方可能會斷開連接或一直不結束連接或不可預料的進程死亡。默認設置:60秒

net.ipv4.tcp_frto = 2

net.ipv4.tcp_keepalive_intvl = 75  //該文件表示發送TCP探測的頻率,乘以tcp_keepalive_probes表示斷開沒有相應的TCP連接的時間。默認設置:75秒

net.ipv4.tcp_keepalive_probes = 9  //表示丟棄TCP連接前,進行最大TCP保持連接偵測的次數。保持連接僅在SO_KEEPALIVE套接字選項被打開時才被發送。 默認設置:9

net.ipv4.tcp_keepalive_time = 7200  //該文件表示從不再傳送數據到向連接上發送保持連接信號之間所需的秒數。 默認設置:7200(2小時)

net.ipv4.tcp_limit_output_bytes = 131072

net.ipv4.tcp_low_latency = 0

net.ipv4.tcp_max_orphans = 8192  //系統所能處理不屬於任何進程的TCP sockets最大數量。超過這個數量,那么不屬於任何進程的連接會被立即reset,

並同時顯示警告信息。默認設置:8192

net.ipv4.tcp_max_syn_backlog = 128  //對於還未獲得客戶端確認的連接請求,需要保存在隊列中最大數目。對於 超過 128Mb 內存的系統,默認值是 1024,低於 128Mb 的則為 128。

net.ipv4.tcp_max_tw_buckets = 8192  //系統在同時所處理的最大timewait sockets 數目。如果超過此數的話,time-wait socket 會被立即砍除並且顯示警告信息。默認設置:8192

net.ipv4.tcp_mem = 47541 63388 95082

net.ipv4.tcp_min_tso_segs = 2

net.ipv4.tcp_moderate_rcvbuf = 1

net.ipv4.tcp_mtu_probing = 0

net.ipv4.tcp_no_metrics_save = 0

net.ipv4.tcp_notsent_lowat = -1

net.ipv4.tcp_orphan_retries = 0  //在近端丟棄TCP連接之前,要進行多少次重試。默認設置:7

net.ipv4.tcp_reordering = 3  //表示TCP流中重排序的數據報最大數量。 默認設置:3

net.ipv4.tcp_retrans_collapse = 1    //表示對於某些有bug的打印機是否提供針對其bug的兼容性。默認設置:1

net.ipv4.tcp_retries1 = 3  //表示放棄回應一個TCP連接請求前進行重傳的次數。 默認設置:3

net.ipv4.tcp_retries2 = 15  //表示放棄在已經建立通訊狀態下的一個TCP數據包前進行重傳的次數。默認設置:15

net.ipv4.tcp_rfc1337 = 0  //

net.ipv4.tcp_rmem = 4096 87380 6291456 //該文件包含3個整數值,分別是:min,default,max 默認設置:4096 87380 174760 

Min:    為TCP socket預留用於接收緩沖的內存數量,即使在內存出現緊張情況下TCP socket都至少會有這么多數量的內存用於接收緩沖。 

Default:為TCP socket預留用於接收緩沖的內存數量,默認情況下該值影響其它協議使用的 net.core.wmem中default的 值。該值決定了在tcp_adv_win_scale、tcp_app_win和tcp_app_win的默認值情況下,TCP 窗口大小為65535。 

Max:    為TCP socket預留用於接收緩沖的內存最大值。該值不會影響 net.core.wmem中max的值,今天選擇參數 SO_SNDBUF則不受該值影響。

net.ipv4.tcp_sack = 1  //表示是否啟用有選擇的應答(Selective Acknowledgment),這可以通過有選擇地應答亂序接收到的報文來提高性能

(這樣可以讓發送者只發送丟失的報文段)(對於廣域網通信來說)這個選項應該啟用,但是這會增加對 CPU 的占用。 默認設置:1

net.ipv4.tcp_slow_start_after_idle = 1  //

net.ipv4.tcp_stdurg = 0  //使用 TCP urg pointer 字段中的主機請求解釋功能。默認設置:0

net.ipv4.tcp_syn_retries = 6  //表示本機向外發起TCP SYN連接超時重傳的次數,該值僅僅針對外出的連接,不應該高於255;默認設置:3

net.ipv4.tcp_synack_retries = 5

net.ipv4.tcp_syncookies = 1  //表示是否打開TCP同步標簽(syncookie),可以防止一個套接字在有過多試圖連接到達時引起過載。默認設置:0

net.ipv4.tcp_thin_dupack = 0

net.ipv4.tcp_thin_linear_timeouts = 0

net.ipv4.tcp_timestamps = 1  //表示是否啟用以一種比超時重發更精確的方法來啟用對 RTT 的計算;為了實現更好的性能應該啟用這個選項。 默認設置:1

net.ipv4.tcp_tso_win_divisor = 3

##net.ipv4.tcp_tw_recycle = 0

##net.ipv4.tcp_tw_reuse = 0  //表示是否允許重新應用處於TIME-WAIT狀態的socket用於新的TCP連接。默認設置:0

net.ipv4.tcp_window_scaling = 1  //該文件表示設置tcp/ip會話的滑動窗口大小是否可變。參數值為布爾值,為1時表示可變,為0時表示不可變。 默認設置:1

net.ipv4.tcp_wmem = 4096 16384 4194304   //該文件包含3個整數值,分別是:min,default,max  默認設置:4096 16384 131072 

Min:    為TCP socket預留用於發送緩沖的內存最小值。每個TCP socket都可以使用它。 

Default:為TCP socket預留用於發送緩沖的內存數量,默認情況下該值會影響其它協議使用的net.core.wmem中default的 值,一般要低於net.core.wmem中default的值。 

Max:    為TCP socket預留用於發送緩沖的內存最大值。該值不會影響net.core.wmem_max,今天選擇參數SO_SNDBUF則不受該值影響。默認值為128K。 

net.ipv4.tcp_workaround_signed_windows = 0

net.ipv4.udp_mem = 47541 63388 95082

net.ipv4.udp_rmem_min = 4096

net.ipv4.udp_wmem_min = 4096

net.ipv4.xfrm4_gc_thresh = 32768

 

#網絡netfilter

net.netfilter.nf_conntrack_max = 1000000  //CONNTRACK_MAX 允許的最大跟蹤連接條目,是在內核內存中netfilter可以同時處理的“任務”(連接跟蹤條目)

net.netfilter.nf_log.0 = NONE

net.netfilter.nf_log.1 = NONE

net.netfilter.nf_log.10 = NONE

net.netfilter.nf_log.11 = NONE

net.netfilter.nf_log.12 = NONE

net.netfilter.nf_log.2 = NONE

net.netfilter.nf_log.3 = NONE

net.netfilter.nf_log.4 = NONE

net.netfilter.nf_log.5 = NONE

net.netfilter.nf_log.6 = NONE

net.netfilter.nf_log.7 = NONE

net.netfilter.nf_log.8 = NONE

net.netfilter.nf_log.9 = NONE

net.unix.max_dgram_qlen = 10

 

 

##內核虛擬機

vm.admin_reserve_kbytes = 8192 //給有cap_sys_admin權限的用戶保留的內存數量,默認值是min(free pages * 3%, 8MB)。這些內存是為了給管理員登錄和殺死進程恢復系統提供足夠的內存。

vm.block_dump = 0 //如果設置的是非零值,則會啟用塊I/O調試。更多的關於塊I/O調試的信息可以參見Documentation/laptops/laptop-mode.txt。

vm.dirty_background_bytes = 0 // 當臟頁所占的內存數量超過dirty_background_bytes時,內核的flusher線程開始回寫臟頁。

注意:dirty_background_bytes參數和dirty_background_ratio參數是相對的,只能指定其中一個。當其中一個參數文件被寫入時,會立即開始計算臟頁限制,並且會將另一個參數的值清零

vm.dirty_background_ratio = 10 // 當臟頁所占的百分比(相對於所有可用內存,即空閑內存頁+可回收內存頁)達到dirty_background_ratio時,

內核的flusher線程開始回寫臟頁數據。所有可用內存不等於總的系統內存。

vm.dirty_bytes = 0 //當臟頁所占的內存數量達到dirty_bytes時,執行磁盤寫操作的進程自己開始回寫臟數據。

  注意:dirty_bytes參數和dirty_ratio參數是相對的,只能指定其中一個。當其中一個參數文件被寫入時,會立即開始計算臟頁限制,並且會將另一個參數的值清零

vm.dirty_expire_centisecs = 3000  //臟數據的過期時間,超過該時間后內核的flusher線程被喚醒時會將臟數據回寫到磁盤上,單位是百分之一秒。

vm.dirty_ratio = 20  //當臟頁所占的百分比(相對於所有可用內存,即空閑內存頁+可回收內存頁)達到dirty_ratio時,執行磁盤寫操作的進程會自己開始回寫臟數據。所有可用內存不等於總的系統內存。

vm.dirty_writeback_centisecs = 500 // 內核的flusher線程會周期性地喚醒,然后將老的臟數據寫到磁盤上。dirty_writeback_centisecs定義了喚醒的間隔,單位是百分之一秒。

如果設置為0,則禁止周期性地喚醒回寫線程。

vm.drop_caches = 0 // 向/proc/sys/vm/drop_caches文件中寫入數值可以使內核釋放page cache,dentries和inodes緩存所占的內存。

  只釋放pagecache:

      echo 1 > /proc/sys/vm/drop_caches

  只釋放dentries和inodes緩存:

      echo 2 > /proc/sys/vm/drop_caches

  釋放pagecache、dentries和inodes緩存:

      echo 3 > /proc/sys/vm/drop_caches

  這個操作不是破壞性操作,臟的對象(比如臟頁)不會被釋放,因此要首先運行sync命令。

  

vm.extfrag_threshold = 500

vm.hugepages_treat_as_movable = 0  //這個參數用來控制是否可以從ZONE_MOVABLE內存域中分配大頁面。如果設置為非零,大頁面可以從ZONE_MOVABLE內存域分配。 

ZONE_MOVABLE內存域只有在指定了kernelcore啟動參數的情況下才會創建,如果沒有指定kernelcore啟動參數,hugepages_treat_as_movable參數則沒有效果。

  大頁面遷移在某些情況下是可用的,這取決於系統架構和大頁面的大小。如果大頁面支持遷移,從ZONE_MOVABLE內存域分配總是啟用的,會忽略hugepages_treat_as_movable參數的值。換句話說,hugepages_treat_as_movable參數只對不支持遷移的大頁面有效。

  假設在你的系統中大頁面不能遷移,這個參數的一個用例是用戶可以通過啟用從ZONE_MOVABLE內存域分配大頁面的特性,讓大頁面池擴展性更好。這是 因為在ZONE_MOVABLE內存域,頁面的回收、遷移和壓縮工作的更好,也更容易獲得連續的內存塊。注意,為不能遷移的大頁面使用 ZONE_MOVABLE會損害內存熱移除等特性,因此需要用戶自己來權衡。

vm.hugetlb_shm_group = 0  //指定組ID,擁有該gid的用戶可以使用大頁創建SysV共享內存段

vm.laptop_mode = 0  //設置開啟laptop mode,此模式主要是通過降低硬盤的轉速來

vm.swappiness = 10 //0表示最大限度使用物理內存,100表示最大限度使用swap分區,並且把內存上的數據及時的搬運到swap空間里面。默認60

 

 

 

 

 

 

 

[root@git-node1 ~]# lsof|grep 26431|wc -l

54

[root@git-node1 ~]# ls -l /proc/26431/fd/ |wc -l

4

進程26431總共打開了54個文件,只占用了4個文件描述符。

 

 

lsof(list open files)是一個列出當前系統打開文件的工具

lsof abc.txt 顯示開啟文件abc.txt的進程  

lsof -c abc 顯示abc進程現在打開的文件  

lsof -c -p 1234 列出進程號為1234的進程所打開的文件  

lsof -g gid 顯示歸屬gid的進程情況  

lsof +d /usr/local/ 顯示目錄下被進程開啟的文件  

lsof +D /usr/local/ 同上,但是會搜索目錄下的目錄,時間較長  

lsof -d 4 顯示使用fd為4的進程  

lsof -i 用以顯示符合條件的進程情況 

lsof `which httpd` //那個進程在使用apache的可執行文件  

lsof /etc/passwd //那個進程在占用/etc/passwd  

lsof /dev/hda6 //那個進程在占用hda6  

lsof /dev/cdrom //那個進程在占用光驅  

lsof -c sendmail //查看sendmail進程的文件使用情況  

lsof -c courier -u ^zahn //顯示出那些文件被以courier打頭的進程打開,但是並不屬於用戶zahn  

lsof -p 30297 //顯示那些文件被pid為30297的進程打開  

lsof -D /tmp 顯示所有在/tmp文件夾中打開的instance和文件的進程。但是symbol文件並不在列  

lsof -u1000 //查看uid是100的用戶的進程的文件使用情況  

lsof -utony //查看用戶tony的進程的文件使用情況  

lsof -u^tony //查看不是用戶tony的進程的文件使用情況(^是取反的意思)  

lsof -i //顯示所有打開的端口  

lsof -i:80 //顯示所有打開80端口的進程  

lsof -i -U //顯示所有打開的端口和UNIX domain文件  

lsof -i UDP@[url]www.akadia.com:123 //顯示那些進程打開了到www.akadia.com的UDP的123(ntp)端口的鏈接  

lsof -i tcp@ohaha.ks.edu.tw:ftp -r //不斷查看目前ftp連接的情況(-r,lsof會永遠不斷的執行,直到收到中斷信號,+r,lsof會一直執行,直到沒有檔案被顯示,缺省是15s刷新)  

lsof -i tcp@ohaha.ks.edu.tw:ftp -n //lsof -n 不將IP轉換為hostname,缺省是不加上-n參數

 

 

Red_Hat_Enterprise_Linux-6-Performance_Tuning_Guide-zh-CN.pdf

http://buguoruci.blog.51cto.com/4104173/1255836


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM