• 高并发中的部分优化


    1、关闭iptables 阻止内核加载iptables

    2、系统对对用户打开文件数的软、硬限制
    vim /etc/security/limits.conf
    softe nofile 65535
    hard nofile 65535

    vim /etc/pam.d/login
    sessionrequired /lib/security/pam_limits.so
    #告诉linux在用户完成登录后,调用整个模块来设置系统对用户的可开文件数限制,这个模块会从limits.conf读取配置

    cat /proc/sys/fs/file-max
    #系统级的硬限制,所有 用户级的打开文件数不应该超过这个限制,修改方法
    sed -i "s/fs.file-max=*/fs.file-max=131072/g" /etc/sysctl.conf

    ulimit -n
    #如果/etc/profile 这个用户登录脚本有限制,需要打开这个文件修改这个限制

    3、内核tcp 参数优化
    netstat -n|awk "/^tcp/{++s{$NF}END{for (i in s) print i,s[i]}"
    针对time_wait 优化,调整/etc/systcl.conf
    net.ipv4.tcp_syncookies= 1 #syn队列溢出时,启用cookies 防治少量syn
    net.ipv4.tcp_tw_reuse= 1 #开启重用,timewait状态被重用于新tcp链接
    net.ipv4.tcp_tw_recycle= 1 #timewait开启快速回收
    net.ipv4.tcp_fin_timeout= 30 #修改timeout默认时间,应对fin_wait_2状态时对端出错无法关闭

    针对大流量机器开启下面参数
    net.ipv4.tcp_keepalive_time= 1200 #tcp发送keepalive消息频度,20分钟
    net.ipv4.ip_local_port_range= 1024 65535 #提供对外连接的端口范围
    net.ipv4.tcp_max_syn_backlog= 8192 #syn队列长度,默认是1024
    net.ipv4.tcp_max_tw_buckets= 5000 #系统同时保持timewait的最大数量,若超量立刻被清楚
    net.ipv4.tcp_max_syn_backlog= 65535 #发出syn后,记录尚未收到客户ack的请求的最大值
    net.core.netdev_max_backlog= 32768 #网络接口收数据包的速度比内核处理速度快时,允许加入队列的最大数
    net.core.somaxconn= 32768
    net.core.wmen_default= 8388608
    net.core.rmen_default= 8388608
    net.core.rmen_max= 16777216 #最大socket读取buffer
    net.core.wmen_max= 16777216 #最大socket写入buffer
    net.ipv4.tcp_timestsmps= 0 #时间戳用来避免数据包序列号卷绕,关闭后内核接受 异常的数据包
    net.ipv4.tcp_synack_retries= 2 #syn+ack(第二次握手)的重发次数,2次后内核放弃该链接
    net.ipv4.tcp_syn_retries= 2 #重发syn的数量,2次后放弃该链接
    net.ipv4.tcp_wmen= 8192 43660 873200 #tcp写buffer 依次是 无压力 有压力 tcp拒绝分配socket
    net.ipv4.tcp_rmen= 32768 43660 873200 #tcp读buffer

    4、io时间分配机制
    tcp高并发时,非阻塞式同步io(epoll机制)或者一部io(AIO机制)

  • 相关阅读:
    Golang的跨平台编译程序
    PySide教程:Clo“.NET研究”se 狼人:
    PyS“.NET研究”ide QtCore.Signal帮助手册 狼人:
    PySide教程:“.NET研究”第一个PySide应用 狼人:
    关“.NET研究”于Android的一些设计 狼人:
    资深设计师Tony Ventrice解析手机游戏开“.NET研究”发的四个层次 狼人:
    移动开发多平台代码共享“.NET研究” 狼人:
    关于做Andr“.NET研究”oid+J2ee系统集成开发的一点心得 狼人:
    “.NET研究”【Android开发教程】一、基础概念 狼人:
    “.NET研究”如何发布你的Android应用程序 狼人:
  • 原文地址:https://www.cnblogs.com/plefan/p/13688394.html
Copyright © 2020-2023  润新知