精华内容
下载资源
问答
  • 大多数MySQL运行在Linux操作系统之上,Linux内核参数对于MySQL的性能有重要的影响,下面将介绍一些最重要的Linux内核参数调优,以便让Linux上运行的MySQL整体性能更高。1. Swappinessswappiness内核参数将在内存不够...

    大多数MySQL运行在Linux操作系统之上,Linux内核参数对于MySQL的性能有重要的影响,下面将介绍一些最重要的Linux内核参数调优,以便让Linux上运行的MySQL整体性能更高。

    1. Swappiness

    swappiness内核参数将在内存不够用的条件下,决定内存换页的策略。该参数取值范围0~100,取值越大,内核会越积极地使用swap分区,设置为0表示最大限度使用物理内存,对于数据库应用,建议该参数设置为0。

    查看当前的swappiness值:

    cat /proc/sys/vm/swappiness

    设置swappiness值:

    echo 0 > /proc/sys/vm/swappiness

    持久化到配置文件:

    /etc/sysctl.conf

    vm.swappiness=0

    2. I/O Scheduler

    数据库对I/O性能要求高,存储数据、读取数据都需要大量消耗I/O,因此磁盘I/O调度策略是数据库需要关注的重点内核参数。

    目前 Linux 上有如下几种 I/O 调度算法:

    noop(No Operation),noop调度算法是内核中最简单的IO调度算法。noop调度算法也叫作电梯调度算法,它将IO请求放入到一个FIFO队列中,然后逐个执行这些IO请求,当然对于一些在磁盘上连续的IO请求,noop算法会适当做一些合并。这个调度算法特别适合那些不希望调度器重新组织IO请求顺序的应用。

    cfq(Completely Fair Scheduler ),完全公平调度器,它试图为竞争块设备使用权的所有进程分配一个请求队列和一个时间片,在调度器分配给进程的时间片内,进程可以将其读写请求发送给底层块设备,当进程的时间片消耗完,进程的请求队列将被挂起,等待调度,进程平均使用IO带宽。

    deadline,deadline算法的核心在于保证每个IO请求在一定的时间内一定要被服务到,以此来避免某个请求饥饿。

    anticipatory,启发式调度,类似 deadline 算法,但是引入预测机制提高性能。

    CentOS 7.x 默认支持的是deadline算法,CentOS 6.x 下默认支持的cfq算法,而一般我们会在SSD固态盘硬盘环境中使用noop算法。

    查看I/O Scheduler值:

    cat /sys/block/sdb/queue/scheduler

    设置I/O Scheduler值:

    sudo echo noop > /sys/block/sdb/queue/scheduler

    3. TCP

    3.1 tcp接受连接设置

    net.core.netdev_max_backlog = 65535,当网络接收速率大于内核处理速率时,允许发送到队列中的包数目。

    net.ipv4.tcp_max_syn_backlog = 65535,表示SYN队列长度,默认1024,改成65535,可以容纳更多等待连接的网络连接数。

    net.core.somaxconn = 65535,每个端口监听队列的最大长度。

    3.2 tcp失效连接资源回收

    对于tcp失效连接占用系统资源的优化,加快资源回收效率:

    net.ipv4.tcp_keepalive_time = 30,表示当keepalive启用的时候,TCP发送keepalive消息的频度,默认为2小时,改为30秒。

    net.ipv4.tcp_keepalive_intvl = 3,tcp未获得响应时重发间隔。

    net.ipv4.tcp_keepalive_probes = 3,tcp未获得响应时重发数量。

    控制tcp连接等待时间,加快tcp链接回收:

    net.ipv4.tcp_fin_timeout = 10,如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。

    net.ipv4.tcp_tw_reuse = 1,开启socket重用,允许将TIME-WAIT socket重新用于新的TCP连接,默认为0,表示关闭。

    net.ipv4.tcp_tw_recycle = 1,开启TCP连接中TIME-WAIT socket的快速回收,默认为0,表示关闭。

    3.3 tcp接受连接缓冲区大小

    控制tcp接受缓冲区的大小,设置大一些比较好:

    net.core.wmem_default = 8388608

    net.core.wmem_max = 16777216

    net.core.rmem_default = 8388608

    net.core.rmem_max = 16777216

    4. 最大文件句柄

    操作系统最大文件句柄数限制:

    vim /etc/security/limits.conf

    soft nofile 65535

    hard nofile 65535

    5. CPU Governor

    大多数现代处理器都能在许多不同的时钟频率和电压配置下工作。一般来说,时钟频率越高,电压越高,CPU可以执行的指令就越多。同样,时钟频率和电压越高,消耗的能量越多。因此,在CPU容量和处理器消耗的功率之间有一个权衡。

    使用以下命令检查正在使用的驱动程序和调控器:

    analyzing CPU 0:

    driver: intel_pstate

    CPUs which run at the same hardware frequency: 0

    CPUs which need to have their frequency coordinated by software: 0

    maximum transition latency: Cannot determine or is not supported.

    hardware limits: 1.20 GHz - 3.20 GHz

    available cpufreq governors: performance powersave

    current policy: frequency should be within 1.20 GHz and 3.20 GHz.

    The governor "powersave" may decide which speed to use

    within this range.

    current CPU frequency: 2.40 GHz (asserted by call to hardware)

    boost state support:

    Supported: no

    Active: no

    查看CPU加速设置:

    cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

    设置CPU加速策略:

    echo “performance” | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

    6. NUMA

    NUMA表示Non-uniform memory access,带有NUMA功能,SMP系统的处理器访问它自己的本地内存比非本地内存更快。这可能会导致内存换出(swap),从而对数据库性能产生负面影响。当分配给InnoDB缓冲池的内存大于可用内存的数量,并且选择了默认内存分配策略时,可能会发生内存交换(swap)。启用NUMA的服务器将报告CPU节点之间的不同节点距离(distances)。

    通过如下命令查看:

    numactl –hardware

    不管numactl显示的跨节点间的距离是多少,应当开启MySQL参数innodb_numa_interleave,来确保内存可以交错使用。

    展开全文
  • LINUX 内核参数调优

    2018-08-16 13:47:27
    LINUX 内核参数调优  
    展开全文
  • linux 内核参数调优

    2019-09-13 17:12:16
    Linux 内核参数调优, 以下参数是结合生产环境给出的, 具有一定的参考价值, 当然还有很多没有涉及到参数, 希望大家多多提意见, 这里已内存24G, CPU为24核的机器作为参考 Kernel 篇 kernel.panic = 10 # 当内核...

    Linux 内核参数调优, 以下参数是结合生产环境给出的, 具有一定的参考价值, 当然还有很多没有涉及到参数, 希望大家多多提意见, 这里已内存24G, CPU为24核的机器作为参考


    Kernel 篇

    kernel.panic = 10

    # 当内核出现致命错误时, system 将会在10s后reboot

    kernel.panic_on_oops = 10

    kernel.sysrq=0

    # 不允许使用 Magic SysRq key, 该键可以允许一些直接对内核的操作, 所以禁掉

    kernel.ctrl-alt-del=1

    # 当值>0,system 马上reboot,当值=0,系统会发送给 init进程信号,进行平滑重启 

    kernel.core_pattern=/dev/null

    内核错误重定向路径

    kernel.shmmax = 12661555200

    #单个段允许使用的大小, 根据实际场景设定
    kernel.shmall = 3091200

    #全部允许使用的共享内存大小, 单位为 4K, 实际大小为: 4K*3091200 = 12 G, 该参数应大于 kernel.shmmax 

    kernel.msgmnb = 65536

    #控制消息队列的最大值

    kernel.msgmax = 65536

    #控制消息的最大值, 以字节为单位

    fs.file-max = 819200

    系统所有进程一共可以打开的文件数量,同时还需要设置当前shell以及由它启动的进程的资源限制。这个需要用ulimit来设置, 系统默认的ulimit对文件打开数量的限制是1024,修改/etc/security/limits.conf并加入以下配置,永久生效

    * soft nofile 65535 
    * hard nofile 65535


    Swap 篇

    vm.swappiness = 20
    vm.dirty_ratio = 60

    控制一个在产生磁盘写操作的进程开始写出脏数据到内存缓冲区。缓冲区的值大小是系统内存的百分比。增大会使用更多系统内存用于磁盘写缓冲,可以提高系统的写性能。当需要持续、恒定的写入场合时,应该降低该数值。
    vm.dirty_background_ratio = 5

    # 这个参数指定了当文件系统缓存脏页数量达到系统内存百分之多少时(如5%)就会触发pdflush/flush/kdmflush等后台回写进程运行,将一定缓存的脏页异步地刷入外存;
    vm.min_free_kbytes = 1236480

    这个参数值用来强制linux虚拟内存保留最小值的空闲。

    其他vm 参数设置

    (1)vm.overcommit_memory

    默认值为:0

    内核文档里得知,该参数有三个值,分别是:

    0:当用户空间请求更多的的内存时,内核尝试估算出剩余可用的内存。

    1:当设这个参数值为1时,内核允许超量使用内存直到用完为止,主要用于科学计算

    2:当设这个参数值为2时,内核会使用一个决不过量使用内存的算法,即系统整个内存地址空间不能超过swap+50%的RAM值,50%参数的设定是在overcommit_ratio中设定。

    (2)vm.overcommit_ratio

    默认值为:50

    这个参数值只有在vm.overcommit_memory=2的情况下,这个参数才会生效。

    (3)vm.page-cluster

    默认值为:3

    这个参数用来控制VM的虚拟内存的,读取大量的page,同时发生page错误时,linux VM子系统为了避免过多的磁盘寻址。读取大量的page依赖于系统的内存。内核 一次读取page的数量等于2的page-cluster值的次方即2^page-cluster。当设的值超过2的5次方即2^5,它不会被swap所检测到。因为swap的数据page最大为2的5次方即32-page。

    (4)vm.min_free_kbytes

    默认值 :3519

    这个参数值用来强制linux虚拟内存保留最小值的空闲。

    (5)vm.drop_caches

    默认值 :0

    设置这个参数的值会让内核清理内存中的caches、denties、inodes,从而释放更多的内存。

    有三个值可以设置,每设一个值都会引发内核释放不同的内容:

    1:释放pagecache

    2:释放denties、inodes

    3:释放pagecache、denties、inodes

    由于这是一个非破坏性操作而且脏对象不会被释放,因此应当先执行”sync“后再设置这个参数。

    (6)vm.dirty_writeback_centisecs

    默认值:499

    这个参数会触发pdflush回写进程定期唤醒并将old数据写到磁盘。每次的唤醒的间隔,是以数字100算做1秒。

    如果将这项值设为500就相当5秒唤醒pdflush进程。

    如果将这项值设为0就表示完全禁止定期回写数据。

    (7)vm.dirty_ratio

    默认值:40

    参数意义:控制一个在产生磁盘写操作的进程开始写出脏数据到内存缓冲区。缓冲区的值大小是系统内存的百分比。增大会使用更多系统内存用于磁盘写缓冲,可以提高系统的写性能。当需要持续、恒定的写入场合时,应该降低该数值。

    (8)vm.dirty_expire_centisecs

    默认值:2999

    参数意义:用来指定内存中数据是多长时间才算脏(dirty)数据。指定的值是按100算做一秒计算。只有当超过这个值后,才会触发内核进程pdflush将dirty数据写到磁盘。

    (9)vm.dirty_background_ratio

    默认值 :10

    参数意义:控制pdflush后台回写进程开始写出脏数据到系统内存缓冲区。缓冲区的值大小是系统内存的百分比。增大会使用更多系统内存用于磁盘写缓冲,可以提高系统的写性能。当需要持续、恒定的写入场合时,应该降低该数值。

    (10)vm.vfs_cache_pressure

    默认值:100

    参数意义:控制内核回收再利用用于缓存目录与inode对象的内存的趁势。

    默认值设为100表示内核以平等的速度去考虑pagecache和swapcache的回收再利用。

    减小它,会触发内核保持目录与inodes的缓存内存。

    增大它,会触发内核回收再利用目录与inodes的缓存内存。

    (11)vm.panic_on_oom

    默认值 :0

    参数意义:当超出内存时,是否开启内核崩溃特性。

    当设为1时,表示当发生超出内存时,内核会panic

    当设为0时,表示当发生超出内存时,内核会kill掉一些空闲进程从而不让系统内核崩溃而继续运行,通常也称它为oom_killer

    因此一般用它的默认值即可


    网络篇

    net.ipv4.tcp_syncookies = 1

    #当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;

    net.ipv4.tcp_synack_retries = 2

    对于远端的连接请求 SYN, 内核会发送 SYN ACK 数据报文, 以确认收到上一个SYN 连接请求包, 这是所谓三次握手机制的第二个步骤, 这里决定内核在放弃连接之前所送出的 SYN+ACK数目, 不应大于 255

    net.ipv4.ip_forward = 0

    # 是否开启包转发, 做路由时可以设置为1

    net.ipv4.tcp_dsack = 1

    #该文件表示是否允许TCP发送“两个完全相同”的SACK。
    net.ipv4.tcp_sack = 1

    #该文件表示是否启用有选择的应答(Selective Acknowledgment),这可以通过有选择地应答乱序接收到的报文来提高性能(这样可以让发送者只发送丢失的报文段);(对于广域网通信来说)这个选项应该启用,但是这会增加对 CPU 的占用。
    net.ipv4.tcp_fack = 1

     该文件表示是否打开FACK拥塞避免和快速重传功能, 当tcp_sack 设置为0时, 这个值即使设置为1也无效


    net.ipv4.conf.all.forwarding = 0
    net.ipv4.conf.default.forwarding = 0
    net.ipv4.conf.all.send_redirects = 0
    net.ipv4.conf.default.send_redirects = 0
    net.ipv4.conf.all.accept_source_route = 0
    net.ipv4.conf.default.accept_source_route = 0


    net.ipv4.conf.all.rp_filter = 1
    net.ipv4.conf.default.rp_filter = 1


    net.ipv4.conf.all.accept_redirects = 0
    net.ipv4.conf.default.accept_redirects = 0

    如果主机所在的网段中有两个路由器,你将其中一个设置成了缺省网关,但是该网关在收到你的ip包时发现该ip包必须经过另外一个路由器,这时这个路由器就会给你发一个所谓的“重定向”icmp包,告诉将ip包转发到另外一个路由器。参数值为布尔值,1表示接收这类重定向icmp 信息,0表示忽略。在充当路由器的linux主机上缺省值为0,在一般的linux主机上缺省值为1。建议将其改为0以消除安全性隐患。


    net.ipv4.conf.all.secure_redirects = 0

    # 其实所谓的“安全重定向”就是只接受来自网关的“重定向”icmp包。该参数就是用来设置“安全重定向”功能的。参数值为布尔值,1表示启用,0表示禁止,缺省值为启用。


    net.ipv4.conf.default.secure_redirects = 0
    net.ipv4.conf.all.bootp_relay = 0
    net.ipv4.conf.all.proxy_arp = 0
    net.ipv4.icmp_echo_ignore_broadcasts = 1
    net.ipv4.icmp_ignore_bogus_error_responses = 1


    net.ipv4.tcp_rfc1337 = 1
    net.ipv4.tcp_congestion_control = cubic
    net.ipv4.tcp_ecn = 2

    该文件表示是否打开TCP的直接拥塞通告功能。


    net.ipv4.tcp_reordering = 3
    net.ipv4.tcp_retries2 = 8
    net.ipv4.tcp_retries1 = 3
    net.ipv4.tcp_no_metrics_save = 1
    net.ipv4.tcp_slow_start_after_idle = 0


    net.ipv4.tcp_fin_timeout = 10

    修改系統默认的 TIMEOUT 时间。


    net.ipv4.tcp_keepalive_time = 300

    #表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为5分钟

    net.ipv4.tcp_keepalive_probes = 5

    #tcp 发送keepalive探测以确定该连接已经断开的次数
    net.ipv4.tcp_keepalive_intvl = 15

    # 探测消息发送的频率 乘以 tcp_keepalive_probes 就得到对于从开始探测以来没有响应的连接杀除时间.默认值是75秒,也就是没有活动的连接将在11分钟以后被丢弃


    net.ipv4.ip_local_port_range = 4096 65535

    # 建立连接的端口范围,这里不要将最低值设的太低,否则可能会占用掉正常的端口

    net.core.netdev_max_backlog = 8192

    # 网卡最大队列数, 万兆网卡可以增大该值


    net.ipv4.tcp_max_syn_backlog = 4096

    表示SYN队列的长度,默认为1024,加大队列长度为4096,可以容纳更多等待连接的网络连接数。


    net.core.somaxconn = 65535

    # 系统可分配给单进程的最大队列数


    net.ipv4.tcp_window_scaling = 1

    该文件表示设置tcp/ip会话的滑动窗口大小是否可变。参数值为布尔值,为1时表示可变,为0时表示不可变。tcp/ip通常使用的窗口最大可达到65535 字节,对于高速网络,该值可能太小,这时候如果启用了该功能,可以使tcp/ip滑动窗口大小增大数个数量级,从而提高数据传输的能力。该值影响 tcp_rmem 大小调节     


    net.ipv4.tcp_adv_win_scale = 2
    net.ipv4.tcp_rmem = 8192 131072 16777216

    该文件包含3个整数值,分别是:min,default,max

    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.core.rmem_default = 131072
    net.core.rmem_max = 16777216
    net.ipv4.tcp_wmem = 8192 131072 16777216
    net.core.wmem_default = 131072

     该文件包含3个整数值,分别是:min,default,max

    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.core.wmem_max = 16777216
    net.core.optmem_max = 65536


    net.ipv4.tcp_timestamps = 1

    # 开启时间戳标签, 在公网服务器上建议关掉, 因为会导致 NAT网络用户请求失败, 同时这个值影响 tcp_tw_recycle 和 tcp_tw_reuse 

    net.ipv4.tcp_tw_recycle = 1

    # 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。

    net.ipv4.tcp_tw_reuse = 1

    # 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭,在公网服务上,建议将tw_reuse打开

    net.ipv4.tcp_max_tw_buckets = 20000

    表示系统同时保持TIME_WAIT的最大数量,如果超过这个数字,TIME_WAIT将立刻被清除并打印警告信息。默 认为180000,改为20000。对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于 Squid,效果却不大。此项参数可以控制TIME_WAIT的最大数量,避免Squid服务器被大量的TIME_WAIT拖死. 但是在打开 tcp_tw_reuse 时,可以增加tcp_tw_buckets 数量,压测显示,在同一个服务上设置tcp_max_tw_buckets=120000, tw_reuse=1,性能比tcp_max_tw_buckets=20000, tw_reuse=0 并发提高了一倍

    net.ipv4.udp_rmem_min = 16384
    net.ipv4.udp_wmem_min = 16384


    # arp 表设置

    net.ipv4.neigh.default.gc_thresh3 = 2048
    net.ipv4.neigh.default.gc_thresh2 = 1024
    net.ipv4.neigh.default.gc_thresh1 = 128
    net.ipv4.neigh.default.gc_interval = 120
    net.ipv4.neigh.default.proxy_qlen = 96
    net.ipv4.neigh.default.unres_qlen = 6
    net.ipv4.route.flush = 1
    net.ipv4.rt_cache_rebuild_count = -1

    #如果系统内核打印Neighbour table overflow, 然后查看本机arp 缓存列表条数 arp -an |wc -l 

    如果该值已经接近或大于1024 (系统默认1024),那么可以加大arp列表值


    # 链路跟踪表设置

    net.ipv4.netfilter.ip_conntrack_max = 10000000
    net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 360
    net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 60
    net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv = 13
    net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 60

    #链路跟踪表作用和影响

    Linux内核的ip_conntrack模块会记录每一个tcp数据包的estiablished,timewait,syn_recv等状态。并且默认的timeout是432000秒(五天时间)。系统所能记录的ip_conntrack也是有限的,如果超过了这个限度,就会出现内核级错误“ip_conntrack: table full, dropping packet”,其结果就是无法再有任何的网络连接了。

    如果启用了链路跟踪表,那么需要修改它的最大跟踪数以及链路跟踪超时时间,或者干脆卸载掉 ip_conntack 模块,但是需要注意确保iptables 规则里没有应用-m state 状态, 否则卸载失败

    net.ipv6.conf.all.disable_ipv6 = 1
    net.ipv6.conf.default.disable_ipv6 = 1


    参考连接 ( 涵盖几乎所有的内核参数) 

    http://www.cyberciti.biz/files/linux-kernel/Documentation/networking/ip-sysctl.txt

    转载于:https://my.oschina.net/u/1398613/blog/546629

    展开全文
  • 内核参数调优

    2012-12-18 08:57:45
    内核: net.ipv4.conf.lo.arp_ignore=1 net.ipv4.conf.lo.arp_announce=2 net.ipv4.conf.all.arp_ignore=1 net.ipv4.conf.all.arp_announce=2   net.core.rmem_default = 65535 ...

    内核:

    net.ipv4.conf.lo.arp_ignore=1

    net.ipv4.conf.lo.arp_announce=2

    net.ipv4.conf.all.arp_ignore=1

    net.ipv4.conf.all.arp_announce=2

     

    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

    net.ipv4.tcp_max_syn_backlog = 8192

    net.ipv4.tcp_max_tw_buckets = 360000

    net.ipv4.tcp_keepalive_time = 1800

     

    net.ipv4.tcp_tw_reuse = 1

    net.ipv4.tcp_tw_recycle = 1

     

    這是我們的 /etc/sysctl.conf 的設定

     

    kernel.sysrq = 0

    kernel.core_uses_pid = 1

    kernel.msgmnb = 65536

    kernel.msgmax = 65536

    kernel.shmmax = 68719476736

    kernel.shmall = 4294967296

    net.ipv4.ip_forward = 1

    net.ipv4.conf.default.rp_filter = 1

    net.ipv4.conf.default.accept_source_route = 0

    net.ipv4.tcp_syncookies = 1

    net.ipv4.tcp_synack_retries = 3

    net.ipv4.tcp_syn_retries = 3

    net.ipv4.conf.lo.arp_ignore = 1

    net.ipv4.conf.lo.arp_announce = 2

    net.ipv4.conf.all.arp_ignore = 1

    net.ipv4.conf.all.arp_announce = 2

    net.ipv4.tcp_wmem = 4096 65535 8388608

    net.ipv4.tcp_mem = 8388608 8388608 8388608

    net.core.optmem_max = 40960

    net.ipv4.tcp_max_syn_backlog = 8192

    net.ipv4.tcp_max_tw_buckets = 8000

    net.ipv4.tcp_keepalive_time = 1200

    net.ipv4.tcp_fin_timeout = 30

    net.ipv4.tcp_tw_reuse = 1

    net.ipv4.tcp_tw_recycle = 1

    net.ipv4.ip_local_port_range = 8200 65000

     

     

    #sed -i 's#net.ipv4.ip_forward = 0#net.ipv4.ip_forward = 1#g' /etc/sysctl.conf

    sysctl  -p

     

    ====================================================

    openfile:

    然後 /etc/security/limits.conf  我有設定

     

    *                -       nofile          65535

    *                soft    nofile          51200

    *                hard    nofile          51200

     

    vi /etc/rc.local

    echo "ulimit -SHn 51200" >>/etc/rc.local

     

     

     

    echo "*                -       nofile           65535" >>/etc/security/limits.conf

    echo "*                soft    nofile          102400" >>/etc/security/limits.conf

    echo "*                hard    nofile          102400" >>/etc/security/limits.conf

     

    =============================================

    ###################

    所有 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

    ####################

    展开全文
  • FreeBSD系统优化部分内核参数调优中文解释。#最大的接受TCP缓冲区空间net.inet.tcp.recvspace=65536#最大的接受UDP缓冲区大小net.inet.udp.sendspace=65535#最大的发送UDP数据缓冲区大小  #最大的接受TCP缓冲区空间...
  • linux IO 内核参数调优

    2017-10-11 21:23:48
    http://blog.sina.com.cn/s/blog_54adf6c50102wdlp.html http://www.cnblogs.com/zengkefu/p/5634853.html ... IO 内核参数调优 之 原理和参数介绍 )上一章节讲述了IO内核调优介个重要参数参数。 总结可
  • 文章目录Linux云计算架构-CPU、IO、网络、内核参数调优1. CPU调优2. IO调优3. 网络调优4. 内核参数调优 Linux云计算架构-CPU、IO、网络、内核参数调优 1. CPU调优 ①进程优先级调整:使用top命令查看优先级,NI列...
  • linux IO 内核参数调优 之 参数调节和场景分析
  • Linux内核参数调优

    2015-01-05 17:18:05
    Linux内核参数调优 ################### 所有rfc相关的选项都是默认启用的,因此网上的那些还自己写rfc支持的都可以扔掉了 ###############################...
  • 请记住,这里只是笔者在内网进行TCP内核参数调优的经验,仅供参考。同时,笔者还会在余下的博客里面详细解释了为什么要进行这些调优! 序号 内核参数 值 备注 1.1 /proc/sys/net/ipv4/tcp_max_syn_backlog 2048 1.2
  • Linux 下 系统参数调优经验之谈,非常给力的!调优系统必备
  • Linux内核参数调优 by:授客 QQ:1033553122 关于调优的建议: 1、出错时,可以查看操作系统日志,可能会找到一些有用的信息 2、尽量不要“批量”修改内核参数,笔者就曾这么干过,结果“调优”后,性能反而下降...
  • (linux IO 内核参数调优 之 原理和参数介绍)上一章节讲述了IO内核调优介个重要参数参数。 总结可知cached中的脏数据满足如下几个条件中一个或者多个的时候就会被pdflush刷新到磁盘: (1)数据存在的时间超过...
  • 如何对NginxIngress进行内核参数调优,设置内核参数的方法可以用initContainers的方式,后面会有示例。 调大连接队列的大小 进程监视的套接字的连接队列的最大大小受内核参数net.core.somaxconn的限制。在高并发...
  • Linux作为一个强大的操作系统,提供了一系列内核参数...请记住,这里只是笔者在内网进行TCP内核参数调优的经验,仅供参考。同时,笔者还会在余下的博客里面详细解释了为什么要进行这些调优!序号内核参数值备注1.1/...
  • Linux作为一个强大的操作系统,提供了一系列内核参数供我们...请记住,这里只是笔者在内网进行TCP内核参数调优的经验,仅供参考。同时,笔者还会在余下的博客里面详细解释了为什么要进行这些调优!序号内核参数值备...
  • Ubuntu16.04内核参数调优

    千次阅读 2019-06-02 15:09:50
    在window上只有65535个端口,在使用IDEA测试连接数到16000左右就占用光了,即使后来经过tcp参数调优后有60000出头的连接数。见到网上使用linux测试连接数的居多,就在电脑上装了个Ubuntu16.04的虚拟机尝试。 二...
  • centos内核参数调优

    2020-02-05 20:31:24
    # 现在大多数网卡都具有LRO/GRO功能,即网卡收包时将同一流的小包合并成大包 (tcpdump抓包可以看到>MTU 1500bytes的数据包)交给 内核协议栈;LVS内核模块在处理>MTU的数据包时,会丢弃; # 因此,如果我们用LVS来...
  • 网卡内核参数调优

    2017-12-10 08:53:57
    例如, 下面是最重要的一些调优参数, 后面是它们的含义: 1. /proc/sys/net/core/rmem_max — 最大的TCP数据接收缓冲 2. /proc/sys/net/core/wmem_max — 最大的TCP数据发送缓冲 3. /proc/sys/...
  • linux内核参数调优

    2019-01-31 11:54:04
    web 应用中listen 函数的backlog 默认会给我们内核参数的net.core.somaxconn 限制到128,而nginx 定义的NGX_LISTEN_BACKLOG 默认为511,所以有必要调整这个值 net.core.netdev_max_backlog = 262144 当网卡...
  • NFS 内核参数调优

    2018-08-01 15:07:53
    cat >>/etc/sysctl.conf<<EOFnet.core.wmem_default = 8388608 【发送套接字缓冲区大小的默认值】 net.core.rmem_default = 8388608 【接收套接字缓冲区大小的默认值】 net.core.rmem_max = 16777216 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 799
精华内容 319
关键字:

内核参数调优