vi /etc/sysctl.conf

编辑文件,加入以下内容:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30

然后执行/sbin/sysctl -p让参数生效。

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,表示关闭。

net.ipv4.tcp_fin_timeout修改系統默认的TIMEOUT时间

修改之后,再用命令查看TIME_WAIT连接数

netstat -ae|grep “TIME_WAIT” |wc –l

kernel.shmall = 268435456
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 5000 65000
net.ipv4.tcp_mem = 786432 1048576 1572864
net.core.wmem_max = 873200
net.core.rmem_max = 873200
net.ipv4.tcp_wmem = 8192 436600 873200
net.ipv4.tcp_rmem = 32768 436600 873200
net.core.somaxconn = 256
net.core.netdev_max_backlog = 1000
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_retries2 = 5
net.ipv4.tcp_keepalive_time = 500
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.conf.lo.arp_ignore = 0
net.ipv4.conf.lo.arp_announce = 0
net.ipv4.conf.all.arp_ignore = 0
net.ipv4.conf.all.arp_announce = 0

幾個解釋:
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,表示關閉。
net.ipv4.tcp_fin_timeout = 30
#表示如果套接字由本端要求關閉,這個參數決定了它保持在FIN-WAIT-2狀態的時間。
net.ipv4.tcp_keepalive_time = 1200
#表示當keepalive起用的時候,TCP發送keepalive消息的頻度。缺省是2小時,改為20分鐘。
net.ipv4.ip_local_port_range = 1024    65000
#表示用於向外連接的端口範圍。缺省情況下很小:32768到61000,改為1024到65000。
net.ipv4.tcp_max_tw_buckets = 5000
#表示系統同時保持TIME_WAIT套接字的最大數量,如果超過這個數字,
#TIME_WAIT套接字將立刻被清除並打印警告信息。默認為180000,改為5000。
#對於Apache、Nginx等服務器,上幾行的參數可以很好地減少TIME_WAIT套接字數量,
#但是對於Squid,效果卻不大。此項參數可以控制TIME_WAIT套接字的最大數量,避免Squid服務器被大量的TIME_WAIT套接字拖死。
----------------------------------------------------------------------------
Linux內核通過/proc虛擬文件系統向用戶導出內核信息,用戶也可以通過/proc文件系統或通過sysctl命令動態配置內核。比如,如果我們想啟動NAT,除了加載模塊、配置防火牆外,還需要啟動內核轉發功能。我們有三種方法:

1. 直接寫/proc文件系統
# echo 1 > /proc/sys/net/ipv4/ip_forward

2. 利用sysctl命令
# sysctl -w net.ipv4.ip_forward=1
sysctl -a可以查看內核所有導出的變量

3. 編輯/etc/sysctl.conf
添加如下一行,這樣系統每次啟動後,該變量的值就是1
net.ipv4.ip_forward = 1

sysctl是procfs軟件中的命令,該軟件包還提供了w, ps, vmstat, pgrep, pkill, top, slabtop等命令。

sysctl配置與顯示在/proc/sys目錄中的內核參數.可以用sysctl來設置或重新設置聯網功能,如IP轉發、IP碎片去除以及源路由檢查等。用戶只需要編輯/etc/sysctl.conf文件,即可手工或自動執行由sysctl控制的功能。
    命令格式:
    sysctl [-n] [-e] -w variable=value
    sysctl [-n] [-e] -p <filename> (default /etc/sysctl.conf)
    sysctl [-n] [-e] -a
    常用參數的意義:
    -w   臨時改變某個指定參數的值,如
         sysctl -w net.ipv4.ip_forward=1
    -a   顯示所有的系統參數
    -p   從指定的文件加載系統參數,如不指定即從/etc/sysctl.conf中加載
    如果僅僅是想臨時改變某個系統參數的值,可以用兩種方法來實現,例如想啟用IP路由轉發功能:
    1) #echo 1 > /proc/sys/net/ipv4/ip_forward
    2) #sysctl -w net.ipv4.ip_forward=1
    以上兩種方法都可能立即開啟路由功能,但如果系統重啟,或執行了
     # service network restart
命令,所設置的值即會丟失,如果想永久保留配置,可以修改/etc/sysctl.conf文件
將 net.ipv4.ip_forward=0改為net.ipv4.ip_forward=1

sysctl是一個允許您改變正在運行中的Linux系統的接口。它包含一些 TCP/IP 堆棧和虛擬內存系統的高級選項, 這可以讓有經驗的管理員提高引人注目的系統性能。用sysctl可以讀取設置超過五百個系統變量。基於這點,sysctl(8) 提供兩個功能:讀取和修改系統設置。
查看所有可讀變量:
% sysctl -a
讀一個指定的變量,例如 kern.maxproc:
% sysctl kern.maxproc kern.maxproc: 1044
要設置一個指定的變量,直接用 variable=value 這樣的語法:
# sysctl kern.maxfiles=5000
kern.maxfiles: 2088 -> 5000
您可以使用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

