首页 > 系统相关 >Nginx服务器常用参数设置

Nginx服务器常用参数设置

时间:2023-12-22 14:34:16浏览次数:30  
标签:sysctl 端口 Nginx ipv4 TIME 服务器 net 连接 参数设置

Nginx作为一个高性能的Web服务器和反向代理,它的性能可以通过调整底层操作系统的参数来进一步优化。以下是一些常见的操作系统级别的调整,通常针对Linux系统:

  1. File Descriptors Limit: 增加文件描述符的数量可以允许Nginx打开更多的连接。

    ulimit -n 2048 # 临时设置,只影响当前会话 # 要永久设置,在/etc/security/limits.conf中添加: * soft nofile 2048 * hard nofile 4096
  2. TCP/IP Stack Tuning: 优化内核参数以提高网络性能。

    • net.core.somaxconn:增加监听服务的backlog队列,允许更多等待接受的连接。 sysctl -w net.core.somaxconn=4096
    • net.ipv4.tcp_max_syn_backlog:针对具有大量并发连接请求的系统,增加SYN队列的长度。 sysctl -w net.ipv4.tcp_max_syn_backlog=2048
    • net.ipv4.tcp_tw_reuse:允许重新使用处于TIME_WAIT状态的socket用于新的TCP连接。 sysctl -w net.ipv4.tcp_tw_reuse=1
    • net.ipv4.ip_local_port_range:扩大用于出站连接的本地端口范围。 sysctl -w net.ipv4.ip_local_port_range="1024 65535"
  3. Disable Swapping: 对于要求高性能的服务器,通常建议禁用交换空间(swap),因为磁盘I/O速度远低于内存。

    • 通过设置vm.swappiness参数为0来减少交换的使用。 sysctl -w vm.swappiness=0
  4. File System Tuning: 对于文件系统的调整,比如使用noatime挂载选项可以提高文件系统性能,因为它防止了对文件的访问时间的更新。

    • /etc/fstab文件中,可以给相关的挂载点添加noatime选项。
  5. Control Groups (cgroups): 在Linux上,你可以使用cgroups来限制Nginx进程可以使用的资源量。

这些是一些基本的调整,但是实际上可能还有更多的参数和设置可以调整,这取决于你的具体使用场景和系统架构。在进行任何调整之前,确保你了解每个参数的作用,并且对你的系统进行了备份。同时,建议在测试环境中先行测试这些更改,以确保它们不会对你的系统稳定性造成负面影响。

另外,要应用这些更改,可以使用sysctl命令,例如sysctl -w parameter=value来立即应用更改,或者修改/etc/sysctl.conf文件并使用sysctl -p命令来应用并持久化这些设置。对于文件描述符限制等设置,你可能需要修改/etc/security/limits.conf文件或相关的服务启动脚本。

如果Nginx有大量端口被占用,可以用以下指令分析端口的占用情况

netstat -an | grep ':80' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr

如果Nginx有大量TimeWait的端口,如何分析解决:

TIME_WAIT 是 TCP 连接在正常关闭后的一种状态。这个状态的存在对于网络的健康运作是必要的,因为它可以确保连接双方都能正常接收到所有的数据包,并且确保旧连接的延迟数据包不会对新的连接产生干扰。

在 TIME_WAIT 状态,操作系统会保持这个连接的端口号和其他资源一段时间(通常是2个最大报文生命周期(MSL))。这个时间段通常是60秒,但可以通过调整内核参数来修改。在这段时间内,端口号被认为是"正在使用"的,所以它不能被分配给新的TCP连接。如果服务器频繁地打开和关闭连接,这可能会导致大量的端口处于 TIME_WAIT 状态,这在高性能或高并发的服务器上可能成为一个问题。

TIME_WAIT 状态占用的端口并不是“使用中”(active use)的端口,它们不再参与数据传输,但是这些端口不能立即被新的TCP连接使用。这可能导致端口资源的短暂耗尽,尤其是在高流量的服务器上,如Web服务器,可能需要快速回收和重新使用端口。

要减少 TIME_WAIT 状态对端口资源的影响,你可以:

  1. 调整 TIME_WAIT 时间:

    • 通过减少 net.ipv4.tcp_fin_timeout 的值来减少 TIME_WAIT 状态的持续时间。
    • 例如:sysctl -w net.ipv4.tcp_fin_timeout=30 可以将 TIME_WAIT 时间减少到30秒。
  2. 启用端口复用:

    • 设置 net.ipv4.tcp_tw_reuse 为 1,允许系统在安全的情况下更快地复用 TIME_WAIT 状态的端口。
    • 例如:sysctl -w net.ipv4.tcp_tw_reuse=1
  3. 增加本地端口范围:

    • 通过扩大 net.ipv4.ip_local_port_range 的范围,可以增加可用于出站连接的端口数量。
    • 例如:sysctl -w net.ipv4.ip_local_port_range="1024 65535"
  4. 使用长连接:

    • 配置服务和客户端使用长连接(keep-alive),减少连接的频繁建立和关闭。
  5. 负载均衡和反向代理:

    • 使用负载均衡器和反向代理来减少后端服务器上的直接连接数量。
  6. 监控和分析:

    • 持续监控系统状态,分析网络流量模式,以识别可能导致大量 TIME_WAIT 的行为并进行优化。

