Linux性能压测——Stress

# Stress介绍使用

### 一、安装

#### 1、离线安装:

https://github.com/ColinIanKing/stress-ng/archive/refs/heads/master.zip

 

#### 2、yum安装:

 

#### 3、版本查询:

 

#### 4、基本语法:

复制代码
```
语法格式:
stress <options>

常用选项:
-c, --cpu N 产生N个进程,每个进程都反复不停的计算随机数的平方根
-i, --io N 产生N个进程,每个进程反复调用sync()将内存上的内容写到硬盘上
-m, --vm N 产生N个进程,每个进程不断分配和释放内存
--vm-bytes B 指定分配内存的大小
--vm-stride B 不断的给部分内存赋值,让COW(Copy On Write)发生
--vm-hang N 指示每个消耗内存的进程在分配到内存后转入睡眠状态N秒,然后释放内存,一直重复执行这个过程
--vm-keep 一直占用内存,区别于不断的释放和重新分配(默认是不断释放并重新分配内存)
-d, --hadd N 产生N个不断执行write和unlink函数的进程(创建文件,写入内容,删除文件)
--hadd-bytes B 指定文件大小
-t, --timeout N 在N秒后结束程序
--backoff N 等待N微妙后开始运行
-q, --quiet 程序在运行的过程中不输出信息
-n, --dry-run 输出程序会做什么而并不实际执行相关的操作
--version 显示版本号
-v, --verbose 显示详细的信息
```
复制代码

### 二、CPU加压:

#### 1、对2个CPU打满,并使用mpstat和pidstat观察

```

# stress -c N:调用sqrt()函数不停的对随机数求平方根

复制代码
# stress -c 2 --timeout 60s

# mpstat -P ALL 1 100
Linux 3.10.0-1160.88.1.el7.x86_64 (CentOS7-Debug-1) 04/06/2023 _x86_64_ (4 CPU)

04:12:01 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
04:12:02 AM all 49.87 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 50.13
04:12:02 AM 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
04:12:02 AM 1 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
04:12:02 AM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
04:12:02 AM 3 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
复制代码

 

# 如图所示,CPU1、3消耗CPU资源大,且占用CPU资源多的是stress命令发起的进程

# pidstat -T ALL 1 100
Linux 3.10.0-1160.88.1.el7.x86_64 (CentOS7-Debug-1) 04/06/2023 _x86_64_ (4 CPU)

04:14:19 AM UID PID %usr %system %guest %CPU CPU Command
04:14:20 AM 0 2634 100.00 0.00 0.00 100.00 3 stress
04:14:20 AM 0 2635 100.00 0.00 0.00 100.00 1 stress
04:14:20 AM 0 2636 0.00 0.99 0.00 0.99 0 pidstat

 

# 根据进程号,查看单个进程:

# pidstat -p 2316
Linux 3.10.0-1160.88.1.el7.x86_64 (CentOS7-Debug-1) 04/06/2023 _x86_64_ (4 CPU)

11:33:39 PM UID PID %usr %system %guest %CPU CPU Command
11:33:39 PM 0 2316 3.44 0.00 0.00 3.44 1 stress

 

# 查询每个进程的IO情况:

复制代码
# pidstat -d | head
Linux 3.10.0-1160.88.1.el7.x86_64 (CentOS7-Debug-1) 04/10/2023 _x86_64_ (4 CPU)

04:32:02 AM UID PID kB_rd/s kB_wr/s kB_ccwr/s Command
04:32:02 AM 0 1 4835.63 0.19 0.05 systemd
04:32:02 AM 0 5 0.00 0.00 0.00 kworker/u256:0
04:32:02 AM 0 46 0.00 0.00 0.00 kswapd0
04:32:02 AM 0 455 0.06 0.00 0.00 xfsaild/dm-0
04:32:02 AM 0 535 0.89 0.00 0.00 systemd-journal
04:32:02 AM 0 556 0.01 0.00 0.00 lvmetad
04:32:02 AM 0 570 1.63 0.00 0.00 systemd-udevd
复制代码

 

# 查询某个进程的IO情况

# pidstat -d -p 2521
Linux 3.10.0-1160.88.1.el7.x86_64 (CentOS7-Debug-1) 04/10/2023 _x86_64_ (4 CPU)

04:33:07 AM UID PID kB_rd/s kB_wr/s kB_ccwr/s Command
04:33:07 AM 0 2521 0.00 0.00 0.00 stress

 

# 查询每个进程的上下文切换情况

复制代码
# pidstat -w | head
Linux 3.10.0-1160.88.1.el7.x86_64 (CentOS7-Debug-1) 04/10/2023 _x86_64_ (4 CPU)

04:34:20 AM UID PID cswch/s nvcswch/s Command
04:34:20 AM 0 1 0.28 0.26 systemd
04:34:20 AM 0 2 0.02 0.00 kthreadd
04:34:20 AM 0 3 3.19 0.00 kworker/0:0
04:34:20 AM 0 4 0.00 0.00 kworker/0:0H
04:34:20 AM 0 5 0.32 0.01 kworker/u256:0
04:34:20 AM 0 6 3.22 0.00 ksoftirqd/0
04:34:20 AM 0 7 0.09 0.00 migration/0
复制代码

 

# 查询特定进程的上下文切换情况

# pidstat -w -p 2521
Linux 3.10.0-1160.88.1.el7.x86_64 (CentOS7-Debug-1) 04/10/2023 _x86_64_ (4 CPU)

04:34:07 AM UID PID cswch/s nvcswch/s Command
04:34:07 AM 0 2521 0.00 0.00 stress

 

#### 2、对半数CPU打满加压:

复制代码
```
# cat cpu_stress.sh