我們常常在 Linux 的 /proc/sys 目錄下,手動設定一些 kernel 的參數或是直接 echo 特定的值給一個 proc下的虛擬檔案,俾利某些檔案之開啟,常見的例如設定開機時自動啟動 IP Forwarding:
echo 「1」 > /proc/sys/net/ipv4/ip_forward

其實,在 Linux 我們還可以用 sysctl command 便可以簡易的去檢視、設定或自動配置 特定的 kernel 設定。我們可以在系統提示符號下輸入「sysctl -a」,摘要如後:abi.defhandler_coff = 117440515

dev.raid.speed_limit_max = 100000

net.ipv4.conf.default.send_redirects = 1

net.ipv4.conf.default.secure_redirects = 1

net.ipv4.conf.default.accept_redirects = 1

net.ipv4.conf.default.mc_forwarding = 0

net.ipv4.neigh.lo.delay_first_probe_time = 5

net.ipv4.neigh.lo.base_reachable_time = 30

net.ipv4.icmp_ratelimit = 100

net.ipv4.inet_peer_gc_mintime = 10

net.ipv4.igmp_max_memberships = 20

net.ipv4.ip_no_pmtu_disc = 0

net.core.no_cong_thresh = 20

net.core.netdev_max_backlog = 300

net.core.rmem_default = 65535

net.core.wmem_max = 65535

vm.kswapd = 512 32 8

vm.overcommit_memory = 0

vm.bdflush = 30 64 64 256 500 3000 60 0 0

vm.freepages = 351 702 1053

kernel.sem = 250 32000 32 128

kernel.panic = 0

kernel.domainname = (none)

kernel.hostname = pc02.shinewave.com.tw

kernel.version = #1 Tue Oct 30 20:11:04 EST 2001

kernel.osrelease = 2.4.9-13

kernel.ostype = Linux

fs.dentry-state = 1611 969 45 0 0 0

fs.file-nr = 1121 73 8192

fs.inode-state = 1333 523 0 0 0 0 0 

從上述的語法我們大概可看出 sysctl 的表示法乃把目錄結構的「/」以「.」表示,一層一層的連結下去。當然以echo 特定的值給一個 proc下的虛擬檔案也是可以用 sysctl加以表示,例如:

#sysctl –w net.ipv4.ip_forward =」1」

或是直接在 /etc/sysctl.conf 增刪修改特定檔案的 0,1值亦可:

# Enables packet forwarding

net.ipv4.ip_forward = 1

# Enables source route verification

net.ipv4.conf.default.rp_filter = 1

# Disables the magic-sysrq key

kernel.sysrq = 0

當然如果考慮 reboot 後仍有效, 直接在 /etc/sysctl.conf 增刪修改特定檔案的 0,1值才可使之保留設定(以RedHat 為例,每次開機系統啟動後, init 會執行 /etc/rc.d/rc.sysinit,便會使用 /etc/sysctl.conf 的預設值去執行 sysctl)。

相關參考檔案:

/sbin/sysctl

/etc/sysctl.conf

sysctl 及sysctl.conf manpage

