1. 实现Nginx高并发系统内核参数优化

由于默认的Linux内核参数考虑的是最通用场景,这明显不符合用于支持高并发访问的Web服务器的定义,所以需要修改Linux内核参数,使得Nginx可以拥有更高的性能,根据业务特点来进行调整,当Nginx作为静态web内容服务器、反向代理的服务器时,内核参数的调整都是不同的,这里针对最通用的、使Nginx支持更多并发请求的TCP网络参数做简单的配置,修改/etc/sysctl.conf来更改内核参数。

表示单个进程较大可以打开的句柄数

fs.file-max = 999999

参数设置为 1 ,表示允许将TIME_WAIT状态的socket重新用于新的TCP链接,这对于服务器来说意义重大,因为总有大量TIME_WAIT状态的链接存在

net.ipv4.tcp_tw_reuse = 1

当keepalive启动时,TCP发送keepalive消息的频度;默认是2小时,将其设置为10分钟,可更快的清理无效链接

net.ipv4.tcp_keepalive_time = 600

当服务器主动关闭链接时,socket保持在FIN_WAIT_2状态的较大时间

net.ipv4.tcp_fin_timeout = 30

这个参数表示操作系统允许TIME_WAIT套接字数量的较大值,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息,默认为8000,过多的TIME_WAIT套接字会使Web服务器变慢

net.ipv4.tcp_max_tw_buckets = 5000

定义UDP和TCP链接的本地端口的取值范围

net.ipv4.ip_local_port_range = 1024 65000

定义了TCP接受缓存的最小值、默认值、较大值

net.ipv4.tcp_rmem = 10240 87380 12582912

定义TCP发送缓存的最小值、默认值、较大值

net.ipv4.tcp_wmem = 10240 87380 12582912

当网卡接收数据包的速度大于内核处理速度时,会有一个列队保存这些数据包。这个参数表示该列队的较大值

net.core.netdev_max_backlog = 8096

内核套接字,以下的四个参数,需要根据业务逻辑和实际的硬件成本来综合考虑

表示内核套接字接受缓存区默认大小

net.core.rmem_default = 6291456

表示内核套接字发送缓存区默认大小

net.core.wmem_default = 6291456

表示内核套接字接受缓存区最大大小

net.core.rmem_max = 12582912

表示内核套接字发送缓存区最大大小

net.core.wmem_max = 12582912

与性能无关。用于解决TCP的SYN攻击

net.ipv4.tcp_syncookies = 1

这个参数表示TCP三次握手建立阶段接受SYN请求列队的较大长度,默认1024,将其设置的大一些可使出现Nginx繁忙来不及accept新连接时,Linux不至于丢失客户端发起的链接请求

net.ipv4.tcp_max_syn_backlog = 8192

这个参数用于设置启用timewait快速回收

net.ipv4.tcp_tw_recycle = 1

选项默认值是128,这个参数用于调节系统同时发起的TCP连接数,在高并发的请求中,默认的值可能会导致链接超时或者重传,因此需要结合高并发请求数来调节此值。

net.core.somaxconn=262114

选项用于设定系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,孤立链接将立即被复位并输出警告信息。这个限制指示为了防止简单的DOS攻击,不用过分依靠这个限制甚至认为的减小这个值,更多的情况是增加这个值

net.ipv4.tcp_max_orphans=262114

