#增加TCP最大缓冲区大小

net.ipv4.tcp_mem = 768432 2097152 15242880

net.ipv4.tcp_wmem = 40960 163840 4194304

net.ipv4.tcp_rmem = 40960 873800 4194304


# UDP窗口等

net.core.wmem_default = 8388608

net.core.rmem_default = 8388608


# Tcp窗口等

net.core.rmem_max = 524288000

net.core.wmem_max = 524288000


# 开启SYN洪水***保护

net.ipv4.tcp_syncookies=1


#增大SYN队列的长度,容纳更多连接(默认值:128)

net.ipv4.tcp_max_syn_backlog=81920


# TCP时间戳(默认值:1)

net.ipv4.tcp_timestamps=0


#参数的值决定了内核放弃链接之前发送SYN+ACK包的数量,该参数对应系统路径为:/proc/sys/net/ipv4/tcp_synack_retries,默认是2

net.ipv4.tcp_synack_retries=3


# 表示内核放弃建立链接之前发送SYN包的数量,该参数对应系统路径为:/proc/sys/net/ipv4/tcp_syn_retries,默认是6

net.ipv4.tcp_syn_retries=3


#TCP时间戳(默认值:60)

net.ipv4.tcp_fin_timeout = 30


#间隔多少秒发送1次keepalive探测包(默认值:7200)

net.ipv4.tcp_keepalive_time = 300


#可用端口的范围(默认值:32768   61000)

net.ipv4.ip_local_port_range = 20000 65000


#针对TIME-WAIT,配置其上限(默认值:262144)。如果降低这个值,可以显著的发现time-wait的数量减少,但系统日志中可能出现如下记录:kernel: TCP: time wait bucket table overflow对应的,如果升高这个值,可以显著的发现time-#wait的数量增加。

net.ipv4.tcp_max_tw_buckets = 6000


#内核所允许的最大路由数目

net.ipv4.route.max_size = 5242880


#设置的信号量

kernel.sem=250 65536 100 2048


#文件指定在一个消息队列中最大的字节数 缺省设置:16384。

kernel.msgmnb = 4203520


#文件指定消息队列标识的最大数目。缺省设置:16。

kernel.msgmni = 64


#文件指定了从一个进程发送到另一个进程的消息最大长度。进程间的消息传递是在内核的内存中进行的。不会交换到硬盘上。所以如果增加该值,则将增加操作系统所使用的内存数量

kernel.msgmax = 65535


#设置最大内存共享段大小bytes

kernel.shmmax = 68719476736

kernel.shmall = 4294967296

kernel.shmmni = 655360


#表示开启重用。允许将TIME-WAIT sockets 重新用于新的TCP 连接,默认为0,表示关闭

net.ipv4.tcp_tw_reuse=1


#针对TIME-WAIT,不要开启(默认值:0)。不少文章提到同时开启tcp_tw_recycle和tcp_tw_reuse,会带来C/S在NAT方面的异常。个人接受的做法是,开启tcp_tw_reuse,增加ip_local_port_range的范围,减小tcp_max_tw_buckets和tcp_fin_timeout的值

net.ipv4.tcp_tw_recycle = 1


# Tcp自动窗口

net.ipv4.tcp_window_scaling = 1


#当 interface 接收到的数据包数量比内核处理速度的快的时候, 设置 input 队列最大的 packets 数量值。

net.ipv4.tcp_no_metrics_save=1


#默认coredump filename是“核心”。通过设置core_uses_pid为1(默认值为0),文件名的coredump成为核心PID。如果core_pattern不包括“%p”(默认是不)和core_uses_pid设置。那时pid将附加到文件名上。

kernel.core_uses_pid = 1


#忽略ARP 广播

net.ipv4.conf.lo.arp_announce=2


##启用有选择的应答(1表示启用),通过有选择地应答乱序接收到的报文来提高性能,让发送者只发送丢失的报文段,(对于广域网通信来说)这个选项应该启用,但是会增加对CPU的占用

net.ipv4.tcp_sack = 1


# 开启execshild

kernel.exec-shield = 1

kernel.randomize_va_space=1


#设置最大连接数

net.nf_conntrack_max = 25000000

net.netfilter.nf_conntrack_max = 25000000

net.netfilter.nf_conntrack_tcp_timeout_established = 180

net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120

net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60

net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120


#避免放大***

net.ipv4.icmp_echo_ignore_broadcasts=1


#关闭ipv6

net.ipv6.conf.all.disable_ipv6 = 1

net.ipv6.conf.default.disable_ipv6 = 1


# 开启恶意icmp错误消息保护

net.ipv4.icmp_ignore_bogus_error_responses = 1


#关闭路由转发

net.ipv4.ip_forward = 0

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0


#开启反向路径过滤

net.ipv4.conf.all.rp_filter = 1

net.ipv4.conf.default.rp_filter = 1


#处理无源路由的包

net.ipv4.conf.all.accept_source_route = 0

net.ipv4.conf.default.accept_source_route = 0


#关闭sysrq功能

kernel.sysrq = 0


#每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目

net.core.netdev_max_backlog = 262144


#限制仅仅是为了防止简单的DoS ***

net.ipv4.tcp_max_orphans = 3276800


# 确保无人能修改路由表

net.ipv4.conf.all.accept_redirects = 0

net.ipv4.conf.default.accept_redirects = 0

net.ipv4.conf.all.secure_redirects = 0

net.ipv4.conf.default.secure_redirects = 0


#关闭swap

vm.swappiness = 0


#决定检查过期多久邻居条目

net.ipv4.neigh.default.gc_stale_time=120


#内核可分配的最大文件数(默认值:98529)

fs.file-max = 40000500


#定义是单进程最大file-handles(文件句柄)

fs.nr_open = 40000500


# perf分析工具最大能够占用CPU性能的百分比(0:不限制)

kernel.perf_cpu_time_max_percent=60


#设置perf_event的最大取样速率,默认值为100000

kernel.perf_event_max_sample_rate=6250


#该变量用来判断一个进程是否还是hot,如果进程的运行时间(now - p->se.exec_start)小于它,那么内核认为它的code还在cache里,所以该进程还是hot,那么在迁移的时候就不会考虑它

kernel.sched_migration_cost_ns=5000000


#表示每个socket所允许的最大缓冲区的大小(字节)

net.core.optmem_max= 25165824


#定义了一个进程能拥有的最多的内存区域

vm.max_map_count=262144


#定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数。

net.core.somaxconn = 65535


#使用arp_announce/arp_ignore解决ARP映射问题

net.ipv4.conf.default.arp_announce = 2

net.ipv4.conf.all.arp_announce=2

net.ipv4.conf.lo.arp_announce=2