首页
仓库
文档
nginx手册
Docker手册
workerman
Flask
PHP
python
RabbitMQ
其他
Linux
占位1
占位2
目录
Linux ####查看所有内核参数及值 > sysctl -a **查看net.core.somaxconn参数** > sysctl -a | grep net.core.somaxconn **如何修改该参数值** 1)立即生效 > sysctl -w net.core.somaxconn=1024 该方法在重启系统之后会失效,参数值重新恢复成最初的128 2)永久生效 在/etc/sysctl.conf文件中新增一行 net.core.somaxconn=1024;执行sysctl -p vim /etc/sysctl.conf net.core.somaxconn=1024 sysctl -p ####优化参数 **1、net.core.netdev_max_backlog参数** 参数net.core.netdev_max_backlog表示当每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许发送到队列的数据包的最大数目,一般默认值为128(可能不同的linux系统该数值也不同)。nginx服务器中定义的NGX_LISTEN_BACKLOG默认为511。我们可以将它调整一下: net.core.netdev_max_backlog = 262144 **2、net.core.somaxconn参数** 该参数用于调节系统同时发起的TCP连接数,一般默认值为128.在客户端存在高并发请求的情况下,该默认值较小,可能导致连接超时或重传问题,我们可以根据实际需要结合并发请求数来调节此值。 net.core.somaxconn = 262144 **3、net.ipv4.tcp_max_orphans参数** 该参数用于设定系统中最多允许存在多少tcp套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,没有与用户文件句柄关联的tcp套接字符将立即被复位,同时给出警告信息。这个限制只是为了防止简单的DoS工具。一般在系统内存比较充足的情况下,可以增大这个参数的赋值: net.ipv4.tcp_max_orphans = 262144 **4、net.ipv4.tcp_max_syn_backlog参数** 记录的那些尚未收到客户端确认信息的连接请求的最大值。对于有128M内存的系统而言,缺省值是1024,小内存的系统则是128。一般在系统内存比较充足的情况下,可以增大这个参数的赋值: net.ipv4.tcp_max_syn_backlog = 262144 **5、net.ipv4.tcp_timestamps参数** 该参数用于设置时间戳,可以避免序列号的卷绕。一个1Gbps的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种“异常”的数据包。这里需要将其关掉: net.ipv4.tcp_timestamps = 0 **6、net.ipv4.tcp_synack_retries参数** 该参数用于设置内核放弃TCP连接之前向客户端发送SYN+ACK包的数量。为了建立对端的连接服务,服务器和客户端需要进行三次握手,第二次握手期间,内核需要发送SYN并附带一个回应前一个SYN的ACK,一个参数主要影响这个过程,一般赋值为1,即内核放弃连接之前发送一次SYN+ACK包,可以设置其为: net.ipv4.tcp_synack_retries = 1 **7、net.ipv4.tcp_syn_retries参数** 该参数的作用与上一个参数类似,设置内核放弃建立连接之前发送SYN包的数量,他的赋值和上个参数一样即可: net.ipv4.tcp_syn_retries = 1 ####优化相关命令 > use epoll; 采用epoll模型 > keepalive_timeout 60 50; 设置连接超时时间 默认 75s 60秒后 服务器端主动和客户端断开 50秒后 客户端主动和服务器断开 > send_timeut 10s; 服务端向客户端传输数据的超时时间。 客户度端连接nginx超时, 建议5s > client_header_buffer_size 4kb; 允许客户端请求头部缓存区大小 默认1kb 设置4kb 试试 > multi_accept on; 设置服务器可以尽可能接受更多客户端连接请求 > worker_connections 65535; 设置每一个工作进程同是开启的最大连接数.默认512; 只能在events块中设置 不能大于系统最大文件句柄数量,需要调整系统参数 直接干满65535 客户端=工作进程*work_connections/2 反向代理 /4