当前位置: 首页 > news >正文

修改Linux内核参数提高Nginx服务器在高的时候的性能

修改Linux内核参数提高Nginx服务器在高的时候的性能
并发 Linux下高并发的Nginx服务器,当TCP TIME_WAIT套接字数量经常达到两、三万,服务器很容易被拖死。通过修改Linux内核参数,可以减少Nginx服务器的TIME_WAIT套接字数量。

vi /etc/sysctl.conf


增加以下几行:
引用
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 1024    65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000


简单说明:
net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
net.ipv4.tcp_fin_timeout = 30 表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。
net.ipv4.tcp_keepalive_time = 1200 表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。
net.ipv4.ip_local_port_range = 1024    65000 表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。
net.ipv4.tcp_max_syn_backlog = 8192 表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
net.ipv4.tcp_max_tw_buckets = 5000 表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。默认为180000,改为5000。对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于Squid,效果却不大。此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。

echo “====================== 执行以下命令使配置生效:=========================”#http://www.zuihuasuan8.net/ 更改linux内核参数后,立即生效的命令!

/sbin/sysctl -p

Nginx优化

使用FastCGI 缓存
fastcgi_cache TEST
开启FastCGI 缓存并且为其制定一个名称。个人感觉开启缓存非常有用,可以有效降低CPU 负载,并且防止502 错误。

fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2
keys_zone=TEST:10m
inactive=5m;
这个指令为FastCGI 缓存指定一个路径,目录结构等级,关键字区域存储时间和非活动删除时间。


压力测试,用 webbench ,测试结果只能做为参考。
后续还有其他之前做过的参数修改,有空一起分享下。欢迎朋友一起交流,讨论。扣扣:柒⑥柒陆叁⑤叁伍

本文出自 “我站在巨人肩膀上Jimmy Li” 博客

相关文章:

  • Linux系统查看命令大全
  • Cisco路由配置命令
  • SSH如何防破解
  • Windows Credentials Editor v1.2 (WCE)在渗透过程中的关键作用
  • 渗透测试踩点之httprint指纹识别技术
  • 专业渗透人员在渗透过程中一定要记住的事以及数据库拷贝的注意事项
  • 内网渗透中SSh的巧用ring04h
  • 内网嗅探自我保护用到的批处理
  • 配置BT5中文环境
  • 送给linux渗透爱好者的小技巧
  • MySQL注射攻击与防范详解
  • 渗透国内知名公司内部局域网经过
  • Android 手机 超级终端命令解析
  • Penetration Testing 渗透测试
  • snmpwalk命令常用方法总结
  • 【知识碎片】第三方登录弹窗效果
  • Codepen 每日精选(2018-3-25)
  • CSS盒模型深入
  • css选择器
  • JavaScript类型识别
  • Java面向对象及其三大特征
  • leetcode-27. Remove Element
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • 第2章 网络文档
  • 给第三方使用接口的 URL 签名实现
  • 汉诺塔算法
  • 那些被忽略的 JavaScript 数组方法细节
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  •  一套莫尔斯电报听写、翻译系统
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 如何用纯 CSS 创作一个货车 loader
  • 昨天1024程序员节,我故意写了个死循环~
  • (三)elasticsearch 源码之启动流程分析
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • *上位机的定义
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .net CHARTING图表控件下载地址
  • .NET Core 版本不支持的问题
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .Net Web项目创建比较不错的参考文章
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NET企业级应用架构设计系列之技术选型
  • .sh
  • /etc/shadow字段详解
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解
  • @ModelAttribute注解使用
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • [\u4e00-\u9fa5] //匹配中文字符
  • [20180224]expdp query 写法问题.txt
  • [BZOJ] 2006: [NOI2010]超级钢琴
  • [C#]手把手教你打造Socket的TCP通讯连接(一)
  • [English]英语积累本