系统参数优化

默认的Linux内核参数考虑的是最通用场景,不符合用于支持高并发访问的Web服务器的定义,根据业务特点来进行调整,当Nginx作为静态web内容服务器、反向代理或者提供压缩服务器的服务器时,内核参数的调整都是不同的,此处针对最通用的、使Nginx支持更多并发请求的TCP网络参数做简单的配置,修改/etc/sysctl.conf来更改内核参数

net.ipv4.ip_nonlocal_bind = 1
#作为负载均衡服务器一定要开启(LVS、haproxy、nginx),允许某个服务监听在本机所没有的IP地址的端口上,如LVS的vip;作为负载均衡服务器不开启此参数,则服务是无法起来的。 net.ipv4.ip_forward = 1
#开启ipv4转发功能,用于跨网段转发;负载均衡服务器一定要开启。 net.ipv4.tcp_timestamps = 0
#给报文添加时间戳,会对添加时间戳的报文做校验;作为web服务器可开启,作为负载均衡服务器一定要关闭。一个局域网内,都是用一个公网IP,如果访问一个网站的index.html资源,负载均衡服务器处理完一个请求后,又有第二个相同的IP访问相同网站的index.html,这时负载均衡服务器会把第二个报文校验完毕后,发现IP和请求的资源一致,会把报文抛弃掉,所以作为负载均衡服务器必须关闭此参数。 net.ipv4.tcp_tw_reuse = 0
#端口复用;依赖于net.ipv4.tcp_timestamps参数,如果net.ipv4.tcp_timestamps开启,则net.ipv4.tcp_tw_reuse生效,如果没开启,则此参数也不生效。
#参数设置为 1 ,表示允许将TIME_WAIT状态的socket重新用于新的TCP链接,这对于服务器来说意义重大,因为总有大量TIME_WAIT状态的链接存在;用于TCP连接。 net.ipv4.tcp_tw_recycle = 0
#快速回收TIME_WAIT状态,用于大量TIME_OUT场景;依赖于net.ipv4.tcp_timestamps参数。
#这个参数用于设置启用timewait快速回收;开启后,用户如果正在看网页,过会儿再点,会发现断开连接,会重新TCP三次握手建立连接。 fs.file-max = 1000000
#表示单个进程最多可以打开的文件描述符的数量。 net.ipv4.tcp_keepalive_time = 600
#当keepalive启动时,TCP发送keepalive消息的频度;默认是2小时,将其设置为10分钟,可更快的清理无效链接。 net.ipv4.tcp_fin_timeout = 30
#当服务器主动关闭链接时,socket保持在FIN_WAIT_2状态的较大时间。 net.ipv4.tcp_max_tw_buckets = 5000
#表示操作系统允许TIME_WAIT套接字数量的较大值,如超过此值,TIME_WAIT套接字将立刻被清除并打印警告信息,默认为8000,过多的TIME_WAIT套接字会使Web服务器变慢。 net.ipv4.ip_local_port_range = 1024 65000
#定义UDP和TCP链接的本地端口的取值范围。 net.ipv4.tcp_rmem = 10240 87380 12582912
#定义了TCP接受socket请求缓存的内存最小值、默认值、较大值。 net.ipv4.tcp_wmem = 10240 87380 12582912
#定义TCP发送缓存的最小值、默认值、较大值。 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
#表示内核套接字发送缓存区较大大小。
注意:以上的四个参数,需要根据业务逻辑和实际的硬件成本来综合考虑。 net.ipv4.tcp_syncookies = 1
#与性能无关。用于解决TCP的SYN攻击。 net.ipv4.tcp_max_syn_backlog = 8192
#这个参数表示TCP三次握手建立阶段接受SYN请求列队的较大长度,默认1024,将其设置的大一些可使出现。
Nginx繁忙来不及accept新连接时,Linux不至于丢失客户端发起的链接请求。 net.core.somaxconn = 262114
#选项默认值是128,这个参数用于调节系统同时发起的TCP连接数,在高并发的请求中,默认的值可能会导致链接超时或者重传,因此需要结合高并发请求数来调节此值。 net.ipv4.tcp_max_orphans=262114
#选项用于设定系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,孤立链接将立即被复位并输出警告信息。这个限制指示为了防止简单的DOS攻击,不用过分依靠这个限制甚至认为的减小这个值,更多的情况是增加这个值。

