zoukankan      html  css  js  c++  java
  • sysctl

    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可以读取设置超过五百个系统变量。基于这点,sysctl(8) 提供两个功能:读取和修改系统设置。
    查看所有可读变量:sysctl -a
    选取其中部分可读变量查看:sysctl -a | grep port

    经过使用该工具分析,在装有ubuntu系统的PC上,XBMC运行期间(只有dms和dmr,没有dmc),选项的改变不能影响到广播的接收或者发送,即系统该怎么运行还是怎么运行,在这个层次上不能截取广播包。

    下面是具体步骤:
    step 1.备份/etc/sysctl.conf文件
    step 2.修改/etc/sysctl.conf文件
    step 3.执行sysctl -p使你修改的参数生效。

    ===================
    下面是一些设置:
    1.
    Enable ignoring broadcasts request:
    net.ipv4.icmp_echo_ignore_broadcasts=1

    2.
    临时启用某个设置,使用命令sysctl -w ~
    例如:sysctl -w net.ipv4.ip_forward=1
    在系统重启,或者执行了service network restart后,所设置的值就会丢失。

    3.
    用于向外连接的端口范围:
    net.ipv4.ip_local_port_range =8000 65535
    客户端测试并发连接超过一定数量时候,出现端口号耗尽情况,尤其被大量TIME_WAIT占用。

    使用如下命令查看占用情况。其上限是net.ipv4.ip_local_port_range 所指定的区间内的端口总数。

    netstat -an | awk '/^tcp/ {++state[$6]} END   {for (key in state) print key," ",state[key]}'

    当发现到达了net.ipv4.ip_local_port_range 所指定的上限,除了使用虚ip增加端口使用数量外,

    可以对这个参数进行调优。设置参数

    sysctl net.ipv4.tcp_tw_reuse=1

    可以一定程度上缓解这种状况。注意有些网上给出的选项还有net.ipv4.tcp_tw_recycle=1。但这个参数会产生额外的麻烦

    在负载均衡的后端机中使用这个参数,会将负载均衡设备建立的多个连接请求当成同一个,从而使后建建立的连接断开。(未测试…)

    - somaxconn参数.

    定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数,该内核参数默认值一般是128,对于负载很大的服务程序来说大大的不够。一般会将它修改为2048或者更大。

    echo 2048 >   /proc/sys/net/core/somaxconn    但是这样系统重启后保存不了

    在/etc/sysctl.conf中添加如下

    net.core.somaxconn = 2048

    然后在终端中执行

    sysctl -p

  • 相关阅读:
    线程状态转换
    CyclicBarrier和CountDownLatch区别
    MySQL事务原理
    DownLoadManager[20530:228829] DiskImageCache: Could not resolve the absolute path of the old directory.
    App各种Icon及Launch image的尺寸和用途
    关于iPhone开发的一些建议
    iPhone6/6Plus下app状态栏内容放大问题处理
    PDF转jpg
    ios开发学习笔记
    nil和Nil和NULL的判断
  • 原文地址:https://www.cnblogs.com/amma/p/sysctl.html
Copyright © 2011-2022 走看看