/usr/src/linux-x.y.z/Documentation/sysctl/*

/usr/share/doc/kernel-doc-x.y.z/sysctl/* (RedHat)
http://hi.baidu.com/caosicong/blog/item/0a592360d438cfda8db10d9b.html
http://hi.baidu.com/phpfamer/blog/item/932e276eb39c30de80cb4a3c.htmlsysctl配置與顯示在/proc/sys目錄中的內核參數.可以用sysctl來設置或重新設置聯網功能,如IP轉發、IP碎片去除以及源路由檢查等。用戶只需要編輯/etc/sysctl.conf文件,即可手工或自動執行由sysctl控制的功能。
    命令格式:
    sysctl [-n] [-e] -w variable=value
    sysctl [-n] [-e] -p <filename> (default /etc/sysctl.conf)
    sysctl [-n] [-e] -a
    常用參數的意義:
    -w   臨時改變某個指定參數的值,如
         sysctl -w net.ipv4.ip_forward=1
    -a   顯示所有的系統參數
    -p   從指定的文件加載系統參數,如不指定即從/etc/sysctl.conf中加載
    如果僅僅是想臨時改變某個系統參數的值,可以用兩種方法來實現,例如想啟用IP路由轉發功能:
    1) #echo 1 > /proc/sys/net/ipv4/ip_forward
    2) #sysctl -w net.ipv4.ip_forward=1
    以上兩種方法都可能立即開啟路由功能,但如果系統重啟,或執行了
     # service network restart
命令,所設置的值即會丟失,如果想永久保留配置,可以修改/etc/sysctl.conf文件
將 net.ipv4.ip_forward=0改為net.ipv4.ip_forward=1

Read more: Linux減少TIME_WAIT數量,內核sysctl命令參數調優 - Linux, Unix, FreeBSD - 電腦系統討論 - 頂客論壇 - 台灣forum,Taiwan論壇bbs http://www.dk101.com/Discuz/viewthread.php?tid=193657#ixzz1RJojCxTC 
(網址連回本文)

转载于:https://blog.51cto.com/goooogle/1435954

安裝linux後的內核調優相关推荐

  1. linux怎么运行quartus,如何安裝Linux版本的Quartus II

    如何安裝Linux版本的Quartus II 更新时间:2019-03-11 02:57 最满意答案 1.软件下载: 关于quartus ii软件,都可以从altera的官方网站下载到 对于linux ...

  2. linux 内核dmesg,linux內核調試kmsg,dmesg

    dmesg為我們多用,man dmesg告知dmesg用來顯示和管理kernel ring buffer,那麼後者為何物,以及dmesg顯示何類信息,是本文待闡述的內容. documentation/ ...

  3. Ubuntu 16.04 下修改免安裝版tomcat的內存大小

    要添加在 tomcat 的bin 下catalina.sh 里,位置cygwin=false前 .注意引号要带上,红色的为新添加的. # OS specific support.  $var _mus ...

  4. 簡單編譯內核 linux kernel gnu

    2019独角兽企业重金招聘Python工程师标准>>> 需要 make, gcc 下戴內核檔 http://www.kernel.org 成為 root 進入 /usr/src 解壓 ...

  5. (原創) Quartus II安裝新觀念:如何將Quartus II安裝在VirtualBox內? (SOC) (Quartus II) (VirtualBox)...

    Abstract VM並不是什麼新的觀念,透過VM我們可以在一個OS去執行其他OS,若我們將Quartus II也裝在VM中,將可解決一些長久以來Quartus II使用上所遇到的問題. Introd ...

  6. 【转】Linux內核驅動之GPIO子系統(一)GPIO的使用 _蝸牛

    原文网址:http://tc.chinawin.net/it/os/article-2512b.html 一 概述 Linux內核中gpio是最簡單,最常用的資源(和interrupt ,dma,ti ...

  7. linux安装定制添加输入,Arch Linux--定制自己的Linux操作系統(乙-國際化桌面安裝篇)...

    Arch Linux--定制自己的Linux操作系統 ----乙-國際化&桌面安裝篇 相信大家看了<甲-安裝篇>之後,Arch Linux系統已經可以正常運行了吧?不過,Arch ...

  8. 怎么下载linux sio镜像,在linux下如何安裝ftdi_sio USB轉串口驅動

    各位好,本人剛剛接觸Linux,現在要在Ubuntu下使用一個USB轉串口線,但是系統上沒有驅動,需要自己安裝,現在不知道應該如何安裝,想問一下應該如何安裝才對. 我之前試着make了一下,但是提示有 ...

  9. linux 安装java se,Linux 下安裝 Java SE Development Kit(JDK)並配置環境變量

    終端輸入以下命令: # 創建 JDK 目錄,-p 為創建多個目錄 $ sudo mkdir -p /opt/java # 將 JDK 解壓到指定目錄(看自己的習慣) $ sudo tar zxvf ~ ...

最新文章

  1. numpy中的ogrid
  2. 强烈推荐几个我常置顶阅读清华、哈工大的平台公众号!
  3. VTK:vtkAxisActor用法实战
  4. 比较文本差异的工具_Linux 开发的五大必备工具 | Linux 中国
  5. 工业互联网智能智造-工业企业大数据汇聚通道-产品设计
  6. eclipse插件开发(三) 简易4页签编辑器(源码 | 设计 | JS | CSS)配色修复JS多行注释问题
  7. 完成该操作所需的数据还不可使用_面试官:如何保障数据库和redis缓存的一致性...
  8. Cesium 已知两点,计算以一个点为圆心,将另一个点旋转一定度数后的新点的坐标/position_A绕position_B逆时针旋转angle度(角度)得到新点 function rotatedPo
  9. 数据库服务器协议,数据库搭载服务器 协议
  10. TM1620芯片使用
  11. php输入为空,ecshop搜索框内容为空提示用户输入内容
  12. 牛客多校9 B. Two Frogs (概率dp+前缀和优化)
  13. Eigen内存分配器aligned_allocator
  14. 全景制作平台,krpano全景图下载并快速关联漫游
  15. 主振型 matlab 振动,基于MATLAB语言的多自由度振动系统的固有频率及主振型计算分析...
  16. 信息化过程中如何把握信息安全管理的度?
  17. 华为笔记本linux驱动支持,华为笔记本电脑对Linux 5.5内核的支持得到改善
  18. 怎么用matlab剔除数据的异常值(3σ准则)
  19. mysql组件下载_MySQL数据库组件(MyDAC)
  20. HX5120NL 普思Pulse 网络变压器

热门文章

  1. Oracle与MySQL使用区别
  2. 2018年宝鸡市三检文科数学题目解答
  3. MDT2010-windows 7镜像捕获与模板镜像部署(二)(特别版)
  4. 程序员菜鸟到高手的11个阶段,你处于哪个阶段?
  5. TCP/IP协议详解内容总结(怒喷一口老血)
  6. linux中脚本后台执行的方法
  7. bzoj1724[Usaco2006 Nov]Fence Repair 切割木板*
  8. springmvc返回值、数据写到页面、表单提交、ajax、重定向
  9. JAVA Metrics 度量工具使用介绍1
  10. 100.于电脑右下角的小喇叭不见了的解决