zoukankan      html  css  js  c++  java
  • linux服务器初始化(防火墙、内核优化、时间同步、打开文件数)

    #!/bin/bash
    
    read -p 'enter the network segment for visiting the server:' ips
    
    # 关闭firewalld和selinux
    systemctl stop firewalld
    systemctl disable firewalld
    sed -i  'sSELINUX=enforcingSELINUX=disabledg' /etc/selinux/config
    setenforce 0
    
    # 配置时间同步(阿里源)
    

      yum install -y ntpdate
      rm -rf /etc/localtime

      ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

      ntpdate ntp1.aliyun.com

    
    
    # 配置iptables 防火墙
    rpm -qa iptables-services
    if [ $? -ne 0 ];then
        yum -y install iptables-services
    fi
    
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A INPUT -p all -s ips -j ACCEPT
    iptables -P INPUT DROP
    iptables-save > /etc/sysconfig/iptables
    systemctl enable iptables
    
    # 下载常用工具
    yun -y install vim wget
    
    # 设置系统时间及显示方式
    # tzselect
    #rm -rf /etc/localtime
    #ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    
    
    # 系统优化(system optimization)
    
    cat <<EOF > /etc/sysctl.conf
    #禁用包过滤功能 
    net.ipv4.ip_forward = 0  
    #启用源路由核查功能 
    net.ipv4.conf.default.rp_filter = 1  
    #禁用所有IP源路由 
    net.ipv4.conf.default.accept_source_route = 0  
    #使用sysrq组合键是了解系统目前运行情况,为安全起见设为0关闭
    kernel.sysrq = 0  
    #控制core文件的文件名是否添加pid作为扩展
    kernel.core_uses_pid = 1  
    #开启SYN Cookies,当出现SYN等待队列溢出时,启用cookies来处理
    net.ipv4.tcp_syncookies = 1  
    #每个消息队列的大小(单位:字节)限制
    kernel.msgmnb = 65536  
    #整个系统最大消息队列数量限制
    kernel.msgmax = 65536  
    #单个共享内存段的大小(单位:字节)限制,计算公式64G*1024*1024*1024(字节)
    kernel.shmmax = 68719476736  
    #所有内存大小(单位:页,1页 = 4Kb),计算公式16G*1024*1024*1024/4KB(页)
    kernel.shmall = 4294967296  
    #timewait的数量,默认是180000
    net.ipv4.tcp_max_tw_buckets = 6000  
    #开启有选择的应答
    net.ipv4.tcp_sack = 1  
    #支持更大的TCP窗口. 如果TCP窗口最大超过65535(64K), 必须设置该数值为1
    net.ipv4.tcp_window_scaling = 1  
    #TCP读buffer
    net.ipv4.tcp_rmem = 4096 131072 1048576
    #TCP写buffer
    net.ipv4.tcp_wmem = 4096 131072 1048576   
    #为TCP socket预留用于发送缓冲的内存默认值(单位:字节)
    net.core.wmem_default = 8388608
    #为TCP socket预留用于发送缓冲的内存最大值(单位:字节)
    net.core.wmem_max = 16777216  
    #为TCP socket预留用于接收缓冲的内存默认值(单位:字节)  
    net.core.rmem_default = 8388608
    #为TCP socket预留用于接收缓冲的内存最大值(单位:字节)
    net.core.rmem_max = 16777216
    #每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目
    net.core.netdev_max_backlog = 262144  
    #web应用中listen函数的backlog默认会给我们内核参数的net.core.somaxconn限制到128,而nginx定义的NGX_LISTEN_BACKLOG默认为511,所以有必要调整这个值
    net.core.somaxconn = 2048 
    #系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。这个限制仅仅是为了防止简单的DoS攻击,不能过分依靠它或者人为地减小这个值,更应该增加这个值(如果增加了内存之后)net.ipv4.tcp_max_orphans = 3276800  #记录的那些尚未收到客户端确认信息的连接请求的最大值。对于有128M内存的系统而言,缺省值是1024,小内存的系统则是128
    net.ipv4.tcp_max_syn_backlog = 262144  
    时间戳可以避免序列号的卷绕。一个1Gbps的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种“异常”的数据包。这里需要将其关掉
    net.ipv4.tcp_timestamps = 0  
    #为了打开对端的连接,内核需要发送一个SYN并附带一个回应前面一个SYN的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK包的数量
    net.ipv4.tcp_synack_retries = 1  
    #在内核放弃建立连接之前发送SYN包的数量
    net.ipv4.tcp_syn_retries = 1  
    #开启TCP连接中time_wait sockets的快速回收
    net.ipv4.tcp_tw_recycle = 1  
    #开启TCP连接复用功能,允许将time_wait sockets重新用于新的TCP连接(主要针对time_wait连接)
    net.ipv4.tcp_tw_reuse = 1  
    #1st低于此值,TCP没有内存压力,2nd进入内存压力阶段,3rdTCP拒绝分配socket(单位:内存页)
    net.ipv4.tcp_mem = 94500000 915000000 927000000   
    #如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。对端可以出错并永远不关闭连接,甚至意外当机。缺省值是60 秒。2.2 内核的通常值是180秒,你可以按这个设置,但要记住的是,即使你的机器是一个轻载的WEB服务器,也有因为大量的死套接字而内存溢出的风险,FIN- WAIT-2的危险性比FIN-WAIT-1要小,因为它最多只能吃掉1.5K内存,但是它们的生存期长些。
    net.ipv4.tcp_fin_timeout = 15  
    #表示当keepalive起用的时候,TCP发送keepalive消息的频度(单位:秒)
    net.ipv4.tcp_keepalive_time = 30  
    #对外连接端口范围
    net.ipv4.ip_local_port_range = 2048 65000
    #表示文件句柄的最大数量
    fs.file-max = 102400
    EOF
    #使配置文件生效
    sysctl –p 
    
    # 设置进程最大可打开的文件数
    cat <<EOF >> //etc/security/limits.conf
    # 用户或组    硬限制或软限制    限制的项目    限制的值
        *         soft             nofile         100000
        *         hard             nofile         100000
        * soft noproc 110000
        * hard noproc 110000
    EOF # ulimit -a # 查看所有属性值 ulimt -Hn 100000 # 设置硬限制(临时规则) ulimt -Sn 100000 # 设置软限制(临时规则)

    # 解决time_wait 过多

    net.ipv4.tcp_max_tw_buckets = 5000
    net.ipv4.tcp_max_syn_backlog = 8192
    net.ipv4.tcp_keepalive_time = 1200
    net.ipv4.ip_local_port_range = 1024 65000
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_syncookies = 1
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_fin_timeout = 30
  • 相关阅读:
    Java RunTime Environment (JRE) or Java Development Kit (JDK) must be available in order to run Eclipse. ......
    UVA 1597 Searching the Web
    UVA 1596 Bug Hunt
    UVA 230 Borrowers
    UVA 221 Urban Elevations
    UVA 814 The Letter Carrier's Rounds
    UVA 207 PGA Tour Prize Money
    UVA 1592 Database
    UVA 540 Team Queue
    UVA 12096 The SetStack Computer
  • 原文地址:https://www.cnblogs.com/ray-mmss/p/11150540.html
Copyright © 2011-2022 走看看