Focus-1


  • 归档

  • 分类

  • 标签

  • 关于

  • 搜索

Linux系统负载

发表于 2016-01-08 | 分类于 linux


一、查看系统负荷

如果你的电脑很慢,你或许想查看一下,它的工作量是否太大了。

在Linux系统中,我们一般使用 uptime 命令查看(w命令和top命令也行)。(另外,它们在苹果公司的Mac电脑上也适用。)

你在终端窗口键入uptime,系统会返回一行信息。

这行信息的后半部分,显示 load average,它的意思是”系统的平均负荷”,里面有三个数字,我们可以从中判断系统负荷是大还是小。

为什么会有三个数字呢?你从手册中查到,它们的意思分别是1分钟、5分钟、15分钟内系统的平均负荷。

如果你继续看手册,它还会告诉你,当CPU完全空闲的时候,平均负荷为0;当CPU工作量饱和的时候,平均负荷为1。

那么很显然,load average 的值越低,比如等于0.2或0.3,就说明电脑的工作量越小,系统负荷比较轻。

但是,什么时候能看出系统负荷比较重呢?等于1的时候,还是等于0.5或等于1.5的时候?如果1分钟、5分钟、15分钟三个值不一样,怎么办?


二、一个类比

判断系统负荷是否过重,必须理解load average的真正含义。下面,我根据”Understanding Linux CPU Load“这篇文章,尝试用最通俗的语言,解释这个问题。

首先,假设最简单的情况,你的电脑只有一个CPU,所有的运算都必须由这个CPU来完成。

那么,我们不妨把这个CPU想象成一座大桥,桥上只有一根车道,所有车辆都必须从这根车道上通过。(很显然,这座桥只能单向通行。)

系统负荷为0,意味着大桥上一辆车也没有。

系统负荷为0.5,意味着大桥一半的路段有车。

系统负荷为1.0,意味着大桥的所有路段都有车,也就是说大桥已经”满”了。但是必须注意的是,直到此时大桥还是能顺畅通行的。

系统负荷为1.7,意味着车辆太多了,大桥已经被占满了(100%),后面等着上桥的车辆为桥面车辆的70%。以此类推,系统负荷2.0,意味着等待上桥的车辆与桥面的车辆一样多;系统负荷3.0,意味着等待上桥的车辆是桥面车辆的2倍。总之,当系统负荷大于1,后面的车辆就必须等待了;系统负荷越大,过桥就必须等得越久。

CPU的系统负荷,基本上等同于上面的类比。大桥的通行能力,就是CPU的最大工作量;桥梁上的车辆,就是一个个等待CPU处理的进程(process)。

如果CPU每分钟最多处理100个进程,那么系统负荷0.2,意味着CPU在这1分钟里只处理20个进程;系统负荷1.0,意味着CPU在这1分钟里正好处理100个进程;系统负荷1.7,意味着除了CPU正在处理的100个进程以外,还有70个进程正排队等着CPU处理。

为了电脑顺畅运行,系统负荷最好不要超过1.0,这样就没有进程需要等待了,所有进程都能第一时间得到处理。很显然,1.0是一个关键值,超过这个值,系统就不在最佳状态了,你要动手干预了。


三、系统负荷的经验法则

1.0是系统负荷的理想值吗?

不一定,系统管理员往往会留一点余地,当这个值达到0.7,就应当引起注意了。经验法则是这样的:

当系统负荷持续大于0.7,你必须开始调查了,问题出在哪里,防止情况恶化。

当系统负荷持续大于1.0,你必须动手寻找解决办法,把这个值降下来。

当系统负荷达到5.0,就表明你的系统有很严重的问题,长时间没有响应,或者接近死机了。你不应该让系统达到这个值。


四、多处理器

上面,我们假设你的电脑只有1个CPU。如果你的电脑装了2个CPU,会发生什么情况呢?

2个CPU,意味着电脑的处理能力翻了一倍,能够同时处理的进程数量也翻了一倍。

还是用大桥来类比,两个CPU就意味着大桥有两根车道了,通车能力翻倍了。

所以,2个CPU表明系统负荷可以达到2.0,此时每个CPU都达到100%的工作量。推广开来,n个CPU的电脑,可接受的系统负荷最大为n.0。


五、多核处理器

芯片厂商往往在一个CPU内部,包含多个CPU核心,这被称为多核CPU。