请注意,net.ipv4.tcp_tw_recycle 选项已在 Linux 4.12+ 内核中移除,因为它与网络地址转换(NAT)不兼容,可能导致连接问题。

在调整这些参数时,要注意它们可能对网络通信的可靠性和性能有重大影响,任何更改都应该小心翼翼地进行,并在实施之前充分测试。

 

标签:sysctl,端口,Nginx,ipv4,TIME,服务器,net,连接,参数设置
From: https://www.cnblogs.com/tianqing/p/17921510.html

相关文章

  • 服务器数据恢复-操作系统重装操作失误导致OceanStor存储xfs分区无法访问的数据恢复案
    服务器数据恢复环境:某品牌OceanStorT系列某型号存储+MD1200磁盘柜,组建的raid5磁盘阵列。上层分配了1个lun,安装的linux操作系统,划分两个分区,分区一通过lvm进行扩容,分区二格式化为xfs文件系统。服务器故障:重装系统操作失误导致上层linux操作系统分区改变,XFS文件系统分区由于未知原......
  • 首批!天翼云大数据平台率先通过信通院无服务器架构大数据平台测试
    近日,天翼云大数据平台顺利完成中国信通院无服务器(Serverless)架构大数据平台测试,成为首批通过该测试的单位之一。本次测试依据《基于无服务器(Serverless)架构的大数据平台技术要求》展开。该要求是中国信通院云计算与大数据研究所依托中国通信标准化协会大数据技术标准推进委员......
  • nginx配置防盗链
    nginx路径下html中新建images文件夹,放入可以访问的图片。然后新建referer文件夹,放入防盗图片   server增加如下配置location~*\.(jpg|png)${roothtml;#只允许本地ip访问静态资源,其他访问返回防盗图片valid_referersnone127.0.......
  • 腾讯云服务器sdk
     参考:https://cloud.tencent.com/document/product/494/7244 pipinstall-ihttps://mirrors.tencent.com/pypi/simple/--upgradetencentcloud-sdk-pythoncred有两种方式。我这里用第一种方式,直接写aksk就可以了importosfromtencentcloud.commonimportcredential......
  • Linux 定位服务器硬盘槽位的方法
    版权声明:原创作品,谢绝转载!否则将追究法律责任。—————作者:kirinLinux定位服务器硬盘槽位的方法1、安装sas3ircu工具2、获取磁盘SN号码2.1、使用smartctl命令获取smartctl-a/dev/sd*|grepSerial2.2、查看文件获取ll/dev/disk/by-id/|grepsd*3、通过硬盘S......
  • nginx调优-调大rlimit_nofile
    前言对于Linux用户或用户组打开的进程,Linux系统会对进程可占用的资源进行限制。该限制针对特定Linux用户或用户组,限制范围是该Linux用户或用户组打开的所有进程。遇到的异常nginx转发的流量比较大。因此在nginx.conf中,存在如下配置:worker_rlimit_nofile131072;event{......
  • 三丰的云服务器哪个好用免费
    随着云计算技术的发展,越来越多的企业和个人开始寻找一款性价比高且功能全面的云服务器,三丰作为一个具备高性能、可靠性、安全性和强大扩展性的云服务器厂商,备受云计算用户们的关注。那么,三丰服务器哪个好用免费呢?下面将为大家介绍三丰服务器的免费使用情况。一、三丰服务器概述......
  • C# 获取Http请求服务器响应的cookie
    stringurl="http://localhost:5082/cookie/test2";varcookies=newCookieContainer();varhandler=newHttpClientHandler(){CookieContainer=cookies};HttpClientclient=newHttpClient(handler);Dictionary<string,string>dic=ne......
  • 首批!天翼云大数据平台率先通过信通院无服务器架构大数据平台测试
    近日,天翼云大数据平台顺利完成中国信通院无服务器(Serverless)架构大数据平台测试,成为首批通过该测试的单位之一。本次测试依据《基于无服务器(Serverless)架构的大数据平台技术要求》展开。该要求是中国信通院云计算与大数据研究所依托中国通信标准化协会大数据技术标准推进委员会(C......
  • nginx下的proxy_pass使用
    之前的文章说到了,return,rewrite的使用,以及它们的使用场景,今天再来说一种代理的使用,proxy_pass,它属于nginx下的ngx_http_proxy_module模块,没有显示的重定向(看不到30x的重定向),客户端是不知道的,是服务器内部进行转发的浏览器访问地址:http://m.9000.local/index/get,执行代码如下:$a=......