nginx之系统参数优化的更多相关文章

  1. Nginx并发访问优化

    Nginx反向代理并发能力的强弱,直接影响到系统的稳定性.安装Nginx过程,默认配置并不涉及到过多的并发参数,作为产品运行,不得不考虑这些因素.Nginx作为产品运行,官方建议部署到Linux64位 ...

  2. Nginx 之六: Nginx十万并发优化

    操作 操作 Nginx 之六: Nginx十万并发优化

  3. Nginx配置性能优化与压力测试webbench【转】

    这一篇我们来说Nginx配置性能优化与压力测试webbench. 基本的 (优化过的)配置 我们将修改的唯一文件是nginx.conf,其中包含Nginx不同模块的所有设置.你应该能够在服务器的/et ...

  4. nginx错误界面优化和日志管理

    nginx错误界面优化 在进行web访问的时候,经常会遇到网站打不开报错的情况,nginx默认的界面并不美观,我们可以通过重定向到自定义的错误页面,提升用户体验,比如淘宝的错误页面还有商品信息和广告. ...

  5. Nginx web服务优化 (一)

    1.Nginx基本安全优化 a.更改配置文件参数隐藏版本 编辑nginx.conf配置文件增加参数,实现隐藏Nginx版本号的方式如下.在nginx配置文件nginx.conf中的http标签段内加入 ...

  6. nginx web服务优化

    nginx基本安全优化 1. 调整参数隐藏nginx软件版本号信息 软件的漏洞和版本有关,我们应尽量隐藏或消除web服务对访问用户显示各类敏感信息(例如web软件名称及版本号等信息),这样恶意的用户就 ...

  7. Linux实战教学笔记38:企业级Nginx Web服务优化实战(下)

    四,Nginx站点目录及文件URL访问控制 4.1 根据扩展名限制程序和文件访问 Web2.0时代,绝大多数网站都是以用户为中心多的,例如:bbs,blog,sns产品,这几个产品都有一个共同特点,就 ...

  8. Linux实战教学笔记37:企业级Nginx Web服务优化实战(上)

    一,Nginx基本安全优化 1.1 调整参数隐藏Nginx软件版本号信息 一般来说,软件的漏洞都和版本有关,这个很像汽车的缺陷,同一批次的要有问题就都有问题,别的批次可能就都是好的.因此,我们应尽量隐 ...

  9. 企业级Nginx Web服务优化实战

    web优化一览总结表 优化类型 优化说明 优化方法 安全优化 隐藏nginx版本信息优化 修改nginx配置文件实现优化 server_tokens off: 修改nginx版本信息优化 修改ngin ...

随机推荐

  1. Spring Security实现OAuth2.0授权服务 - 进阶版

    <Spring Security实现OAuth2.0授权服务 - 基础版>介绍了如何使用Spring Security实现OAuth2.0授权和资源保护,但是使用的都是Spring Sec ...

  2. Eclipse集成Git做团队开发:代码管理

    在日常开发工作中,我们通常使用版本控制软件管理团队的源代码,常用的SVN.Git.与SVN相比,Git有分支的概念,可以从主分支创建开发分支,在开发分支测试没有问题之后,再合并到主分支上去,从而避免了 ...

  3. jquery实现简单定时轮播图

    JS $(document).ready(function(){ var index = 0; //刚开始设置一个index,index为图片的索引值 $(".pictureDemo img ...

  4. Java自学-数字与字符串 数学方法

    Java Math类常用方法 java.lang.Math提供了一些常用的数学运算方法,并且都是以静态方法的形式存在 步骤 1 : 四舍五入, 随机数,开方,次方,π,自然常数 package dig ...

  5. 2019-08-02 原生ajax搜索

    <html> <meta charset="utf-8"/> <head><title>搜索页</title></ ...

  6. 【Java深入研究】11、深入研究hashmap中的hash算法

    一.简介 大家都知道,HashMap中定位到桶的位置 是根据Key的hash值与数组的长度取模来计算的. JDK8中的hash 算法: static final int hash(Object key ...

  7. elasticsearch must 和 should 并列的情况

    在elasticsearch中如果要对几个字段进行查询,然后其中有一个字段可以有多个取值的时候,正常想到的要用should,其实就是或的关系.但是正确的做法,应该是把should并列的条件整合到一个b ...

  8. mysql创建临时表,将查询结果插入已有的表

    A.临时表再断开于mysql的连接后系统会自动删除临时表中的数据,但是这只限于用下面语句建立的表:1)定义字段  CREATE TEMPORARY TABLE tmp_table (      nam ...

  9. JUnit 4.x 与 5.x 的区别?

    区别项 4.x 5.x 手动把测试和测试方法声明为public 需要 不需要 @Test 与JUnit 4的@Test注解不同的是,它没有声明任何属性,因为JUnit Jupiter中的测试扩展是基于 ...

  10. wordpress调用指定id的page页面的方法,适用于多id调用

    前面我们讲到wordpress如何调用指定page页面内容,现在再用另外的方法来调试一下,可以直接在single.php模板使用,同样可以调用多id,随ytkah一起来看看 <?php $arg ...