在系统负荷方面,多核CPU与多CPU效果类似,所以考虑系统负荷的时候,必须考虑这台电脑有几个CPU、每个CPU有几个核心。然后,把系统负荷除以总的核心数,只要每个核心的负荷不超过1.0,就表明电脑正常运行。

怎么知道电脑有多少个CPU核心呢?

cat /proc/cpuinfo命令,可以查看CPU信息。grep -c 'model name' /proc/cpuinfo命令,直接返回CPU的总核心数。


六、最佳观察时长

最后一个问题,”load average”一共返回三个平均值—-1分钟系统负荷、5分钟系统负荷,15分钟系统负荷,—-应该参考哪个值?

如果只有1分钟的系统负荷大于1.0,其他两个时间段都小于1.0,这表明只是暂时现象,问题不大。

如果15分钟内,平均系统负荷大于1.0(调整CPU核心数之后),表明问题持续存在,不是暂时现象。所以,你应该主要观察”15分钟系统负荷”,将它作为电脑正常运行的指标。

linux atop详解

发表于 2016-01-08 | 分类于 linux


atop 是一个功能非常强大的linux服务器监控工具,它的数据采集主要包括:CPU、内存、磁盘、网络、进程等,并且内容非常的详细,特别是当那一部分存在压力它会以特殊的颜色进行展示,如果颜色是红色那么说明已经非常严重了。

注意:所有的信息都是反映过去10s的状态信息


安装

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
32
33
34
#1.官网:http://www.atoptool.nl/downloadatop.php找下载链接
#2.下载解压编译
wget http://www.atoptool.nl/download/atop-2.2-3.tar.gz
tar xvf atop-2.2-3.tar.gz
cd atop-2.2-3
make prefix=/usr/local/atop install
#3.(报错rawlog.c:154:18: fatal error: zlib.h: No such file or directory,yum -y install zlib未解决,因为只安装lib没有头文件,提示需要zlib头文件)

#4.解决方案:标准安装zlib
#官网: http://www.zlib.net/
#找下载链接:http://zlib.net/zlib-1.2.8.tar.gz 或者:http://iweb.dl.sourceforge.net/project/libpng/zlib/1.2.8/zlib-1.2.8.tar.gz
cd ../
wget http://zlib.net/zlib-1.2.8.tar.gz
tar xzf zlib-1.2.8.tar.gz
cd zlib-1.2.8
#创建动态库
./configure --shared
make test
make install
cp zutil.h /usr/local/include
cp zutil.c /usr/local/include

#5.重新编译
cd atop-2.2-3
make clean
make install
#提示Choose either 'make systemdinstall' or 'make sysvinstall' #关于采用哪种方式安装可以参考这里:http://www.linuxdiyf.com/linux/10711.html
make systemdimstall
#6.运行
atop
#7.退出
q
参考:http://my.oschina.net/nox/blog/221014
http://blog.sina.com.cn/s/blog_714dacd10102v6et.html

资源监控字段含义

上图中列出了不少字段以及数值,各字段的含义是什么?我们应该怎么看?以上每个字段的含义都是相对采样周期而言的,下面我们先来关注上图显示的上半部分。

ATOP列:该列显示了主机名、信息采样日期和时间点

PRC列:该列显示进程整体运行情况

  1. sys:过去10s所有的进程在内核态运行的时间总和
  2. usr:过去10s所有的进程在用户态的运行时间总和
  3. #proc:进程总数
  4. #trun:过去10s转换的进程数
  5. #zombie:过去10s僵死进程的数量
  6. #exit:在10s采样周期期间退出的进程数量

CPU列:该列显示CPU整体(即多核CPU作为一个整体CPU资源)的使用情况,我们知道CPU可被用于执行进程、处理中断,也可处于空闲状态(空闲状态分两种,一种是活动进程等待磁盘IO导致CPU空闲,另一种是完全空闲)

  1. sys:cpu在处理进程时处于内核态的时间所占的比例
  2. usr:cpu在处理进程时处于用户态的时间所占的比例
  3. irq:cpu在处理进程的中断请求所占的实际比例
  4. idle:CPU处在完全空闲状态的时间比例
  5. wait:CPU处在“进程等待磁盘IO导致CPU空闲”状态的时间比例

CPU列各个字段指示值相加结果为N00%,其中N为cpu核数。