#! /bin/bash

# 查询本机逻辑CPU个数:
cpu=`cat /proc/cpuinfo | grep "processor" | wc -l`
echo $cpu

# 对半数CPU进行压测:
let count=$cpu/2
echo $count
stress -c $count
```
复制代码

 

#### 3、创建CPU密集型进程(CPU资源利用率接近100%):

复制代码
# stress -c 5 --timeout 600s

# 输出所有CPU状态,每秒一次,输出三次
# mpstat -P ALL 1 3
Linux 3.10.0-1160.88.1.el7.x86_64 (CentOS7-Debug-1) 04/06/2023 _x86_64_ (4 CPU)

05:11:19 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
05:11:20 AM all 99.71 0.00 0.29 0.00 0.00 0.00 0.00 0.00 0.00 0.00
05:11:20 AM 0 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
05:11:20 AM 1 98.82 0.00 0.00 0.00 0.00 1.18 0.00 0.00 0.00 0.00
05:11:20 AM 2 98.84 0.00 1.16 0.00 0.00 0.00 0.00 0.00 0.00 0.00
05:11:20 AM 3 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
复制代码

 

# 输出所有任务状态,每秒一次,输出三次

复制代码
# pidstat -T ALL 1 3
Linux 3.10.0-1160.88.1.el7.x86_64 (CentOS7-Debug-1) 04/06/2023 _x86_64_ (4 CPU)

05:12:15 AM UID PID %usr %system %guest %CPU CPU Command
05:12:16 AM 0 42 0.00 0.97 0.00 0.97 0 kworker/0:1
05:12:16 AM 0 2507 0.00 4.85 0.00 4.85 2 kworker/2:1
05:12:16 AM 0 2792 0.00 2.91 0.00 2.91 1 kworker/1:2
05:12:16 AM 0 2795 89.32 0.00 0.00 89.32 1 stress
05:12:16 AM 0 2796 78.64 0.00 0.00 78.64 3 stress
05:12:16 AM 0 2797 71.84 0.00 0.00 71.84 1 stress
05:12:16 AM 0 2798 66.02 0.00 0.00 66.02 0 stress
05:12:16 AM 0 2799 82.52 0.97 0.00 83.50 2 stress

05:12:15 AM UID PID usr-ms system-ms guest-ms Command
05:12:16 AM 0 42 0 10 0 kworker/0:1
05:12:16 AM 0 2507 0 50 0 kworker/2:1
05:12:16 AM 0 2792 0 30 0 kworker/1:2
05:12:16 AM 0 2795 920 0 0 stress
05:12:16 AM 0 2796 810 0 0 stress
05:12:16 AM 0 2797 740 0 0 stress
05:12:16 AM 0 2798 680 0 0 stress
05:12:16 AM 0 2799 850 10 0 stress
复制代码

 

### 三、内存加压:

#### 1、多进程预占内存

# 模拟2个进程,每个进程分配1000M的内存

复制代码
# stress --vm 2 --vm-bytes 1000M --vm-keep

# top查询,消耗内存最高的是stress进程
# top
top - 21:42:34 up 10 min, 3 users, load average: 2.64, 1.58, 0.68
Tasks: 142 total, 6 running, 136 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.6 us, 52.2 sy, 0.0 ni, 24.1 id, 13.7 wa, 0.0 hi, 9.4 si, 0.0 st
KiB Mem : 1862820 total, 52208 free, 1781684 used, 28928 buff/cache
KiB Swap: 2097148 total, 1047804 free, 1049344 used. 10368 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1760 root 20 0 1031316 817656 12 R 67.0 43.9 2:50.75 stress
1761 root 20 0 1031316 814272 12 R 71.0 43.7 2:49.65 stress
复制代码

 

# 检查进程,两个stress进程消耗CPU也高达77%,78%

# ps -elf | grep -P 'stress|TIME' | grep -v grep | column -t
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
0 S root 1828 1791 0 80 0 - 1828 do_wai 19:52 pts/0 00:00:00 stress --vm 2 --vm-bytes 1000M --vm-keep
1 D root 1829 1828 77 80 0 - 257829 wait_o 19:52 pts/0 00:03:47 stress --vm 2 --vm-bytes 1000M --vm-keep
1 D root 1830 1828 78 80 0 - 257829 wait_o 19:52 pts/0 00:03:50 stress --vm 2 --vm-bytes 1000M --vm-keep

# vmstat

 

#### 2、对半数内存进行加压耗尽:

复制代码
# cat mem_stress.sh

#! /bin/bash

# 查询本机内存值:
mem=`cat /proc/meminfo | grep MemTotal | awk '{print $2}'`
echo $mem

# 对半数内存进行消耗:
let n=$mem/2
let num=$n/1024
echo $num

# 模拟1个进程,分配半数内存
stress --vm 1 --vm-bytes $num+M --vm-keep
复制代码

 

### 四、IO加压:

#### 1、模拟4个进程压测IO:

# 模拟4个进程,调用sync()方法将系统内存上的内容写到磁盘上。
# 如果主机内存上的内容很少,将不会出现明显iowait
# sync是刷新内存缓冲区数据到磁盘中,以确保同步。如果内存缓冲区内没多少数据,读写到磁盘中的数据也就不多,没法产生IO压力

# stress -i 4

 

#### 2、压测磁盘

复制代码
# stress -d N:模拟产生N个进程,每个进程往当前目录中写入固定大小的临时文件,然后执行unlink操作删除该临时文件。临时文件的大小默认为1G,但可以通过--hdd-bytes设置临时文件的大小
# 模拟8个进程,不断的在磁盘上创建1000M的文件,并写入内容
# stress -d 8 --hdd-bytes 1000M

# top
Tasks: 149 total, 1 running, 148 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.1 us, 1.3 sy, 0.0 ni, 3.1 id, 95.1 wa, 0.0 hi, 0.4 si, 0.0 st
KiB Mem : 1862820 total, 79836 free, 143644 used, 1639340 buff/cache
KiB Swap: 2097148 total, 2024636 free, 72512 used. 1549548 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
46 root 20 0 0 0 0 S 1.7 0.0 4:55.75 kswapd0
2080 root 20 0 0 0 0 D 1.3 0.0 0:27.28 kworker/u256:3
2222 root 20 0 8216 1128 32 D 1.0 0.1 0:03.37 stress
2223 root 20 0 8216 1128 32 D 1.0 0.1 0:03.35 stress
2224 root 20 0 8216 1128 32 D 1.0 0.1 0:03.35 stress
2225 root 20 0 8216 1128 32 D 1.0 0.1 0:03.37 stress
2226 root 20 0 8216 1128 32 D 1.0 0.1 0:03.27 stress
2227 root 20 0 8216 1128 32 D 1.0 0.1 0:03.39 stress
2229 root 20 0 8216 1128 32 D 1.0 0.1 0:03.38 stress
2228 root 20 0 8216 1128 32 D 0.7 0.1 0:03.41 stress


# iotop

Total DISK READ : 0.00 B/s | Total DISK WRITE : 75.30 M/s
Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 78.60 M/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
2223 be/4 root 0.00 B/s 9.67 M/s 0.00 % 99.99 % stress -d 8 --hdd-bytes 1000M
2224 be/4 root 0.00 B/s 9.44 M/s 0.00 % 99.88 % stress -d 8 --hdd-bytes 1000M
2226 be/4 root 0.00 B/s 9.44 M/s 0.00 % 99.48 % stress -d 8 --hdd-bytes 1000M
2225 be/4 root 0.00 B/s 9.44 M/s 0.00 % 99.40 % stress -d 8 --hdd-bytes 1000M
2222 be/4 root 0.00 B/s 9.21 M/s 0.00 % 98.66 % stress -d 8 --hdd-bytes 1000M
2229 be/4 root 0.00 B/s 9.44 M/s 0.00 % 98.46 % stress -d 8 --hdd-bytes 1000M
2227 be/4 root 0.00 B/s 9.44 M/s 0.00 % 98.38 % stress -d 8 --hdd-bytes 1000M
2228 be/4 root 0.00 B/s 9.21 M/s 0.00 % 97.56 % stress -d 8 --hdd-bytes 1000M
2080 be/4 root 0.00 B/s 0.00 B/s 0.00 % 89.46 % [kworker/u256:3]
复制代码

 

### 五、组合测试:

#### 1、同时消耗CPU、内存、磁盘IO:

# stress -c 4 -m 2 -d 2

 

###六、TCP长连接和短连接调优

#### 1、服务器内核优化

  • 100W TCP长连接:修改程序最大打开文件数

  例1:被压测服务器需要保持100W长连接,客户和服务器端是通过socket通讯的,每个连接需要建立一个socket,程序需要保持100W长连接就需要单个程序能打开100W个文件句柄

  # 查看系统默认的值
  ulimit -n
  # 设置最大打开文件数
  ulimit -n 1040000 

    这里设置的要超过100W,程序除了有100W连接还有其它资源连接(数据库、资源等连接),这里设置为 104W

  • centOS 7.6 上述设置不生效,需要手动修改配置文件

 

复制代码
vim /etc/security/limits.conf

这里需要把硬限制和软限制、root用户和所有用户都设置为 1040000

core 是限制内核文件的大小,这里设置为 unlimited

# 添加以下参数
root soft nofile 1040000
root hard nofile 1040000
root soft nproc 1040000
root hard nproc 1040000

* soft nofile 1040000
* hard nofile 1040000
* soft nproc 1040000
* hard nproc 1040000

root soft core unlimited
root hard core unlimited

* soft core unlimited
* hard core unlimited
复制代码

 

  • 参考

https://www.cnblogs.com/operationhome/p/11966041.html

 

 

  • 注意:

/proc/sys/fs/file-max 表示系统级别的能够打开的文件句柄的数量,不能小于limits中设置的值

如果file-max的值小于limits设置的值会导致系统重启以后无法登录


# file-max 设置的值参考
cat /proc/sys/fs/file-max
12553500
修改以后重启服务器,ulimit -n 查看配置是否生效


####2、 客户端配置

  • 系统端口概述

    由于linux端口的范围是 0~65535(2^16-1)这个和操作系统无关,不管linux是32位的还是64位的。

    这个数字是由tcp协议决定的,tcp协议头部表示端口有16位,所以最大值是65535(如果每台机器多几个虚拟ip就能突破这个限制)。

    端口号1024以下是系统保留端口,所以剩余可用端口是1024到65535。  

复制代码
例2:如果需要100W长连接,每台机器有 65535-1024 个端口, 100W / (65535-1024) ≈ 15.5,所以这里需要16台服务器

vim /etc/sysctl.conf 在文件末尾添加

net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_mem = 786432 2097152 3145728
net.ipv4.tcp_rmem = 4096 4096 16777216
net.ipv4.tcp_wmem = 4096 4096 16777216
 
sysctl -p 修改配置以后使得配置生效命令
复制代码

配置解释:

  • ip_local_port_range 表示TCP/UDP协议允许使用的本地端口号 范围:1024~65000
  • tcp_mem 确定TCP栈应该如何反映内存使用,每个值的单位都是内存页(通常是4KB)。第一个值是内存使用的下限;第二个值是内存压力模式开始对缓冲区使用应用压力的上限;第三个值是内存使用的上限。在这个层次上可以将报文丢弃,从而减少对内存的使用。对于较大的BDP可以增大这些值(注意,其单位是内存页而不是字节)
  • tcp_rmem 为自动调优定义socket使用的内存。第一个值是为socket接收缓冲区分配的最少字节数;第二个值是默认值(该值会被rmem_default覆盖),缓冲区在系统负载不重的情况下可以增长到这个值;第三个值是接收缓冲区空间的最大字节数(该值会被rmem_max覆盖)。
  • tcp_wmem 为自动调优定义socket使用的内存。第一个值是为socket发送缓冲区分配的最少字节数;第二个值是默认值(该值会被wmem_default覆盖),缓冲区在系统负载不重的情况下可以增长到这个值;第三个值是发送缓冲区空间的最大字节数(该值会被wmem_max覆盖)。

 

####3、 TCP连接伴随着TIME_WAIT问题

  • Q: 压测过程中会出现大量 TIME_WAIT
A: 参考TCP四次挥手原理,主动关闭连接的一方会出现 TIME_WAIT 状态,等待的时长为 2MSL(约1分钟左右)

原因是主动断开的一方回复 ACK 消息可能丢失,TCP 是可靠的传输协议,在没有收到 ACK 消息的另一端会重试,重新发送FIN消息,所以主动关闭的一方会等待 2MSL 时间,防止对方重试,这就出现了大量 TIME_WAIT 状态(参考: 四次挥手的最后两次)

  •  优化和避免 TIME_WAIT 状态的方法

复制代码
调整内核参数:通过调整内核参数如 tcp_tw_reuse 和 tcp_max_tw_buckets 可以优化 TIME_WAIT 状态的处理。例如,tcp_tw_reuse 允许在 TIME_WAIT 状态下重用端口,tcp_max_tw_buckets 限制系统中 TIME_WAIT 状态的最大数量。

减少短连接的使用:在可能的情况下,尽量减少短连接的使用,改用长连接或连接池技术,以减少 TIME_WAIT 状态的产生;

##常用内核优化参数
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 修改系统默认的 TIMEOUT 时间
net.ipv4.tcp_max_tw_buckets = 5000 表示系统同时保持TIME_WAIT套接字的最大数量,(默认是18000). 当TIME_WAIT连接数量达到给定的值时,所有的TIME_WAIT连接会被立刻清除,并打印警告信息。但这种粗暴的清理掉所有的连接,意味着有些连接并没有成功等待2MSL,就会造成通讯异常。一般不建议调整
# 启用 keepalive 时,发送消息的频率。(默认: 7200 秒)
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_timestamps = 1(默认即为1)60s内同一源ip主机的socket connect请求中的timestamp必须是递增的。也就是说服务器打开了 tcp_tw_reccycle了,就会检查时间戳,如果对方发来的包的时间戳是乱跳的或者说时间戳是滞后的,那么服务器就会丢掉不回包,现在很多公司都用LVS做负载均衡,通常是前面一台LVS,后面多台后端服务器,这其实就是NAT,当请求到达LVS后,它修改地址数据后便转发给后端服务器,但不会修改时间戳数据,对于后端服务器来说,请求的源地址就是LVS的地址,加上端口会复用,所以从后端服务器的角度看,原本不同客户端的请求经过LVS的转发,就可能会被认为是同一个连接,加之不同客户端的时间可能不一致,所以就会出现时间戳错乱的现象,于是后面的数据包就被丢弃了,具体的表现通常是是客户端明明发送的SYN,但服务端就是不响应ACK,还可以通过下面命令来确认数据包不断被丢弃的现象,所以根据情况使用


##方式二:调整短链接为长链接


短连接和长连接工作方式的区别:


短连接
连接->传输数据->关闭连接
HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。
也可以这样说:短连接是指SOCKET连接后发送后接收完数据后马上断开连接。


长连接
连接->传输数据->保持连接 -> 传输数据-> 。。。->关闭连接。
长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差。


从区别上可以看出,长连接比短连接从根本上减少了关闭连接的次数,减少了TIME_WAIT状态的产生数量,在高并发的系统中,这种方式的改动非常有效果,可以明显减少系统TIME_WAIT的数量。



检查连接数据量
[root@harbor ~]# netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}'
ESTABLISHED 2
[root@harbor ~]# ss -s
Total: 260
TCP: 11 (estab 2, closed 0, orphaned 0, timewait 0)


Transport Total IP IPv6
RAW 0 0 0
UDP 9 6 3
TCP 11 7 4
INET 20 13 7
FRAG 0 0 0


[root@harbor ~]# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
ESTABLISHED 2

方法三
3、修改系统配置


[root@aaa1 ~]# vim /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套接字拖死。

 
复制代码

 

 

### 参考资料:

1、https://blog.csdn.net/A642960662/article/details/123030151
2、https://www.cnblogs.com/TankXiao/p/4045439.html

 

 

posted on   gkhost  阅读(30)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示