Linux
2021-04-11 08:38:12 22 举报AI智能生成
Linux知识点整理
linux
模板推荐
作者其他创作
大纲/内容
centos7
网络设置
修改配置文件/etc/sysconfig/network-scripts/ifcfg-网卡名
TYPE="Ethernet"
BOOTPROTO=none
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="092497f7-c319-45fb-abab-49f3bbedc590"
DEVICE="ens33"
ONBOOT="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_PRIVACY="no"
PREFIX=23
DNS1=10.20.0.9
IPADDR=10.20.42.19
GATEWAY=10.20.43.254
重启网络服务
systemctl restart network
服务
启动服务
systemctl start 服务名
关闭服务
systemctl stop 服务名
开机启动服务
systemctl enable 服务名
自定义服务脚本目录 /usr/lib/systemd/
脚本文件nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/www/lanmps/init.d/nginx start
ExecReload=/www/lanmps/init.d/nginx restart
ExecStop=/www/lanmps/init.d/nginx stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
软件源
软件源文件目录 /etc/yum.repos.d
添加软件源 yum-config-manager --add-repo 软件源地址
ubuntu16
网络设置
修改IP地址
修改 /etc/network/interfaces
auto eth0 #要设置的网卡
iface eth0 inet static #设置静态IP;如果是使用自动IP用dhcp
address xxx.xxx.xxx.xxx #IP地址
netmask xxx.xxx.xxx.xxx #子网掩码
gateway xxx.xxx.xxx.xxx #网关
修改DNS
修改 /etc/resolv.conf
nameserver 223.4.4.4 #希望修改成的DNS
重启服务
sudo /etc/init.d/networking restart #使网卡配置生效
sudo /etc/init.d/resolvconf restart #使DNS生效
服务
启动服务
systemctl start 服务名
关闭服务
systemctl stop 服务名
开机启动服务
systemctl enable 服务名
自定义服务脚本目录 /lib/systemd/
脚本文件nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/www/lanmps/init.d/nginx start
ExecReload=/www/lanmps/init.d/nginx restart
ExecStop=/www/lanmps/init.d/nginx stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
软件源
软件源文件 /etc/apt/source-list
添加软件源 add-apt-repository "软件源地址"
启用root用户
修改 root 密码
sudo passwd root
修改 /etc/ssh/sshd_config
注释掉 #PermitRootLogin without-password,添加 PermitRootLogin yes
重启 ssh 服务
sudo service ssh restart
内存
内存碎片
外部碎片:还没有被分配出去,但又由于太小了而无法分配给其它申请内存空间的新进程的内存空间
伙伴系统算法
把所有的空闲页分组为 11 个块链表,每个块链表分别包含大小为 1,2,4,8,16,32,64,128,256,512 和 1024 个连续页框的页块。最大可以申请 1024 个连续页,对应 4MB 大小的连续内存。
为内核提供了一种用于分配一组连续页而建立的一种高效的分配策略,并有效的解决了外碎片问题。分配的内存区是以页框(4KB)为基本单位的
内部碎片:已经被分配出去的的内存空间大于请求所需的内存空间
slab 算法
减少伙伴算法在分配小块连续内存时所产生的内部碎片
将频繁使用的对象缓存起来,减少分配、初始化和释放对象的时间开销
通过着色技术调整对象以更好的使用硬件高速缓存
寻址
分段机制
段是虚拟地址(逻辑地址)空间的基本单位,一般情况下虚拟地址的表示方法为段基址+偏移量,为了增加linux的可移植性,linux创造性的提出了段基址为0,此时偏移量等于 线性地址
分支主题
1、先检查段选择符的 TI 字段,判断这个段的段描述符是存放在 GDT 中还是 LDT 中
2、然后由段选择符中的 Index 索引到实际的段描述符
3、将 Index 索引到实际的段描述符的地址,再加上 gdtr 或者 ldtr 寄存器中的值。这个过程就完成了段起始的位置的计算
4、最后把计算的结果加上逻辑地址中的段内偏移就得到了线性地址
分页机制
分支主题
1.从CR3寄存器中读取页目录所在物理页面的基址(即所谓的页目录基址),从线性地址的第一部分获取页目录项的索引,两者相加得到页目录项的物理地址。
2.第一次读取内存得到pgd_t结构的目录项,从中取出物理页基址取出(具体位数与平台相关,如果是32系统,则为20位),即页上级页目录的物理基地址。
3.从线性地址的第二部分中取出页上级目录项的索引,与页上级目录基地址相加得到页上级目录项的物理地址。
4.第二次读取内存得到pud_t结构的目录项,从中取出页中间目录的物理基地址。
5.从线性地址的第三部分中取出页中间目录项的索引,与页中间目录基址相加得到页中间目录项的物理地址。
6.第三次读取内存得到pmd_t结构的目录项,从中取出页表的物理基地址。
7.从线性地址的第四部分中取出页表项的索引,与页表基址相加得到页表项的物理地址。
8.第四次读取内存得到pte_t结构的目录项,从中取出物理页的基地址。
9.从线性地址的第五部分中取出物理页内偏移量,与物理页基址相加得到最终的物理地址。
10.第五次读取内存得到最终要访问的数据。
TLB 可以简单理解为,为了加快 MMU 对虚拟地址的转换而增加的缓存,它记录了一个虚拟地址对应的内存页的物理地址。其实就是根据虚拟地址的前 20 位,来建立一个个条目,对应记录通过查找页表来记录的内存页的物理地址
进程虚拟地址空间管理
分支主题
一个task_struct结构体表示一个进程。每个进程都有自己唯一的mm_struct结构体来管理自己这一进程的虚拟地址空间。mm_struct结构体存储着自己的页目录,以及一个结构体链表mmap(链表中的所有结构体vm_area_struct瓜分了这一进程的虚拟内存地址,每一个结构体表示一个虚拟内存空间域)。系统中所有的mm_struct结构体都通过自身的mmlist域连接在一个双向链表中,该链表的首元素是init_mm内存描述符,它代表init进程的地址空间
内存地址
逻辑地址:包括在机器语言指令中指定操作数或者一条指令的地址。
由段选择符(16位) + 段内偏移量offset(32位)得来
段选择符是一个 16 位的字段,格式如下:
15 ~ 3 位:Index 索引号
2 位:TI 标志,指明段描述符在 GDT(TI=0)中或者 LDT(TI=1)中
1 ~ 0 位:RPL 标志,请求者的特权级
由段选择符中的索引号可以索引到段的信息,段的信息是由8字节的段描述符表示,段描述符存放在全局描述符表(GDT)和局部描述符表(LDT)中
线性地址:也称为虚拟地址,可映射 4G 内存空间(分页机制的产物,逻辑上连续)
线性地址分成3部分,格式如下:
Directory:决定页目录中的目录项,10位
Table:决定页表中的表项,10位
Offset:页框的相对位置
页目录和页表的数据结构类似,都包含着下面字段:
Present标志:1(页在主存中)0(不在主存,引发缺页中断)
Accessed标志:每当分页单元对相应页框寻址时就设置这个标志
Dirty标志:只应用于页表项,每当对一个页框进行写操作时就会设置这个
Read/Write标志:含页或页表的存取权限
User/Supervisor标志:含有访问页或页表的特权级
PCD和PWT标志:控制硬件高速缓存处理页和页表的方式
Page Size标志:只用于页目录项,如果设置为1,那么页框的大小为2MB或者4MB
Global标志:只用于页表项,防止常用页从 TLB 高速缓存中刷新出去
页表:是把线性地址映射成物理地址的一种数据结构,大小为4Byte<字节>称为页表项
四级页表:
页全局目录 PGD
页上级目录 PUD
页中间目录 PMD
页表 PT
页:是把线性地址分为若干大小相等的片,大小为4K
物理地址:芯片级内存单元寻址。与从微处理器的地址引脚发送到内存总线上的电信号相对应。地址空间大小由微处理器地址引脚数决定,无符号整数表示。
页框:是把物理地址空间分成与页大小相等的若干存储块,大小为4K
零拷贝
直接操作硬件存储
sendfile
DMA:是指外部设备不通过CPU而直接与系统内存交换数据的接口技术。
利用 DMA 引擎将文件中的数据拷贝到操作系统内核缓冲区中,然后数据被拷贝到与 socket 相关的内核缓冲区中去
splice类似于sendfile,可以任意两个文件描述符传输数据
mmap
Linux通过将一个虚拟内存区域与一个磁盘上的对象(object)关联起来,以初始化这个虚拟内存区域的内容,这个过程称为内存映射
模式
MAP_PRIVATE
多进程间数据共享,修改不反应到磁盘实际文件,是一个copy-on-write(写时复制)的映射方式
MAP_SHARED
多进程间数据共享,修改反应到磁盘实际文件中。
MAP_NORESERVE
分支主题
缺点
对变长文件不适合,文件无法完成拓展,因为mmap到内存的时候,你所能够操作的范围就确定了
文件如果很小,是小于4096字节的,比如10字节,由于内存的最小粒度是页,而进程虚拟地址空间和内存的映射也是以页为单位,11~4096的字节部分用零填充,因此如果连续mmap小文件,会浪费内存空间
存储
磁阵
raid0:读写性能高,数据可靠性低
raid1:设备利用率低,数据可靠性高
raid5:兼顾成本、读写性能和数据安全的折中方案
raid10:相对于成本,更看重数据安全可靠
文件管理
文件逻辑结构
有结构文件
定长记录存储文件格式、文件描述符等结构化数据
可变长记录存储文件具体内容
无结构文件
文件内容长度以字节为单位
顺序文件
索引文件
存储空间
分配方式
连续分配
链接分配
隐式链接
隐式分配的下一个链接指向存储在当前盘块内
适合顺序访问,随机访问效率低
可靠性差
显式链接
FAT表
索引分配
每个文件拥有一个索引块,记录所有盘块信息
索引分配方式支持直接访问盘块
分配管理
空闲表
空闲链表
位示图
网络
HTTP2
数据传输使用二进制分帧层
多路复用,同一域名只需要创建一个连接
服务端推送
header压缩
应用层的重置连接,可以在不断开连接的前提下取消某个request
请求优先级设置
流量控制
HTTPS
客户端:发送随机数A、协议版本、加密算法
服务端:确定加密算法、数字证书、随机数B
客户端:确认数字证书是否有效、生成随机数C、使用服务器的公钥加密随机数C
根据随机数A、B、C和相同的算法生成对称密钥进行加密通信
TCP
三次握手
客户端发送SYN=1、seq=x,状态:syn-sent
服务端返回SYNC=1、ACK=1、seq=y、ack=x+1 ,状态:syn-rcvd
客户端发送ACK=1、seq=x+1、ack=y+1,状态:establishded
四次挥手
客户端发送FIN=1、seq=u,状态:fin-wait1
服务端返回ACK=1、seq=v,ack=u+1,状态:close-wait
服务端发送FIN=1、ACK=1,seq=w,ack=u+1,客户端状态:fin-wait2
客户端返回ACK=1、seq=u+1,ack=w+1,服务端:closed,客户端:time-wait
客户端等待计时器等待2msl(最长报文段寿命),进入closed
套接字选项
keepalive用于定时检查连接状态
sndbuf发送缓冲区大小
rcvbuf接收缓冲区大小
backlog保存半连接状态的队列
reuseaddr服务端主动关闭进入timewait,可以将端口重新分配
nodelay通过nagle算法得到响应才继续发送下一个数据包
流量控制
基于滑动窗口
接收窗口为0的消息,则启动坚持定时器
坚持定时器每隔一段时间发送一个窗口探测报文
拥塞控制
慢启动算法
由小到大逐渐增加发送数据量
每收到一个报文确认,就加一
拥塞避免算法
维护一个拥塞窗口变量
只要网络不拥塞,就试探着拥塞窗口调大
可靠传输
停止等待协议
每发送一个消息,都需要设置一个定时器
连续ARQ协议
自动重传请求,批量发送和确认
iptables
filter表
input-output
nat表
prerouting-input(不转发时调用)-forward-output(不转发时或内部进程发出时调用)-postrouting
到本机某进程的报文:PREROUTING --> INPUT
由本机转发的报文:PREROUTING --> FORWARD --> POSTROUTING
由本机的某进程发出报文(通常为响应报文):OUTPUT --> POSTROUTING
表处理优先级
raw-mangle-nat-filter
链
PREROUTING 的规则可以存在于:raw表,mangle表,nat表
INPUT 的规则可以存在于:mangle表,filter表,nat表
FORWARD 的规则可以存在于:mangle表,filter表
OUTPUT 的规则可以存在于:raw表mangle表,nat表,filter表
POSTROUTING 的规则可以存在于:mangle表,nat表
动作
ACCEPT:允许数据包通过。
DROP:直接丢弃数据包,不给任何回应信息,这时候客户端过了超时时间才会有反应。
REJECT:拒绝数据包通过,客户端刚请求就会收到拒绝的信息。
SNAT:源地址转换,解决内网用户用同一个公网地址上网的问题。
MASQUERADE:是SNAT的一种特殊形式,适用于动态的、临时会变的ip上。
DNAT:目标地址转换。
REDIRECT:在本机做端口映射。
LOG:在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则,也就是说除了记录以外不对数据包做任何其他操作,仍然让下一条规则去匹配
命令
iptables [-t 表名] <-A|I|D|R> 链名 [规则编号] [-i|o 网卡名称] [-p 协议类型] [-s 源ip|源子网] [--sport 源端口号] [-d 目的IP|目标子网] [--dport 目标端口号] [-j 动作]
参数:-A 增加
-I 插入
-D 删除
-R 替换
虚拟设备
VLAN
将同一网络划分为多个逻辑上的虚拟子网
防止广播报文泛滥
解决同一链路层网络广播域隔离
网桥
二层协议交换设备,可以与其他设备连接,类似于交换机
veth
总是成对出现,工作在二层协议
LVS
NAT模式,调度器通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器,真实服务器的响应报文通过调度器时,报文的原地址被重写,再返回给用户,完成整个负载调度过程
DR模式,通过改写请求报文的目标MAC地址,并将请求发给真实服务器,而真实服务器响应后的处理结果直接返回给客户端用户
IPSec
传输模式,只加密IP头部以上的数据,对IP头部不进行加密
隧道模式,加密原有数据包,再加入新的头部
路由协议
RIP协议
底层是贝尔曼福特算法,它选择路由的度量标准(metric)是跳数,最大跳数是15跳,如果大于15跳,它就会丢弃数据包。
OSPF协议
Open Shortest Path First开放式最短路径优先,底层是迪杰斯特拉算法,是链路状态路由选择协议,它选择路由的度量标准是带宽,延迟
BGP外部网关协议
DHCP
DHCP服务器监听默认端口67
主机使用UDP广播DHCP发现报文
DHCP服务器发出DHCP提供报文
主机向DHCP服务器发出DHCP请求报文
DHCP服务器回应并提供IP地址
CRC循环冗余校验码
CRC 算法的基本思想是将传输的数据当做一个位数很长的数。将这个数除以另一个数。得到的余数作为校验数据附加到原数据后面
CPU
控制器
程序计数器
存储下一条指令的地址
循环从程序计数器中拿出指令
当指令被拿出是,指向下一条指令
时序发生器
cpu依据不同的时序脉冲有节奏的进行工作
指令译码器
指令由操作码和地址码组成
翻译操作码对应的操作以及控制传输地址码对应的数据
寄存器
指令寄存器
从主存或高速缓存计算机指令
主存地址寄存器
保存当前cpu正要访问的内存单元的地址
主存数据寄存器
保存当前cpu正要读写的内存数据
通用寄存器
用于暂时存放或传送数据或指令
可保存ALU的运算中间结果
运算器
数据缓冲器
输入缓冲暂时存放外设送过来的数据
输出缓冲暂时存放送往外设的数据
ALU
算术逻辑单元
状态字寄存器
存放运算状态
存放运算控制信息
通用寄存器
指令执行过程
取指令
从缓存取指令
送到指令寄存器
分析指令
指令译码器译码
发出控制信号
程序计数器+1
执行指令
装载数据到寄存器
ALU处理数据
记录运算状态
送出运算结果
分支主题
指令系统
指令形式
操作码字段+地址码字段
地址码直接给出操作数或者操作数的地址
分三地址指令、二地址指令和一地址指令
指令操作类型
数据传输
算术逻辑操作
移位操作
控制指令
指令寻址
顺序寻址
跳跃寻址
数据寻址
立即寻址
指令直接获得操作数
无需访问存储器
直接寻址
直接给出操作数或主存的地址
寻找操作数简单,无需计算数据地址
间接寻址
指令地址码给出的是操作数地址的地址
需要访问一次或多次主存来获取操作数
高速缓存
缓存系统中是以缓存行(cache line)为单位存储的,通常是64字节
在多处理器下,为了保证各个处理器的缓存是一致的,就会实现缓存一致性协议,每个处理器通过嗅探在总线上传播的数据来检查自己缓存的值是不是过期了,当处理器发现自己缓存行对应的内存地址被修改,就会将当前处理器的缓存行设置成无效状态,当处理器要对这个数据进行修改操作的时候,会强制重新从系统内存里把数据读到处理器缓存里
前端总线
Front Side Bus(FSB),是将CPU连接到北桥芯片的总线。就是负责将CPU连接到内存的一座桥,前端总线频率则直接影响CPU与内存数据交换速度,如果FSB频率越高,说明这座桥越宽,可以同时通过的车辆越多,这样CPU处理的速度就更快
进程
进程调度算法
先来先服务
短进程优先
高优先权优先
时间片轮转
进程和线程区别
资源
进程:资源分配的基本单位
线程:不拥有资源
调度
进程:独立调度的基本单位
线程:独立调度的最小单位
系统开销
进程:系统开销大
线程:系统开销小
通信
进程:IPC
线程:读写同一进程数据通信
进程状态
就绪
其他资源都准备好,只差CPU资源的状态
执行
进程获得CPU,程序正在执行的状态
阻塞
因某种原因放弃CPU的状态
创建
进程拥有PCB但其他资源尚未就绪的状态
终止
进程结束由系统清理或归还PCB的状态
进程类型
守护进程
特殊的后台进程,一直运行直到系统关闭
前台进程
有终端可以与用户交互
后台进程
没有占用终端,不与用户交互,优先级比前台进程低
进程实体
进程标识符
处理机状态
进程调度信息
进程控制信息
进程标记
ID为0的进程为idle进程,是系统创建的第一个进程
ID为1的进程为init进程,是0号进程的子进程,完成系统初始化
init进程是所有用户进程的祖先进程
操作系统提供fork函数接口创建进程
进程间通信
共享内存
shmget
shmat
shmdt
Unix域套接字
系统参数优化
vmstat分析
procs(进程)
r:表示运行队列中进程的数量,就是有多少个进程真的分配到cpu,当这个值超过了cpu数目,就会出现cpu瓶颈了。
b:等待IO的进程数量,即阻塞的进程数。
memory(内存)
swpd: 表示虚拟内存的已使用的大小,如果大于0,表示物理内存不足了,如果不是程序内存泄漏的原因,该升级内存了。
free:空闲的物理内存大小。
buff:用作缓冲的内存大小。
cache:用作缓存的内存大小。
swap(交换区)
Si:每秒从磁盘读入虚拟内存的大小,如果这个值大于 0,表示物理内存不够用或者内存泄露了,要查找消耗内存进程解决掉。
So:每秒虚拟内存写入磁盘的大小
IO
bi:每秒读取的的块数。
bo:每秒写入的块数。
如果bi和bo经常不等于0,表示内存不足。
system(系统)
in:每秒 cpu 的中断次数,包括时间中断。
cs:每秒上下文切换次数
CPU(百分比表示)
us:用户进程占用cpu时间百分比
sy:系统进程占用cpu时间百分比,如果太高,表示系统调用时间长,例如IO操作频繁。
id:空闲cpu时间百分比,如果r经常大于4,并且id经常少于40,表示cpu的负载很重。
wa:IO等待时间百分比,过高时,说明io等待比较严重,可能是由于磁盘大量随机访问造成的,也有可能是磁盘的带宽出现瓶颈。
iostat分析
%user:用户层面使用CPU的情况。
%system:系统层面使用CPU的情况,如果该值较高,多半是IO出了问题。因为MySQL的IO请求发出后,最终是由系统的IO进程完成,假如读写很高的话,sys就很繁忙。
%iowait:IO等待情况,iowait 很高的话表示浪费cpu资源。
%idle:cpu 空闲时间。
system和iowait一般结合着看,表示系统IO的情况,如果iowait很高的话,说明cpu花太多的时间在IO等待上,说明系统的IO成为瓶颈了,iowait一般希望小于5%,如果大于25%就说明有问题了。Idle一般希望大于25%,希望有25%的时间是空闲的。
关于Device一栏,描述了IO的具体使用情况。
rrqm/s:合并读,合并读一般为0,如果值很高的话,说明系统有大量的全表扫描。因为
数据库的特点是随机读(oltp交易系统),所以两个读被合并的概率很低,所以如果出现大量的合并读,说明系统在全盘扫描。
wrqm/s:合并写,如果系统在做批量的insert,并且是按照主键顺序递增插入的时候,该值会比较高。
r/s:每秒读。
w/s:每秒写。每秒读+每秒写=IOPS,可以看出系统是读还是写为主。
rsec/s:每秒读扇区的数量。每个扇区是 512 字节。
wsec/s:每秒写扇区的数量。rsec/s+ wsec/s就是IO的吞吐量。
avgrq-sz:平均每次IO操作的扇区数。
avgqu-sz:平均等待处理的IO请求队列长度
await:平均每次IO请求的等待时间。
svctm:每一个请求的服务时间(单位毫秒),反应了io性能,5、6ms表示io性能还可以,可以降到1ms以下。
%util:繁忙度,周期内用于IO操作的时间比例,即IO队列非空的时间比率。如果io不高,但繁忙度高,说明磁盘有问题
调整swap
vi /etc/sysctl.conf加入vm.swappiness = 10
#执行下面命令生效
sysctl -p /etc/sysctl.conf
调整文件句柄
vi /etc/security/limits.conf* soft nofile 65535* hard nofile 65535* soft nproc 65535* hard nproc 65535
调整tcp连接
vim /etc/sysctl.conf
net.ipv4.tcp_syncookies= 1#表示开启SYNCookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN***,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse= 1#表示开启重用。允许将TIME-WAITsockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle= 1#表示开启TCP连接中TIME-WAITsockets的快速回收,默认为0,表示关闭;
net.ipv4.tcp_fin_timeout#修改系統默认的TIMEOUT 时间。
net.ipv4.tcp_keepalive_time= 1200#表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。
net.ipv4.ip_local_port_range= 1024 65535#表示用于向外连接的端口范围。缺省情况下很小,改为1024到65535。
net.ipv4.tcp_max_syn_backlog= 8192#表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
net.ipv4.tcp_max_tw_buckets= 5000#表示系统同时保持TIME_WAIT的最大数量,如果超过这个数字,TIME_WAIT将立刻被清除并打印警告信息。默认为180000,改为5000。此项参数可以控制TIME_WAIT的最大数量,只要超出了。
net.ipv4.tcp_max_syn_backlog= 65536#记录的那些尚未收到客户端确认信息的连接请求的最大值。对于有128M内存的系统而言,缺省值是1024,小内存的系统则是128。
net.core.netdev_max_backlog= 32768#每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。
net.core.somaxconn= 32768#例如web应用中listen函数的backlog默认会给我们内核参数的net.core.somaxconn限制到128,而nginx定义的NGX_LISTEN_BACKLOG默认为511,所以有必要调整这个值。
Collect
Get Started
Collect
Get Started
Collect
Get Started
Collect
Get Started
评论
0 条评论
下一页