cpu列:该列显示某一核cpu的使用情况,各字段含义可参照CPU列,各字段值相加结果为100%

CPL列:该列显示CPU负载情况

  1. avg1、avg5和avg15字段:过去1分钟、5分钟和15分钟内运行队列中的平均进程数量
  2. csw(context swapping):上下文交换次数
  3. intr(interrupt):中断发生次数
  4. numcpu:cpu的核心数

MEM列:列主要展示内存的使用信息

  1. tot:物理内存总量
  2. free:空闲内存的大小
  3. cache:用于页缓存的内存大小
  4. buff:用于文件缓存的内存大小
  5. slab:系统内核占用的内存大小
  6. dirty:内存中的脏页大小

SWP列:该列指示交换空间的使用情况

  1. tot:交换区总量
  2. free:空闲交换空间大小

PAG列:该列指示虚拟内存分页情况

  1. swin:换入内存页数
  2. swout:换出内存页数

LVM/DSK列:该列指示磁盘使用情况,每一个磁盘设备对应一列,如果有sdb设备,那么增多一列DSK信息

  1. sda字段:磁盘设备标识
  2. busy:磁盘忙时所占比例
  3. read、KiB/r 、MBr/s:每秒读的请求数和请求的kb、mb数
  4. write、KiB/w 、MBr/w:每秒写的请求数和请求的kb、mb数
  5. avq:磁盘平均队列长度(根据实际的监控该列好像是磁盘平均请求数avgrq)
  6. avio:磁盘的平均io时间

NET列:多列NET展示了传输层(TCP/UDP)、网络层(ip)、网络接口的网络传输信息。

  1. XXXi 字段指示各层或活动网口收包数目
  2. XXXo 字段指示各层或活动网口发包数目

transport:传输层(TCP/UDP)的数据输入输出的展示,例如在服务器的内部进程之间的数据传输就是在传输层展示,以为还不需要往下通过网络进行传输。

network:网络层(ip)的数据输入输出的展示;

eth0:默认的网络接口的数据输入输出的展示,也就是通过etho的ip的数据传输的展示,

  1. sp:网卡的带宽(1000M)
  2. pcki:传入的数据包的大小
  3. pcko:传出的数据包的大小
  4. si:每秒传入的数据大小
  5. so:每秒传出的数据大小
  6. coll(collisions):每秒的冲突数
  7. mlti(MULTICAST):每秒的多路广播的数量
  8. erri/erro:每秒输入输出的错误数
  9. drpi/drpo:每秒的输入输出的丢包数

lo:通过127.0.0.1网络接口的数据传输的数据展示,参数和上面的eth0是一样的

视图切换

  1. g:默认视图
  2. m:内存视图
  3. c:命令视图

默认视图(g)

按g键可以从其他视图跳到默认视图

从上图中,我们可以看到PID为3061的find进程在退出前在

内核模式下占用了3.43秒CPU时间,

在用户模式下占用了0.96秒CPU时间,共使用CPU时间为4.39秒,相对10分钟采样周期,CPU时间占用比例为1%,

ST列表示进程状态,N表示该进程是前一个采样周期新生成的进程,E表示该进程已退出,

EXC列指示进程的退出码。从进程名在“<>”符号中,我们亦可知该进程已退出。


内存视图(m)

内存视图展示了进程使用内存情况,按m键可进入内存视图。

  • SYSCPU:过去10s内进程处于内核模式占用的CPU时间

  • USRCPU:过去10s进程处于用户模式占用的CPU时间

  • VSIZE:过去10s 进程占用的虚拟空间大小

  • RSIZE:过去10s 进程占用的内存空间大小

  • PSIZE:过去10s 进程占用的页大小

  • VGROW:过去10s 进程增长的虚拟空间大小

  • RGROW:过去10s 进程增长的内存大小

  • SWAPSZ:过去10s 进程使用交换空间的大小。

  • MEM:过去10s 进程占用内存百分比


磁盘状态模式(d)

RDDSK:过去10S进程读磁盘的数据量

WRDSK:过去10S进程写磁盘的数据量

DSK:过去10S进程所占磁盘的百分比

CMD:进程名


进程状态模式(p)

同一个名称的进程显示一列,根据进程名进行分组显示

NPROCS:相同名称的进程数量

其它的参数上面已经有列出


线程状态模式(v)


用户模式(u)

