当linux下Nginx达到并发数很高,TCP TIME_WAIT套接字数量经常达到两、三万,这样服务器很容易被拖死。事实上,我们可以简单的通过修改Linux内核参数,可以减少Nginx服务器 的TIME_WAIT套接字数量,进而提高Nginx服务器并发性能。

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 “====================== 执行以下命令使配置生效:=========================”

#更改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 缓存指定一个路径,目录结构等级,关键字区域存储时间和非活动删除时间

其它说明

Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。

在高并发连接的情况下,Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用。根据我的测试结

果,Nginx 0.6.31 + PHP 5.2.6 (FastCGI) 可以承受3万以上的并发连接数,相当于同等环境下Apache的10倍。

根据我的经验,4GB内存的服务器+Apache(prefork模式)一般只能处理3000个并发连接,因为它们将占用3GB以上的内存,还

得为系统预留1GB的内存。我曾经就有两台Apache服务器,因为在配置文件中设置的MaxClients为4000,当Apache并发连接数达到

3800时,导致服务器内存和Swap空间用满而崩溃。

而这台 Nginx 0.6.31 + PHP 5.2.6 (FastCGI)

服务器在3万并发连接下,开启的10个Nginx进程消耗150M内存(15M*10=150M),开启的64个php-cgi进程消耗1280M内存

(20M*64=1280M),加上系统自身消耗的内存,总共消耗不到2GB内存。如果服务器内存较小,完全可以只开启25个php-cgi进程,这样

php-cgi消耗的总内存数才500M。

来源:https://www.cnblogs.com/YangJieCheng/p/5883801.html

linux内核并发教程,修改Linux内核参数提高Nginx服务器并发性能相关推荐

  1. EOS中JAVA从Linux下载文件,教程 - 在Linux上安装EOS

    你想学习如何在Linux上安装EOS? 在本教程中,我们将向您展示如何在运行Ubuntu Linux的计算机上安装EOS. EOS相关教程: 在此页面上,我们提供了与EOS.IO相关的教程列表的快速访 ...

  2. linux时区文件命令,修改Linux时间和时区

    修改Linux系统时间: 步骤一:修改Linux系统时间: linux系统时钟有两个,一个是硬件时钟,即BIOS时间,就是我们进行CMOS设置时看到的时间,另一个是系统时钟,是linux系统Kerne ...

  3. linux没有i18n文件,修改linux默认语言i18n

    修改linux默认语言i18n 2013-03-19 i18n就是Internationalization的缩写,其原因是I和n之间一共有18个字母,人们常把I18N作为"国际化" ...

  4. 怎么设置数据库服务器的最佳性能,调整Windows参数提高数据库服务器性能

    第1页:提高数据库服务器性能 数据库SQL Server跟Windows操作系统是同一个父母生的,他们在一些技术上具有共通性.这在很多方面都有体现.如在日常工作中,我们可以通过调整Windows操作系 ...

  5. 最简单的docker教程:在docker里运行nginx服务器

    命令行docker search nginx搜索名为nginx的docker image,返回结果的第一个,github上有10293个star,这就是我们想要搜索的结果: 使用命令docker pu ...

  6. kali Linux隐藏IP教程,Kali Linux 设置动/静态IP地址以及修改DNS

    一. 设置IP地址 动/静态 IP 地址设置路径: vim /etc/network/interfaces 1.1 动态IP 配置文件: # This file describes the netwo ...

  7. linux无线网络密码修改,linux无线网络配置工具----iwconfig

    wconfig iwconfig是Linux Wireless Extensions(LWE)的用户层配置工具之一.LWE是Linux下对无线网络配置的工具,包括内核的支持.用户层配置工具和驱动接口的 ...

  8. Linux学习入门级教程:Linux基本命令操作

    本人从事IT行业已有十多年,有着丰富的实战经验,总结了大量的学习方法,更是积累了很多的学习资料,很高兴能在这里跟大家交流学习,希望能在这里跟大家共同进步和成长! 更多学习资料添加扣扣资源群:66130 ...

  9. Kali+Linux+聊天室教程,Kali Linux实战篇:Ettercap 使用教程+DNS欺骗攻击实战

    一.Ettercap 使用教程 EtterCap是一个基于ARP地址欺骗方式的网络嗅探工具.它具有动态连接嗅探.动态内容过滤和许多其他有趣的技巧.它支持对许多协议的主动和被动分析,并包含许多用于网络和 ...

最新文章

  1. linux编译警告不能连接,linux编译警告信息
  2. 2019年春季学期第三周作业
  3. 使JavaDoc保持最新状态的工具
  4. JEECG开源团队招募新成员 2014年
  5. 如何获得select被选中option的value和text和......
  6. linux ulipad,Python for Ulipad(总结ulipad使用)
  7. h5难做吗_H5系列课程| 做一只涨工资的H5 没有你想得那么难
  8. mysql怎么没有中文手册_mysql 中文手册
  9. 一元二次方程的简单解法
  10. 行业寒冬下,简历发了几千次已读不回,功能测试的出路在哪里?
  11. join left 大数据_left join 大数据
  12. org.springframework.dao.InvalidDataAccessApiUsageException: ERR wrong number of arguments for ‘srem‘
  13. 化工厂人员定位应考虑哪些因素?
  14. IE浏览器打不开jupyter notebook网页的解决办法
  15. PR(Adobe Premimere)视频剪辑软件初次安装新手设置建议
  16. 无公网IP,外网远程连接MySQL数据库
  17. 提取矩阵每一行非零下标及个数
  18. oracle查询count很慢
  19. 论文查重标题写错了怎么办?
  20. 丹麦或将使用区块链为贫困地区提供援助

热门文章

  1. 手把手教你学习ROR-5.Validation
  2. 深入理解计算机系统(2.4)---C语言的有符号与无符号、二进制整数的扩展与截断...
  3. 笔者认为,中国的互联网行业需要真正的CEO
  4. Python程序提示出现File stdin,line 1错误解决方法
  5. [转载] python之flask框架
  6. Vivado中电路结构的网表描述
  7. Vue.js 学习笔记 八 v-for
  8. bzoj千题计划269:bzoj2655: calc (拉格朗日插值)
  9. ExtJS4.2学习(七)EditorGrid可编辑表格(转)
  10. 再解Java中的String