Centos nginx 系统调优

版权声明:仅供学习参考 转载请标明出处。 https://blog.csdn.net/xujiamin0022016/article/details/81676876

Centos nginx 系统调优

目的:在不修改nginx配置文件的前提下  修改nginx系统配置而达到调优的效果

修改nproc.conf

用户进程数的限制

Centos6.4

/etc/security/limits.d/90-nproc.conf

Centos7

/etc/security/limits.d/20-nproc.conf  

将非root用户的连接数设置成65535 或者unlimited

因为很多进程是用 非用户启动的  这样可以避免因为启动用户 而造成的连接数的影响

 

修改/etc/security/limits.conf

再/etc/security/limits.conf加入

* soft nofile 65536

* hard nofile 131072

* soft nproc 65536

* hard nproc 65536

limits.conf是针对用户 而sysctl.conf是针对整个系统参数配置

 

 

修改/etc/sysctl.conf

#使用sysrq组合键是了解系统目前运行情况,为安全起见设为0关闭

kernel.sysrq = 0

#控制core文件的文件名是否添加pid作为扩展

kernel.core_uses_pid = 1

#每个消息队列的大小(单位:字节)限制

kernel.msgmnb = 65536

#整个系统最大消息队列数量限制

kernel.msgmax = 65536

#单个共享内存段的大小(单位:字节)限制

kernel.shmmax = 68719476736

#所有内存大小

kernel.shmall = 4294967296

 

#允许系统打开的端口范围 前面为下限 后面的数字为上限;默认为“32768  61000”

#注意:此可用范围决定了最后timewait状态的连接的数量;

net.ipv4.ip_local_port_range = 1024     65000

#表示禁用包过滤功能

net.ipv4.ip_forward = 0

#反向过滤 源路由核查功能  检查该IP是不是合乎要求,不合要求的IP包会被系统丢弃

net.ipv4.conf.default.rp_filter = 1

#禁用所有IP源路由

net.ipv4.conf.default.accept_source_route = 0

 

#----------------优化网络参数

#timewait的数量 默认为8192

net.ipv4.tcp_max_tw_buckets = 60000

#开启有选择的应答

net.ipv4.tcp_sack = 1

#支持更大的TCP窗口  如果TCP窗口最大超过65535(64K) 必须设置该数值为1

net.ipv4.tcp_window_scaling = 1

#允许的最大跟踪连接条目

net.nf_conntrack_max = 6553500

#为了打开对端的连接 内核需要发送一个SYN并附带一个回应前面一个SYN的ACK 也就是所谓三次握手中的第二次握手 这个设置决定了内核放弃连接之前发送SYN+ACK包的数量

net.ipv4.tcp_synack_retries = 1

#在内核放弃建立连接之前发送SYN包的数量

net.ipv4.tcp_syn_retries = 1

 

#----------------优化系统套接字缓冲区

#定义内核用于所有类型的链接的默认接收缓冲大小

net.core.rmem_default = 8388608

#定义内核用于所有类型的链接的最大接收缓冲大小

net.core.rmem_max = 16777216

#定义内核用于所有类型的链接的最大发送缓冲大小

net.core.wmem_max = 16777216

定义内核用于所有类型的链接的默认发送缓冲大小

net.core.wmem_default = 8388608

 

#----------------优化TCP接收/发送缓冲区

#定义TCP协议栈使用的内存空间:分别为最小值 默认值和最大值

net.ipv4.tcp_mem = 94500000 915000000 927000000

#定义TCP协议栈用于接收缓冲的内存空间

#第一个值为最小值 即便当前主机内存空间吃紧 也得保证TCP协议栈至少有此大小的空间可用 第二个值为默认值 它会覆盖net.core.rmem_default中为所有协议定义的接收缓冲的大小;第三值为最大值 即能用于TCP接收缓冲的最大内存空间

net.ipv4.tcp_rmem = 4096         87380   4194304

#定义TCP协议栈用于发送缓冲的内存空间

net.ipv4.tcp_wmem = 4096         16384   4194304

 

#----------------优化TCP协议栈

#开启SYN Cookies 当出现SYN等待队列溢出时 启用cookies来处理

net.ipv4.tcp_syncookies = 1

#时间戳可以避免序列号的卷绕 0=关闭

#一个1Gbps的链路肯定会遇到以前用过的序列号 时间戳能够让内核接受这种“异常”的数据包 默认开启

net.ipv4.tcp_timestamps = 0

#表示socket监听的backlog上限 backlog就是socket的监听队列 当一个请求尚未被处理或建立时 他会进入backlog server处理请求较慢 以至于监听队列被填满后 新来的请求会被拒绝

#web应用中listen函数的backlog默认会给我们内核参数的net.core.somaxconn限制到128 而Nginx内核参数定义的NGX_LISTEN_BACKLOG默认为511 所以有必要调整这个值

net.core.somaxconn = 262144

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

net.core.netdev_max_backlog = 262144

#系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上

#如果超过这个数字 孤儿连接将即刻被复位并打印出警告信息 这个限制仅仅是为了防止简单的DoS攻击 不能过分依靠它或者人为地减小这个值 最应该增加这个值(如果增加了内存之后)

net.ipv4.tcp_max_orphans = 3276800

#记录那些尚未收到客户端确认信息的连接请求的最大值 增加TCP SYN队列长度,使系统可以处理更多的并发连接 对于有128M内存的系统而言 缺省值是1024 小内存的系统则是128

net.ipv4.tcp_max_syn_backlog = 262144

 

#----------------打开TIME-WAIT套接字重用功能 对于存在大量连接的Web服务器非常有效

#启用timewait快速回收   不建议开启

net.ipv4.tcp_tw_recycle = 1  

#开启重用 允许将TIME-WAIT sockets重新用于新的TCP连接

net.ipv4.tcp_tw_reuse = 1

#减少处于FIN-WAIT-2连接状态的时间,使系统可以处理更多的连接。

#如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间 对端可以出错并永远不关闭连接 甚至意外宕机 缺省值是60秒 2.2 内核的通常值是180秒 你可以按这个设置 但要记住的是 即使你的机器是一个轻载的WEB服务器 也有因为大量的死套接字而内存溢出的风险 FIN- WAIT-2的危险性比FIN-WAIT-1要小 因为它最多只能吃掉1.5K内存 但是它们的生存期长些

net.ipv4.tcp_fin_timeout = 1

#减少TCP KeepAlive连接侦测的时间,使系统可以处理更多的连接

net.ipv4.tcp_keepalive_time = 30

 

 

猜你喜欢

转载自blog.csdn.net/xujiamin0022016/article/details/81676876