根据用户进行分组显示


命令视图模式(c)

按c键我们可以进入命令视图,该视图展示了与每个进程相对应的命令。

有时我们某位“马大哈”同事执行了某个脚本或命令,使得系统资源占用率异常飙高,这时,我们可以很容易地通过atop的命令视图找到导致异常的命令。


atop的相关文件

/etc/atop:目录保存的是atop的配置文件
/etc/rc.d/init.d/atop:atop的启动文件
/etc/cron.d/atop:atop的定时任务文件,默认是每天0点开始
/var/log/atop:atop日志文件,默认是每天0点开始会产生当天的一个日志文件,然后可以通过atop -r file 查看信息,但是没有找到自动播放的的功能,只能通过输入b显示一个指定的时间的信息,可以写个循环来实现
/usr/bin/atop:atop命令目录


atop日志

每个时间点采样页面组合起来就形成了一个atop日志文件,我们可以使用”atop -r XXX”命令对日志文件进行查看。那以什么形式保存atop日志文件呢?

对于atop日志文件的保存方式,我们可以这样:

  1. 每天保存一个atop日志文件,该日志文件记录当天信息
  2. 日志文件以”atop_YYYYMMDD”的方式命名
  3. 设定日志失效期限,自动删除一段时间前的日志文件

其实atop开发者已经提供了以上日志保存方式,相应的atop.daily脚本可以在源码目录下找到。在atop.daily脚本中,我们可以通过修改INTERVAL变量改变atop信息采样周期(默认为10分钟);通过修改以下命令中的数值改变日志保存天数(默认为28天):

1
(sleep 3; find $LOGPATH -name 'atop_*' -mtime +28 -exec rm {} \; )&

linux htop详解

发表于 2016-01-08 | 分类于 linux


htop是Linux系统下一个基本文本模式的、交互式的进程查看器,主要用于控制台或shell中,可以替代top;

htop和top对比:

  • 两者相比起来,top比较繁琐
  • 默认支持图形界面的鼠标操作
  • 可以横向或纵向滚动浏览进程列表,以便看到所有的进程和完整的命令行
  • 杀进程时不需要输入进程号等

安装

Ubuntu

1
apt-get install htop

CentOS

1
2
yum -y install epel-release.noarch
yum -y install htop

编译安装

1
2
3
4
5
6
7
8
9
10
11
12
1、安装gcc、内核库依赖库
yum install -y gcc ncurses-deve
2、下载源码
wget http://sourceforge.net/projects/htop/files/latest/download
3、解压并进入htop-1.0.2目录
tar -zxf download
cd htop-1.0.2
4、编译安装(执行./configure如果执行报错 configure: error: You may want to use --disable-unicode or install libncursesw,表明缺少lib 包,安装lib包:yum install ncurses-devel -y)
./configure && make && make install

5、验证
htop

字段含义

  • PID:进行的标识号
  • USER:运行此进程的用户
  • PRI:进程的优先级
  • NI:进程的优先级别值,默认的为0,可以进行调整
  • VIRT:进程占用的虚拟内存值
  • RES:进程占用的物理内存值
  • SHR:进程占用的共享内存值
  • S:进程的运行状况,R表示正在运行、S表示休眠,等待唤醒、Z表示僵死状态
  • %CPU:该进程占用的CPU使用率
  • %MEM:该进程占用的物理内存和总内存的百分比
  • TIME+:该进程启动后占用的总的CPU时间
  • COMMAND:进程启动的启动命令名称

选项

1
htop [OPTIONS]

htop常用功能键

F1 : 查看htop使用说明
F2 : 设置
F3 : 搜索进程
F4 : 过滤器,按关键字搜索
F5 : 显示树形结构
F6 : 选择排序方式
F7 : 减少nice值,这样就可以提高对应进程的优先级
F8 : 增加nice值,这样可以降低对应进程的优先级
F9 : 杀掉选中的进程
F10 : 退出htop

/ : 搜索字符
h : 显示帮助
l :显示进程打开的文件: 如果安装了lsof,按此键可以显示进程所打开的文件
u :显示所有用户,并可以选择某一特定用户的进程
s : 将调用strace追踪进程的系统调用
t : 显示树形结构

H :显示/隐藏用户线程
I :倒转排序顺序
K :显示/隐藏内核线程
M :按内存占用排序
P :按CPU排序
T :按运行时间排序

