net.core.somaxconn net.ipv4.tcp_max_syn_backlog
Linux参数-net.core.somaxconn与net.ipv4.tcp_max_syn_backlog_梁海江的博客-CSDN博客_net.ipv4.tcp_max_syn_backlog https://blog.csdn.net/oYinHeZhiGuang/article/details/101773221
1.tcp基础
对于一个TCP连接,Server与Client需要通过三次握手来建立网络连接.当三次握手成功后,我们可以看到端口的状态由LISTEN转变为ESTABLISHED,接着这条链路上就可以开始传送数据了。
对于服务器而言,一个完整的连接建立过程,服务器会经历 2 种 TCP 状态:SYN_REVD, ESTABELLISHED。对应也会维护两个队列:
1. 一个存放 SYN 的队列(半连接队列)
2. 一个存放已经完成连接的队列(全连接队列)
当一个连接的状态是 SYN RECEIVED 时,它会被放在 SYN 队列中。当它的状态变为 ESTABLISHED 时,它会被转移到另一个队列。所以后端的应用程序只从已完成的连接的队列中获取请求。
如果一个服务器要处理大量网络连接,且并发性比较高,那么这两个队列长度就非常重要了。因为,即使服务器的硬件配置非常高,服务器端程序性能很好,但是这两个队列非常小,那么经常会出现客户端连接不上的现象,因为这两个队列一旦满了后,很容易丢包,或者连接被复位。所以,如果服务器并发访问量非常高,那么这两个队列的设置就非常重要了。
2.tcp_max_syn_backlog
tcp_max_syn_backlog是指定所能接受SYN同步包的最大客户端数量,即半连接上限,默认值是128,即SYN_REVD状态的连接数。
3.net.core.somaxconn
somaxconn是Linux中的一个kernel参数,指的是服务端所能accept即处理数据的最大客户端数量,即完成连接上限,默认值是128.
4.参数设置
4.1临时改动
sysctl -w net.core.somaxconn=32768
以上命令将kernel参数net.core.somaxconn的值改成了32768。这样的改动虽然可以立即生效,但是重启机器后会恢复默认值。
4.2 永久改动
4.2.1 修改配置文件/etc/sysctl.conf,在最后增加一行。
net.core.somaxconn= 4000
4.2.2 执行如下命令刷新配置文件
sysctl -p
net.core.somaxconn的作用 http://www.seaxiang.com/blog/somaxconn
net.core.somaxconn是Linux中的一个kernel参数,表示socket监听(listen)的backlog上限。backlog是socket的监听队列,当一个请求(request)尚未被处理或建立时,他会进入backlog。而socket server可以一次性处理backlog中的所有请求,处理后的请求不再位于监听队列中。当server处理请求较慢,以至于监听队列被填满后,新来的请求会被拒绝。
在Hadoop 1.0中,参数ipc.server.listen.queue.size控制了服务端socket的监听队列长度,即backlog长度,默认值是128。而Linux的参数net.core.somaxconn默认值同样为128。当服务端繁忙时,如NameNode或JobTracker,128是远远不够的。这样就需要增大backlog,例如我们的3000台集群就将ipc.server.listen.queue.size设成了32768,为了使得整个参数达到预期效果,同样需要将kernel参数net.core.somaxconn设成一个大于等于32768的值。
最新文章
- NSFileManager计算文件/文件夹大小
- POJ2185Milking Grid(最小覆盖子串 + 二维KMP)
- 边工作边刷题:70天一遍leetcode: day 83
- jvm - 内存结构以其解析
- xcode5 自定义模板
- phper談談最近重構代碼的感受(2)
- centos7配置ip
- TM3、4波段GeoTiff数据计算NDVI
- CSS变量variable
- 一次 C# 查詢數據庫 算法優化的案例
- 关于Asset Library核心功能的一些计划
- laravel 5 优化
- ts-loader 安装问题
- Hystrix隔离策略
- PHP读取超大日志文件
- 使用邮件和RSS两种方式,订阅博客更新通知
- ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
- MongoDB数据库进阶 --- 增删查改...
- Struts has detected an unhandled exception异常
- 07Oracle Database 数据表
热门文章
- ubuntu20部署php-swoole开发环境
- Autofac官方文档翻译--一、注册组件--2传递注册参数
- Hyperledger fabric 链码篇GO(四)
- easyui中开始时间小于结束时间 不然无法点击
- 通配符的匹配很全面, 但无法找到元素 'dubbo:application' 的声明 解决办法
- mysql中order by优化的那些事儿
- Spring Data JPA简介 Spring Data JPA特点
- 指令重排序 as-if-serial
- JavaScript AMD模块化规范
- day122:MoFang:OSSRS流媒体直播服务器&;基于APICloud的acLive直播推流模块实现RTMP直播推流