Nginx服务器常用参数设置
Nginx作为一个高性能的Web服务器和反向代理,它的性能可以通过调整底层操作系统的参数来进一步优化。以下是一些常见的操作系统级别的调整,通常针对Linux系统:
File Descriptors Limit: 增加文件描述符的数量可以允许Nginx打开更多的连接。
ulimit -n 2048 # 临时设置,只影响当前会话 # 要永久设置,在/etc/security/limits.conf中添加: * soft nofile 2048 * hard nofile 4096TCP/IP Stack Tuning: 优化内核参数以提高网络性能。
net.core.somaxconn:增加监听服务的backlog队列,允许更多等待接受的连接。sysctl -w net.core.somaxconn=4096net.ipv4.tcp_max_syn_backlog:针对具有大量并发连接请求的系统,增加SYN队列的长度。sysctl -w net.ipv4.tcp_max_syn_backlog=2048net.ipv4.tcp_tw_reuse:允许重新使用处于TIME_WAIT状态的socket用于新的TCP连接。sysctl -w net.ipv4.tcp_tw_reuse=1net.ipv4.ip_local_port_range:扩大用于出站连接的本地端口范围。sysctl -w net.ipv4.ip_local_port_range="1024 65535"
Disable Swapping: 对于要求高性能的服务器,通常建议禁用交换空间(swap),因为磁盘I/O速度远低于内存。
- 通过设置
vm.swappiness参数为0来减少交换的使用。sysctl -w vm.swappiness=0
- 通过设置
File System Tuning: 对于文件系统的调整,比如使用
noatime挂载选项可以提高文件系统性能,因为它防止了对文件的访问时间的更新。- 在
/etc/fstab文件中,可以给相关的挂载点添加noatime选项。
- 在
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 状态对端口资源的影响,你可以:
调整 TIME_WAIT 时间:
- 通过减少
net.ipv4.tcp_fin_timeout的值来减少 TIME_WAIT 状态的持续时间。 - 例如:
sysctl -w net.ipv4.tcp_fin_timeout=30可以将 TIME_WAIT 时间减少到30秒。
- 通过减少
启用端口复用:
- 设置
net.ipv4.tcp_tw_reuse为1,允许系统在安全的情况下更快地复用 TIME_WAIT 状态的端口。 - 例如:
sysctl -w net.ipv4.tcp_tw_reuse=1。
- 设置
增加本地端口范围:
- 通过扩大
net.ipv4.ip_local_port_range的范围,可以增加可用于出站连接的端口数量。 - 例如:
sysctl -w net.ipv4.ip_local_port_range="1024 65535"。
- 通过扩大
使用长连接:
- 配置服务和客户端使用长连接(keep-alive),减少连接的频繁建立和关闭。
负载均衡和反向代理:
- 使用负载均衡器和反向代理来减少后端服务器上的直接连接数量。
监控和分析:
- 持续监控系统状态,分析网络流量模式,以识别可能导致大量 TIME_WAIT 的行为并进行优化。
请注意,net.ipv4.tcp_tw_recycle 选项已在 Linux 4.12+ 内核中移除,因为它与网络地址转换(NAT)不兼容,可能导致连接问题。
在调整这些参数时,要注意它们可能对网络通信的可靠性和性能有重大影响,任何更改都应该小心翼翼地进行,并在实施之前充分测试。
Nginx服务器常用参数设置的更多相关文章
- Nginx 服务器性能参数设置
Nginx服务器性能调优 Nginx 配置文件 1.根据CPU内核数设置worker进程个数,以12核CPU为例,设置11个worker进程: worker_processes 11; worker_ ...
- Nginx代理常用参数
目录 一:Nginx代理常用参数 1.添加发往后端服务器的请求头信息 二:参数案例 1.lb01配置文件 2.web01 web02 web服务器 3.测试 4.重启 5.DNS域名解析 6.网址测试 ...
- nginx服务器绑定域名和设置根目录的方法
nginx服务器绑定域名以及设置根目录非常方便,首先进入nginx安装目录,然后执行 vim conf/nginx.conf 打开nginx的配置文件,找到 server { ..... ..... ...
- jvm常用参数设置 good
1.堆的大小可以通过 -Xms 和 -Xmx 来设置,一般将他们设置为相同的大小,目的是避免在每次垃圾回收后重新调整堆的大小,比如 -Xms=2g -Xmx=2g 或者 -Xms=512m -Xmx= ...
- jvm常用参数设置 专题
在jdk8中 -Xms2g不合法,能通过的:-Xms2G #!/bin/bash JAVA_OPTS="-Xms4G -Xmx4G -XX:+HeapDumpOnOutOfMemoryErr ...
- Appium 自动化测试(7) -- Appium 服务器初始化参数设置
Desired Capabilities Desired capabilities 是一些发送给 Appium 服务器的键值对集合 (比如 map 或 hash),告诉服务器我们想要启动什么类型的自动 ...
- ubuntu 常用参数设置
在Linux下,对于参数的设置,一般来说,都遵循这个规律.每一个功能程序,一定对于一个对于名字的配置文件. 涉及到多用户的功能配置,一定有一个全局的配置文件,对所有用户都生效,而每个用 ...
- JVM常用参数设置
堆内存设置 示例: java -Xmx4550m -Xms4550m -Xss128k -XX:NewRatio=5 -XX:SurvivorRatio=5 -Xmx4550m:设置JVM最大可用内存 ...
- JVM笔记-GC常用参数设置
GC常用参数 -Xmn -Xms -Xmx -Xss 年轻代 最小堆 最大堆 栈空间, -Xms -Xmx 一般设置成一样大小, -XX:+UseTLAB 使用TLAB,默认打开 -XX:+Print ...
- Fusioncharts图表常用参数设置
1.1 <chart>参数设置: 图表和轴的标题* caption=”String” : 图表上方的标题* subCaption=”String” : 图表上方的副标题* xAxisNam ...
随机推荐
- 纯前端导出word手写复杂表格,并还原成word。百分百还原表格。一文搞定前端表格导出为word
本次的需求是手写一个养老院老人生活能力评定表,并且要能够录入信息,最终导出 表格因为有七页所以代码很多,可以不用看表格模板的详细代码. 先贴上最终效果图 填写完导出之后 基本上实现了样式的百分百还原导 ...
- IDEA 配置桌面快捷方式
IDEA 配置桌面快捷方式 目录 IDEA 配置桌面快捷方式 1.下载idea.tar解压 2.配置快捷方式 3.为什么要存放在这个目录? 1.下载idea.tar解压 tar xf ideaIC-2 ...
- Excel单元格快速交换相邻位置内容
一.相邻两列内容交换(A1与B1交换)1.首先选择A1单元格的边框位置,出现了向上下左右的十字标志 2.此时按住shift键,并且拖向B1单元格的右边,出现"工"汉字标志 3.松开 ...
- 15种实时uv实现方案系列(附源码)之一:Flink基于set实时uv统计
UVStatMultiPlans(GitHub)项目持续收集各种高性能实时uv实现方案并对各种实现方案的优缺点进行对比分析! 需求描述 统计每分钟用户每个页面的uv访问量. Kafka数据格式 {&q ...
- iperf 工具使用总结
转载请注明出处: iperf是一个用于测量网络带宽的工具,可以通过客户端和服务器之间的数据传输来评估网络性能.下面详细介绍iperf的使用方法.常用命令和参数以及注意事项,并提供一些示例说明.在ipe ...
- 织梦DEDEBIZ调用全站文章数量
织梦DEDEBIZ如何调用全站文章数量{dede:sql sql="select count(*) as c from biz_archives} 共有文章:[field:c/] 篇 {/d ...
- python判断ip所属地区 python 判断ip 网段
IP地址是互联网中唯一标识一个设备的地址,有时候需要判断一个IP地址所属的地区,这就需要用到IP地址归属查询.本文将介绍Python如何通过IP地址查询所属地区并展示代码. 一. IP地址归属查询 I ...
- JUC并发编程(1)—CompletableFuture详解
@ 目录 CompletableFuture介绍 1.创建异步任务 2.CompletableFuture API ①. 获得结果和触发计算(get.getNow.join.complete) ②. ...
- P4032 [Code+#2] 火锅盛宴
prologue 树状数组推荐写法,感谢巨佬樱雪喵的教学. inline int lowbit(int x) { return x & -x; } inline void add(int x, ...
- C#学习笔记--复杂数据类型、函数和结构体
C#基础 复杂数据类型 特点:多个数据变量地一个集合体,可以自己命名 种类:枚举.数组和结构体 枚举:整型常量的集合 数组:任意变量类型的顺序存储的数据集合 结构体:任意变量类型的数据组合成的数据块 ...