上下键或PgUP, PgDn : 移动选中进程
左右键或Home, End : 移动列表
Space(空格) : 标记/取消标记一个进程。命令可以作用于多个进程,例如 “kill”,将应用于所有已标记


linux iftop详解

发表于 2016-01-08 | 分类于 linux


iftop 主要用来显示本机网络流量情况及各相互通信的流量集合,如单独同那台机器间的流量大小,非常适合于代理服务器和iptables服务器使用;


安装

Ubuntu

1
apt-get install iotop

CentOS

1
2
yum install -y flex byacc libpcap ncurses ncurses-devel libpcap-devel
yum install -y iftop

iftop界面相关说明

  • 中间的<= =>这两个左右箭头,表示的是流量的方向。

  • TX:发送流量

  • RX:接收流量

  • TOTAL:总流量

  • Cumm:运行iftop到目前时间的总流量

  • peak:流量峰值

  • rates:分别表示过去 2s 10s 40s 的平均流量


参数选项

1
2
3
4
5
6
7
8
9
10
11
-i   设定监测的网卡,如:# iftop -i eth1
-B 以bytes为单位显示流量(默认是bits),如:# iftop -B
-n  使host信息默认直接都显示IP,如:# iftop -n
-N  使端口信息默认直接都显示端口号,如: # iftop -N
-F  显示特定网段的进出流量,如# iftop -F 10.10.1.0/24或# iftop -F 10.10.1.0/255.255.255.0
-h(display this message),帮助,显示参数信息
-p  使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的IP信息;
-b  使流量图形条默认就显示;
-f   这个暂时还不太会用,过滤计算包用的;
-P  使host信息及端口信息默认就都显示;
-m  设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m 100M

操作命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
h:切换是否显示帮助;
n:切换显示本机的IP或主机名;
s:切换是否显示本机的host信息;
d:切换是否显示远端目标主机的host信息;
t:切换显示格式为2行/1行/只显示发送流量/只显示接收流量;
N:切换显示端口号或端口服务名称;
S:切换是否显示本机的端口信息;
D:切换是否显示远端目标主机的端口信息;
p:切换是否显示端口信息;
P:切换暂停/继续显示;
b:切换是否显示平均流量图形条;
B:切换计算2秒或10秒或40秒内的平均流量;
T:切换是否显示每个连接的总流量;
l:打开屏幕过滤功能,输入要过滤的字符,比如ip,按回车后,屏幕就只显示这个IP相关的流量信息;
L:切换显示画面上边的刻度;刻度不同,流量图形条会有变化;
j:或按k可以向上或向下滚动屏幕显示的连接记录;
1:或2或3可以根据右侧显示的三列流量数据进行排序;
<:根据左边的本机名或IP排序;
>:根据远端目标主机的主机名或IP排序;
o:切换是否固定只显示当前的连接;
f:可以编辑过滤代码;
!:可以使用shell命令;
q:退出监控;

linux iotop详解

发表于 2016-01-08 | 分类于 linux


iotop命令 是一个用来监视磁盘I/O使用状况的top类工具。iotop具有与top相似的UI,其中包括PID、用户、I/O、进程等相关信息。Linux下的IO统计工具如iostat,nmon等大多数是只能统计到per设备的读写情况,如果你想知道每个进程是如何使用IO的就比较麻烦,使用iotop命令可以很方便的查看。

iotop使用Python语言编写而成,要求Python2.5(及以上版本)和Linux kernel2.6.20(及以上版本)。iotop提供有源代码及rpm包,可从其官方主页下载。


安装

Ubuntu

1
apt-get install iotop

CentOS

1
yum install iotop -y

编译安装

1
2
3
4
wget http://guichaz.free.fr/iotop/files/iotop-0.4.4.tar.gz    
tar zxf iotop-0.4.4.tar.gz
python setup.py build
python setup.py install

选项

1
2
3
4
5
6
7
8
9
iotop [OPTIONS]

-o:只显示有io操作的进程
-p PID:监控的进程pid。
-u USER:监控的进程用户。

-b:批量显示,无交互,主要用作记录到文件。
-n NUM:显示NUM次,主要用于非交互式模式。
-d SEC:间隔SEC秒显示一次。

