linux + nginx 的配置优化

linux 关于TCP/IP 的优化配置  配置文件/etc/sysctl.conf    修改完文件生效的命令  /sbin/sysctl -p 

如下是总结的配置内容及说明

net.ipv4.conf.all.rp_filter=0 
net.ipv4.conf.default.rp_filter=0    
net.ipv4.conf.default.arp_announce = 2    # 直接路由DR模式下要求arp_announce参数要求配置为2
net.ipv4.conf.lo.arp_announce=2    
net.ipv4.conf.all.arp_announce=2    
fs.file-max = 1000000    # 打开文件句柄的数量
net.ipv4.tcp_tw_reuse = 1    # 表示开启重用 允许TIME-WAIT sockets重新用于新的TCP连接
net.ipv4.tcp_keepalive_time = 600    # 启用keepalive,tcp发送keepalive消息的频度
net.ipv4.tcp_fin_timeout = 30    # 表示套接字FIN-WAIT-2状态超时时间
net.ipv4.tcp_tw_recycle= 1 # 表示开启TCP连接中TIME-WAIT sockets的快速回收
net.ipv4.tcp_max_tw_buckets = 5000    # 系统同时保持TIME_WAIT套接字的最大数量对于nginx 设置5000-30000 
net.ipv4.ip_local_port_range = 1024 61000    # 设定系统打开端口的范围,即用于向外连接的端口范围
net.ipv4.tcp_rmem = 4096 32768 262142    # tcp对内存的使用 
net.ipv4.tcp_wmem = 4096 32768 262142    
net.core.rmem_default = 262144    
net.core.wmem_default = 262144    
net.core.rmem_max = 2097152    
net.core.wmem_max = 2097152    
net.core.netdev_max_backlog = 8096    # 当每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许发送到队列的数据包最大数
net.ipv4.tcp_syncookies = 1    # 表示开启SYN Cookies功能
net.ipv4.tcp_max_syn_backlog = 8192 # 设置SYN队列的长度
net.ipv4.tcp_synack_retries = 1    # 决定了内核放弃连接之前发送SYN+ACK包的数量
net.ipv4.tcp_syn_retries = 1    # 内核放弃建立连接之前发送SYN包的数量
View Code

nginx 的优化配置说明

全局    worker_proceses 8;    cpu数量最佳与系统cpu数一直    “grep ^processor /proc/cpuinfo | wc -l”在linux 运行该命令查看系统cpu数 
        worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;    直接将nginx的worker进程绑定在固定的cpu上    nginx的进程跑在某一个CPU或CPU的某一个核上,导致nginx进程使用硬件的资源不均,绑定后可充分有效的利用有效的硬件资源
events    use epoll;    使用epoll(linux2.6的高性能方式)    
        worker_connections 1024;    每个worker 连接的进程数    
        multi_accept on;    在接收到一个新请求尽可能多的连接    
http    proxy_buffer_size 4k;    指令设置缓冲区大小,从被代理的后端服务器取得的响应内容,会先读取放置到这里.    
        sendfile on;    sendfile()可以在磁盘和TCP socket之间互相拷贝数据(或任意两个文件描述符),这种拷贝是在内核完成的,sendfile()要比组合read()和write()以及打开关闭丢弃缓冲更加有效    
        tcp_nopush on;    tcp_nopush告诉nginx在一个数据包里发送所有头文件,而不一个接一个的发送    
        tcp_nodelay on;    不延时发送请求,on 禁用nagle缓存算法    nagle缓存算法,有些应用程序在网络通讯的时候会发送很少的字节,比如说一个字节,那么再加TCP协议本身,实际上发的要41个字节,这样的效率是很低的。这时候nagle算法就应运而生了,它将要发送的数据存放在缓存里,当积累到一定量或一定时间,再将它们发送出去。
        keepalive_timeout 30;     设置nginx的超时断开    
        allow   47.103.36.8; (location模块)    指定ip可以访问    
        deny    all;(location模块)    禁用除允许ip外的所有ip的访问    
View Code

猜你喜欢

转载自www.cnblogs.com/Weibull/p/10955913.html
今日推荐