WEB服务与NGINX(26)- 实现Nginx高并发系统内核参数优化的更多相关文章

  1. tengine编译安装及nginx高并发内核参数优化

    Tengine Tengine介绍 Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性. Tengine的性能和稳定性已经在大型的 ...

  2. 15套java架构师、集群、高可用、高可扩展、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程

    * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩展. ...

  3. 15套java架构师、集群、高可用、高可扩 展、高性能、高并发、性能优化Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程

    * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩 展 ...

  4. 面试题:Nginx 是如何实现高并发?常见的优化手段有哪些?

    面试题: Nginx 是如何实现并发的?为什么 Nginx 不使用多线程?Nginx常见的优化手段有哪些?502错误可能原因有哪些? 面试官心理分析 主要是看应聘人员的对NGINX的基本原理是否熟悉, ...

  5. nginx+lua+redis构建高并发应用(转)

    nginx+lua+redis构建高并发应用 ngx_lua将lua嵌入到nginx,让nginx执行lua脚本,高并发,非阻塞的处理各种请求. url请求nginx服务器,然后lua查询redis, ...

  6. Nginx与Redis解决高并发问题

    原文链接:http://bbs.phpchina.com/forum.php?mod=viewthread&tid=229629 第一版产品采用的是Jquery,Nginx,PHP(CI框架) ...

  7. sql 数据量高并发的数据库优化(转)

    Mysql 大数据量高并发的数据库优化 一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能.所以,在一个系统开始实 ...

  8. (转)nginx应用总结(2)--突破高并发的性能优化

    原文:http://www.cnblogs.com/kevingrace/p/6094007.html 在日常的运维工作中,经常会用到nginx服务,也时常会碰到nginx因高并发导致的性能瓶颈问题. ...

  9. nginx应用总结(2)--突破高并发的性能优化

    在日常的运维工作中,经常会用到nginx服务,也时常会碰到nginx因高并发导致的性能瓶颈问题.今天这里简单梳理下nginx性能优化的配置(仅仅依据本人的实战经验而述,如有不妥,敬请指出~) 一.这里 ...

  10. Nginx和Tengine解决高并发和高可用,而非推荐Apache

    什么是Nginx  什么是Tengine 看看国内大公司在用Nginx和Tengine吗? 步骤一:进入 https://www.taobao.com/,按F12.可看到 有很多APP对淘宝进行请求. ...

随机推荐

  1. Tarjan 算法——图论学习笔记

    Part.1 引入 在图论问题中,我们经常去研究一些连通性问题,比如: 有向图的联通性:传递闭包--Floyd 算法: 有向图连通性的对称性:强联通分量(SCC)--Tarjan 算法缩点: 无向图的 ...

  2. 从 findbugs-maven-plugin 到 spotbugs-maven-plugin 帮你找到代码中的bug

    一.findbugs-maven-plugin 介绍: Status: Since Findbugs is no longer maintained, please use Spotbugs whic ...

  3. ET介绍——强大的基于.dotnet7+Unity3d的双端C#开源游戏框架

    ET是一个开源的游戏客户端(基于unity3d)服务端双端框架,服务端是使用C# .net core开发的分布式游戏服务端,其特点是开发效率高,性能强,双端共享逻辑代码,客户端服务端热更机制完善,同时 ...

  4. 浅看BCEL字节码

    什么是BCEL BCEL是位于sun包下的一个项目,是属于Apache Common的一个子项目 BCEL-LoadClass分析 demo package org.example; import c ...

  5. 鸿蒙HarmonyOS实战-ArkUI组件(Radio)

    一.Radio Radio单选框是一种表单元素,允许用户从一组选项中选择一个选项.它由一个圆圈和一个标签组成,用户只能选择其中一个选项.Radio单选框通常用于表单中,用于收集用户选择的信息,例如用户 ...

  6. #高精度,卡特兰数#洛谷 2532 [AHOI2012]树屋阶梯

    题目 分析 设\(dp[n]\)表示大小为\(n\)的树屋阶梯方案数,如何不算重也不算漏 考虑在左下角填充一个尽量大的矩形,一共有\(n\)种方法, 然后剩下的两头就可以用前面的结果表示 也就是\(d ...

  7. Pandas高级教程之:Dataframe的重排和旋转

    目录 简介 使用Pivot 使用Stack 使用melt 使用Pivot tables 使用crosstab get_dummies 简介 使用Pandas的pivot方法可以将DF进行旋转变换,本文 ...

  8. C# 布尔值和条件语句:入门指南和实用示例

    C# 布尔值 在编程中,通常需要一个只能有两个值之一的数据类型,比如: 是 / 否 开 / 关 真 / 假 为此,C# 有一个 bool 数据类型,可以取 true 或 false 的值. 布尔值 使 ...

  9. centos部署Django一:环境搭建

    前言: 参考文档: https://www.cnblogs.com/djangocn/p/9538551.html https://www.icode9.com/content-3-546765.ht ...

  10. MogDB学习笔记之 -- 了解pagewriter线程

    MogDB 学习笔记之 -- 了解 pagewriter 线程 本文出处:https://www.modb.pro/db/183172 在前面的 MogDB 学习系列中,我们了解了核心的 bgwrit ...