高并发Linux服务器的常用配置
来源:互联网 发布:宋岳庭 知乎 编辑:程序博客网 时间:2024/05/05 11:40
查看Linux系统级的最大打开文件数限制
cat /proc/sys/fs/file-max
Linux系统级硬限制,所有用户级的打开文件数限制都不应超过这个数值
修改用户进程可打开文件数限制
fs.file-max = 999999 # 进程可以同时打开的最大句柄数
允许将TIME-WAIT sockets重新用于新的TCP连接
net.ipv4.tcp_tw_reuse = 1 # 重用 TIME_WAIT 状态的 socket
修改TCP连接关闭后等待回收的时间
net.ipv4.tcp_fin_timeout = 30 # socket 保持在 FIN_WAIT_2 状态的最大时间
TIME-WAIT sockets的快速回收
net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
系统同时保持TIME_WAIT套接字的最大数量
net.ipv4.tcp_max_tw_buckets = 5000 # 操作系统允许 TIME_WAIT socket 的最大数量
SYN等待队列溢出时,启用cookies来处理
net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
SYN队列的长度
net.ipv4.tcp_max_syn_backlog = 8192 表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击
net.ipv4.tcp_syncookies = 1 # 防止 TCP SYN 攻击net.ipv4.tcp_max_syn.backlog = 1024 # TCP 三次握手建立阶段接收 SYN 请求队列的最大长度,默认为 1024
SYN表示建立连接,FIN表示关闭连接,ACK表示响应,PSH表示有DATA数据传输,RST表示连接重置
主动关闭方会出现TIME_WAIT,被动关闭方会出现CLOSE_WAIT;被动关闭方的CLOSE_WAIT的等待是应用程序自己造成的,和系统没有关系,通常是被动关闭方没有调用close导致的;TIME_WAIT出现后,需要等待2个MSL时间才会释放socket,CLOSE_WAIT出现后需要等待一个keepalive的时间,关于keepalive的控制主要有3个参数:net.ipv4.tcp_keepalive_intvl(每次探测间隔)、net.ipv4.tcp_keepalive_probes(探测次数)、net.ipv4.tcp_keepalive_time(TCP链路上空闲多长时间开始发送keep_alive),tcp_keepalive_time默认为2小时,因此CLOSE_WAIT后最多有可能需要等待tcp_keepalive_time + tcp_keepalive_intvl * tcp_keepalive_probes
修改网络内核对TCP连接的有关限制net.ipv4.ip_local_port_ tange = 1024 61000 # 定义在 UDP和 TCP 连接中本地端口的取值范围继续保持TCP连接时间net.ipv4.tcp_keepalive_time = 600 # 当 keepalive 启用时,TCP 发送 keepalive 消息的频度
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_rmem = 4096 32768 262142 # TCP 接收缓存的最小值、默认值、最大值
net.ipv4.tcp_wmem = 4096 32768 262142 # TCP 发送缓存的最小值、默认值、最大值
net.ipv4.tcp_mtu_probing=1
net.core.rmem_max = 2097152 # 内核 socket 接收缓存区的最大大小
net.core.wmem_max = 2097152 # 内核 socket 发送缓存区的最大大小
net.core.netdev_max_backlog = 8096 # 当网卡接收数据包的速度大于内核处理的速度时,保存队列的最大值
net.core.rmem_default = 262144 # 内核 socket 接收缓存区默认的大小
net.core.wmem_default = 212144 # 内核 socket 发送缓存区默认的大小
设置TCP拥塞算法为 hyblanet.ipv4.tcp_congestion_control=hybla
使用支持高并发网络I/O的编程技术
阻塞I/O
非阻塞I/O
I/O 多路复用
信号驱动I/O(SIGIO)
异步I/O
非阻塞I/O
I/O 多路复用
信号驱动I/O(SIGIO)
异步I/O
Linux
每个进程的开启的最大线程为1000
0 0
- 高并发Linux服务器的常用配置
- 【干货】Nginx高并发配置 + Linux服务器优化配置
- 配置支持高并发TCP连接的Linux服务器全攻略
- 配置支持高并发TCP连接的Linux服务器全攻略
- 配置支持高并发TCP连接的Linux服务器全攻略
- Linux高并发服务器解决方案
- 支持高并发的IIS Web服务器常用设置
- 支持高并发的IIS Web服务器常用设置
- 支持高并发的IIS Web服务器常用设置
- 支持高并发的IIS Web服务器常用设置
- 高并发的服务器模式
- 支持高并发的IIS Web服务器常用设置--实现10万个并发请求
- 高并发文件下载服务器配置
- 高并发的Linux和tomcat的一些配置整理
- linux服务器调整参数支持高并发
- linux c++ 高并发tcp服务器架构
- linux c++ 高并发tcp服务器架构
- linux c++ 高并发tcp服务器架构
- CRC32、MD5、SHA1算法校验介绍
- C语言_标准库中的流函数
- NYOJ 题目37 回文字符串(动态规划)
- .net signalR 实例
- Fibonacci函数递归实现
- 高并发Linux服务器的常用配置
- 开启与隐藏Android手机的开发者选项
- 求n的阶乘
- BZOJ 2561 最小生成树 网络流 最小割
- 递归求n个数相加的和
- How to show hidden files in ubuntu(linux) :)
- Cocos2dx中Opacity属性及相关操作(2)----Cocos2dx 3.2 Fade系列Action
- unsigned char与char
- 安装win7旗舰版虚拟机时,没有硬盘划分怎么办