iotop常用快捷键

  1. 左右箭头:改变排序方式,默认是按IO排序。
  2. r:改变排序顺序。
  3. o:只显示有IO输出的进程。
  4. p:进程/线程的显示方式的切换。
  5. a:显示累积使用量。
  6. q:退出。

实例

直接执行iotop就可以看到效果了:

1
iotop

cache设计

发表于 2016-01-05 | 分类于 nginx


局部性原理


缓存策略


缓存淘汰策略


ESB架构

发表于 2016-01-05 | 分类于 architecture


微服务架构

发表于 2016-01-05 | 分类于 architecture


SOA架构

发表于 2016-01-05 | 分类于 architecture


nginx 安装配置

发表于 2016-01-05 | 分类于 nginx


1、概述

nginx 能够支持 5W 并发连接,并且 cpu、内存 等资源消费非常低,运行非常稳定。


2、环境配置

1、安装 gcc 环境

2、安装第三方开发包 PCRE :解析 正则表达式

3、安装 zlib:提供压缩和解压,zlib用来对http包进行gzip

4、安装 OpenSSL:用来支持 https


3、安装nginx

启动nginx

1
kill -9  master_pid

只会杀死 master进程,woker 进程仍然在运行

1
./nginx -s reload

如果 woker进程 他爹 不是主进程(woker进程id不连续), 要通过 reload 重启一下;

停止nginx

1
2
3
4
5
6
./nginx -g TERM|INT|QUIT
# TERM|INT:用于快速停止
# QUIT: 用于平缓停止

kill TERM|INT|QUIT /nginx/logs/nginx.pid
# 一般不建议 kill -9 Pid 去停止


4、conf 文件详解

https://blog.csdn.net/tjiyu/article/details/53027619

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
user  nginx; # 配置用户、工作组
user nobody;
worker_processes 1; # woker 进程数量

error_log /var/log/nginx/error.log;
error_log /var/log/nginx/error.log notice; # 日志切割
error_log /var/log/nginx/error.log warn; # 日志等级

pid /var/run/nginx.pid; # master进程 pid

# 事件驱动相关
events {
worker_connections 1024; # 线程数
use method; # 时间驱动模型 select,poll,epoll,kqueue

}


http {
include /etc/nginx/mime.types; # 扫描外部的配置文件,包含了浏览器能识别的所有文件格式
default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;
#tcp_nopush on; # 静群

keepalive_timeout 65;
multi_accept off; # 默认off,一次只允许一个网络连接进来

#gzip on; # 是否使用http压缩
use method;

include /etc/nginx/conf.d/*.conf;
}

server {
listen 80;
server_name localhost;

#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;

location / {
root /usr/share/nginx/html;
index index.html index.htm;
}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}

tcp_nopush: 静群效应,默认开启

accept_mutex:当一个新连接到达时,如果激活了accept_mutex,那么多个Worker将以串行方式来处理,其中有一个Worker会被唤醒,其他的Worker继续保持休眠状态;如果没有激活accept_mutex,那么所有的Worker都会被唤醒,不过只有一个Worker能获取新连接,其它的Worker会重新进入休眠状态,这就是「惊群问题」。

nginx缺省激活了accept_mutex,是一种保守的选择。如果关闭了它,可能会引起一定程度的惊群问题,表现为上下文切换增多(sar -w)或者负载上升,但是如果你的网站访问量比较大,为了系统的吞吐量,我还是建议大家关闭它。

multi_accept:告诉nginx收到一个新连接通知后接受尽可能多的连接,默认是on,设置为on后,多个worker按串行方式来处理连接,也就是一个连接只有一个worker被唤醒,其他的处于休眠状态,设置为off后,多个worker按并行方式来处理连接,也就是一个连接会唤醒所有的worker,直到连接分配完毕,没有取得连接的继续休眠。当你的服务器连接数不多时,开启这个参数会让负载有一定的降低,但是当服务器的吞吐量很大时,为了效率,可以关闭这个参数。

use epoll; :nginx采用epoll事件模型,处理效率高

work_connections: 单个worker进程允许客户端最大连接数,这个数值一般根据服务器性能和内存来制定,实际最大值就是worker进程数乘以work_connections


5、功能

1、 动静分离


2、负载均衡


3、反向代理







1…232425

Focus-1

250 日志
63 分类
102 标签
Links
  • repository - https://gitee.com/carloz
© 2015 — 2020 Focus-1
Hosted by Gitee Repo