`

linux中内核的一个不错的参数somaxconn

阅读更多
在linux中,/proc/sys/net/core/somaxconn这个参数,
看下其解析:
对于一个TCP连接,Server与Client需要通过三次握手来建立网络连接.当三次握手成功后,
我们可以看到端口的状态由LISTEN转变为ESTABLISHED,接着这条链路上就可以开始传送数据了.
每一个处于监听(Listen)状态的端口,都有自己的监听队列.监听队列的长度,与如下两方面有关:
- somaxconn参数.
- 使用该端口的程序中listen()函数.
1. 关于somaxconn参数:
定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数,默认值为1024,具体信息为:
Purpose:
Specifies the maximum listen backlog.
Values:
Default: 1024 connections
Range: 0 to MAXSHORT
Type: Connect
Diagnosis:
N/A
Tuning
Increase this parameter on busy Web servers to handle peak connection rates.


看下FREEBSD的解析:
限制了接收新 TCP 连接侦听队列的大小。对于一个经常处理新连接的高负载 web服务环境来说,默认的 128 太小了。 大多数环境这个值建议增加到 1024 或者更多。 服务进程会自己限制侦听队列的大小(例如 sendmail(8) 或者 Apache), 常常在它们的配置文件中有设置队列大小的选项。大的侦听队列对防止拒绝服务 DoS 攻击也会有所帮助。
2
2
分享到:
评论

相关推荐

    Linux 内核中listen系统调用

    这段代码是 Linux 内核中负责设置 socket 监听状态的 C 函数。 首先定义了一个内核函数 __sys_listen,这个函数是设置 socket 进入监听状态的实际实现。它接受两个参数:`fd` 和 backlog。`fd` 是文件描述符,代表一...

    redis配置详解.docx

    该内核参数默认值一般是128,对于负载很大的服务程序来说大大的不够。一般会将它修改为2048或者更大。在/etc/sysctl.conf中添加:net.core.somaxconn = 2048,然后在终端中执行sysctl -p。 tcp-backlog 511 #指定...

    支持linux百万级并发的参

    支持linux百万级并发的参数, To support over 500k users, you *need* - A 64 bits hardware/kernel (AMD64, Opterons) - At least 8GB of ram - A recent linux kernel (2.6.x) About tuning, I prefer to not ...

    Redis配置文件代码讲解

    Redis配置文件解析网上都有,这里不赘述了。...tcp-backlog 511 建议调大至2048并同时调大Linux内核参数 /proc/sys/net/core/somaxconn 至2048 GENERAL logfile 建议修改日志的路径 SNAPSHOTTING

    Linux系统如何低于TCP洪水攻击

    #关键参数,默认为5,修改为0 表示不要重发 net.ipv4.tcp_synack_retries = 0 #半连接队列长度 net.ipv4.tcp_max_syn_backlog = 200000 #系统允许的文件句柄的大数目,因为连接需要占用文件句柄 fs.file-max = ...

    详解Linux系统如何防止TCP洪水攻击

    #最关键参数,默认为5,修改为0 表示不要重发 net.ipv4.tcp_synack_retries = 0 #半连接队列长度 net.ipv4.tcp_max_syn_backlog = 200000 #系统允许的文件句柄的最大数目,因为连接需要占用文件句柄 fs.file-max = ...

    backend.ai-manager:Backend.AI管理器和API网关守护程序

    manager :代理和计算内核的抽象 gateway :基于aiohttp的用户和管理API(REST / GraphQL)网关 安装 请访问。 内核/系统配置 建议的资源限制: /etc/security/limits.conf root hard nofile 512000 root soft no...

    高性能并发IOCP 网络编程

    // 这里可以绑定任何可用的IP地址,或者绑定一个指定的IP地址 //ServerAddress.sin_addr.s_addr = htonl(INADDR_ANY); ServerAddress.sin_addr.s_addr = inet_addr(m_strIP.GetString()); ServerAddress.sin_...

    nginx防cc攻击

    sysctl kern.ipc.somaxconn=32768 sysctl net.inet.tcp.msl=3000 sysctl net.inet.tcp.maxtcptw=40960 sysctl net.inet.tcp.nolocaltimewait=1 sysctl net.inet.ip.portrange.first=1024 sysctl ...

    socket网络编程

    一个简单的socket网络编程例子: 服务器代码: #include <winsock2.h> #include <iostream> #include <stdio.h> #include <windows.h> #pragma comment(lib,"ws2_32.lib") //这句话的意思是加载ws2_32.lib这个...

    usermm:简单的用户管理系统

    简单的用户管理系统要求重击转到(v1.10.3 +) mysql(v5.7 +) Redis(v4.0 +)安装 #makesure database and redis is correctlly installed and started sudo sysctl -w kern.ipc.somaxconn=2048 sudo sysctl -w ...

Global site tag (gtag.js) - Google Analytics