Linux系统优化实现高并发
ulimit -SHn 65535
内核优化
net.ipv4.ip_forward = 1 #开启路由功能
net.ipv4.conf.default.rp_filter = 1 #禁用所有IP源路由
net.ipv4.conf.default.accept_source_route = 0 #禁用icmp源路由选项
kernel.sysrq = 0 #关闭SysRq功能,SysRq代表的是Magic System Request Key
kernel.core_uses_pid = 1 #控制core文件的文件名是否添加pid作为扩展
net.ipv4.tcp_syncookies = 1 # tcp syncookie,默认关闭
kernel.msgmnb = 65536 #默认的每个消息队列的最大尺寸(byte),默认为16384
kernel.msgmax = 65536 #消息队列中单条消息的最大尺寸(byte),默认8192
kernel.shmmax = 68719476736 #共享内存中的最大内存块尺寸(byte),默认33554432(32M),这里是65536M
kernel.shmall = 4294967296 #kernel.shmall的单位是页面数,当前的x86体系上这个单位是4K,这里是2048G的共享内存总量,默认2097152
fs.file-max = 6553600 #系统级最大打开文件数,还要结合limits.conf的soft和hard限制
net.ipv4.tcp_max_tw_buckets = 5000 #1st低于此值,TCP没有内存压力,2nd进入内存压力阶段,3rdTCP拒绝分配socket(单位:内存页)
net.ipv4.tcp_sack = 1 #定义SYN重试次数
net.ipv4.tcp_window_scaling = 1 #开启窗口缩放功能
net.ipv4.tcp_rmem = 4096 87380 4194304 #接受缓冲的大小:MIN,DEFAULT,MAX
net.ipv4.tcp_wmem = 4096 16384 4194304 #socket的发送缓存区分配的MIN,DEFAULT,MAX
net.ipv4.tcp_max_syn_backlog = 8192 #syn队列,默认1024,> 1280可能工作不稳定,需要修改内核源码参数
net.core.netdev_max_backlog = 32768 #进入包的最大设备队列.默认是300,对重负载服务器而言,该值太低,可调整到2000.
net.core.somaxconn = 32768 #listen()的默认参数,挂起请求的最大数量.默认是128.对繁忙的服务器,增加该值有助于网络性能
net.core.wmem_default = 8388608 #表示套接字发送缓冲区大小的缺省值,会覆盖net.ipv4.tcp_wmem的DEFAUL值
net.core.rmem_default = 8388608 #表示套接字接收缓冲区大小的缺省值
net.core.rmem_max = 16777216 #表示套接字接收缓冲区大小的最大值
net.core.wmem_max = 16777216 #表示套接字发送缓冲区大小的最大值,会覆盖net.ipv4.tcp_wmem的MAX值
net.ipv4.tcp_timestamps = 0 #禁用时间戳,时间戳可以避免序列号的卷绕
net.ipv4.tcp_synack_retries = 2 #syn-ack握手状态重试次数,默认5,遭受syn-flood攻击时改为1或2
net.ipv4.tcp_syn_retries = 2 #外向syn握手重试次数,默认4
net.ipv4.tcp_tw_recycle = 1 #开启 TCP 连接中 TIME-WAIT sockets 的快速回收,默认为 0 ,表示关闭。
net.ipv4.tcp_tw_reuse = 1 #开启重用。允许将 TIME-WAIT sockets 重新用于新的 TCP 连接,默认为 0 ,表示关闭;
net.ipv4.tcp_mem = 94500000 915000000 927000000 #1低于此值,TCP没有内存压力,2在此值下,进入内存压力阶段,3高于此值,TCP拒绝分配socket.上述内存单位是页
net.ipv4.tcp_max_orphans = 3276800 #选项用于设定系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上,如果超过这个数字,孤立连接将立即被复位并打印出警告信息
net.ipv4.tcp_fin_timeout = 30 #修改系統默认的 TIMEOUT 时间
net.ipv4.tcp_keepalive_time = 300 #表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为5分钟。
net.ipv4.ip_local_port_range = 1024 65000 #表示用于向外连接的端口范围。缺省情况下过窄:32768到61000,改为1024到65535。
net.ipv4.ip_conntrack_max = 655360 #增大iptables状态跟踪表
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 180 #设置默认 TCP 连接时长为180秒
Linux系统优化实现高并发的更多相关文章
- Linux配置支持高并发TCP连接(socket最大连接数)
Linux配置支持高并发TCP连接(socket最大连接数) Linux配置支持高并发TCP连接(socket最大连接数)及优化内核参数 2011-08-09 15:20:58| 分类:LNMP&a ...
- linux webbench测试高并发方法
linux webbench测试高并发方法由于ab小工具 测试高并发 会出错 具体原因http://newmiracle.cn/?p=594所以采用webbench这个来测试<pre> w ...
- Linux下解决高并发socket最大连接数所受的各种限制(解除IO限制)
linux作为服务器系统,当运行高并发TCP程序时,通常会出现连接建立到一定个数后不能再建立连接的情况 本人在工作时,测试高并发tcp程序(GPS服务器端程序),多次测试,发现每次连接建立到3800左 ...
- Linux下解决高并发socket最大连接数限制,tcp默认1024个连接
linux作为服务器系统,当socket运行高并发TCP程序时,通常会出现连接建立到一定个数后不能再建立连接的情况 本人在工作时,测试高并发tcp程序(GPS服务器端程序),多次测试,发现每次连接建立 ...
- Linux epoll 笔记(高并发事件处理机制)
wiki: Epoll优点: Epoll工作流程: Epoll实现机制: epollevent; Epoll源码分析: Epoll接口: epoll_create; epoll_ctl; epoll_ ...
- linux学习之高并发服务器篇(二)
高并发服务器 1.线程池并发服务器 两种模型: 预先创建阻塞于accept多线程,使用互斥锁上锁保护accept(减少了每次创建线程的开销) 预先创建多线程,由主线程调用accept 线程池 3.多路 ...
- Linux C++ Socket 高并发短连接 TIME_WAIT 挥之不去解决方法
近期遇到一个项目 需要在Linux上建立一个Socket 进行 HTTP_GET , 需要线程高并发的 使用TCP Socket 进行Send 发送HTTP_GET请求到 指定网站 . 而且不需要re ...
- 实战解读丨Linux下实现高并发socket最大连接数的配置方法
摘要:Linux操作系统,无论是编写客户端程序还是服务端程序,在高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制. [诉求场景] Linux操作系统,无论是编写 ...
- [转载] Linux下高并发socket最大连接数所受的各种限制
原文: http://mp.weixin.qq.com/s?__biz=MzAwNjMxNjQzNA==&mid=207772333&idx=1&sn=cfc8aadb422f ...
随机推荐
- 开始使用 Vuejs 2.0 --- 组件间数据传递
Vue1.0组件间传递 使用$on()监听事件: 使用$emit()在它上面触发事件: 使用$dispatch()派发事件,事件沿着父链冒泡: 使用$broadcast()广播事件,事件向下传导给所有 ...
- 大数据技术之_09_Flume学习_Flume概述+Flume快速入门+Flume企业开发案例+Flume监控之Ganglia+Flume高级之自定义MySQLSource+Flume企业真实面试题(重点)
第1章 Flume概述1.1 Flume定义1.2 Flume组成架构1.2.1 Agent1.2.2 Source1.2.3 Channel1.2.4 Sink1.2.5 Event1.3 Flum ...
- 遇见CUBA CLI
原文:Meet CLI for CUBA Platform 翻译:CUBA China CUBA-Platform 官网 : https://www.cuba-platform.com CUBA Ch ...
- c#中引用类型作为值参数和引用参数问题
一.分类 C#的值类型包括:结构体(数值类型,bool型,用户定义的结构体),枚举,可空类型. C#的引用类型包括:数组,用户定义的类.接口.委托,object,字符串. 二.参数传递 对于引用类型, ...
- SQL2008无法连接到(local),该账户当前被锁定,所以Sa用户登陆失败
1 安装小结 换了电脑,很多软件都得重装,期间报了很多问题,比如说先装vs2008再装sql server2008r2会报一个“存在2008早期版本”,通过查找,百度一系列的坑爹之路后,我还是把vs2 ...
- python单链表
#!/usr/bin/env python3 # -*- coding:utf-8 -*- class LNode: """ 结点类 """ ...
- C学习笔记(1)-结构体、预处理与多文件结构程序设计
一.结构体的定义与使用 #include <stdio.h> //定义结构体(类似模板) typedef struct { char name[50]; int age; char add ...
- 我在项目中运用 IOC(依赖注入)--实战篇
上一篇<我在项目中运用 IOC(依赖注入)--入门篇>只是简单的使用 IOC.实际项目使用 IOC 的情景复杂多了,比如说,构造函数有多个参数,有多个类继承同一个接口... Unity都有 ...
- ECLIPSE控制台信息导出
JAVA代码: String fileAddress = Config.get_storeServiceLogsAsTextFile(); //获取信息的存放位置 //将控制台的信息保存到特定的文件中 ...
- JSON.stringify时间的问题
使用Element UI控件el-date-picker后台传值用到JSON.stringify转换字符串传后台发现输出国际标准时间(ISO),减少了8个小时, 解决方式: 由于JSON.string ...