FreeBSD6.2架设FTP服务器详解
FTP联机的两种模式FTP采用 Client/Server 架构,FTP 协议比较特别的地方在于它在使用时必须建立二个联机:一个用来传输指令、一个用来传输档案。当我们使用 FTP 软件连到 FTP 服务器时,客户端会先连到服务器的连接端口21,并建立一条「控制联机」。接下来,您会输入账号、密码等指令,这些指令及 FTP 的响应都是使用都是使用「控制联机」。当您要下载档案时,或者是执行 ls 以列出目录中的档案时,档案或目录列表的下载是经另一个联机「数据联机」。「数据联机」和「控制联机」不同的是数据联机所传输的数据比较大,而控制联机只是用来传输指令及简单的响应。
基本上,一个完整的 FTP 联机建立过程为:
客户端打开自已机器大于 1024 的连接端口,并连到服务器的连接端口21,建立「控制联机」。 客户端开始对服务器下指令,告诉服务器客户端用来传输档案的连接端口为何。 服务器从连接端口20 连到客户端所开放的端口号 (大于 1024),以建立「数据联机」。 上述这种联机建立的方式是由服务器主动建立「数据联机」,我们称之为「主动模式」(Active Mode)。基本上主动模式的运作在没有防火墙或 NAT 的情形下没有什么问题,但若客户端有防火墙,则可能会无法建立联机。基本上,如果客户端使用的是 FreeBSD 的 NAT 不会有这种问题,FreeBSD 会自动做转换,但若是使用其它的防火墙就不一定可以支持 FTP 的 Active Mode。要解决 FTP Active Mode 的问题,可以在联机时改用「被动模式」(Passive Mode)。所谓的被动模式就是由服务器打开一个连接端口,被动地等客户端连过来建立「数据联机」。被动模式的联机建立过程为: 客户端打开自已机器大于 1024 的连接端口,并连到服务器的连接端口21,建立「控制联机」。 客户端开始对服务器下指令,告诉服务器进入「被动模式」。 服务器打开一个大于 1024 的连接端口,等待客户端的联机。 客伺端打开自已机器大于 1024 的连接端口,并连到服务器以建立「数据联机」。 由于控制联机及数据联机都是由客户端主动连过去服务器,如此即可避开防火墙及 NAT 的问题。
当您登入一台 FTP 服务器后,如果您输入 ls,却等了很久都没有响应,您可以输入 Ctrl+C 以中断命令。接着输入 passive 以进入被动模式,再打 ls 如果可以看到目录内容,则无法联机的问题一定是主动模式的原故。
设定 FTP 服务器FreeBSD 内建有 FTP 服务器的功能,如果您要使用内建的 ftpd,我们不需要特别进行任何安装的动作,只要做好设定即可。1 启动FTP服务器有二种方式启动 ftpd,一种是使用 standalone daemon,另一种是使用 inetd。使用 inetd 我们可以管理许多系统服务,例如 telnet、ssh、ftp 等,大部份的系统服务都是使用 inetd 来启动,使用它的好处在于可以统一管理各种服务,并经由它来设定服务规则,例如是否要阻挡某些 IP 来源等。不过,使用 inetd 的方式缺点是每次有联机要求时,inetd 的 daemon 必须依联机的种类去执行相对映的指令,所以速度比较慢。另一种启动 FTP 的方式是使用 standalone daemon,也就是直接执行 FTP daemon,当它接收到新的联机时,就 fork() 出来处理,这种方式联机建立的速度较快,比较适合专门的 FTP 服务器。
使用 inetd,首先编辑 /etc/inetdconf,将 ftp 设定开头的 # 移除:ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l
ftp stream tcp6 nowait root /usr/libexec/ftpd ftpd -l接下来,我们必须使用下列指令重跑 inetd:# kill -1 `cat /var/run/inetdpid`现在您就可以开始使用 FreeBSD 的 FTP 服务了。
如果您要以独立的 daemon 方式启动 FTP,请先确定在 inetdconf 中没有启动 FTP 服务。接下来,请在新增一个档案 /usr/local/etc/rcd/ftpdsh 内容如下:#!/bin/sh
ftpd_program="/usr/libexec/ftpd"
ftpd_flags="-D -l"
case $1 in
start)
echo "Starting FTPD"
$ftpd_program $ftpd_flags
;;
stop)
echo "Stopping FTPD"
killall ftpd
;;
restart)
$0 stop
sleep 1
$0 start
;;
esac
编辑完后,我们必须将该档案变成可执行:# chmod 755 /usr/local/etc/rcd/ftpdsh接下来,您就可以使用下列指令启动 FTPD 了:# /usr/local/etc/rcd/ftpdsh tart如果您要停止 FTPD 服务,则使用下列指令:# /usr/local/etc/rcd/ftpdsh stop
2 编辑欢迎信息当我们联机到一个 FTP 站点时,我们可以看到二个欢迎讯息,一个是登入前的讯息,另一个是登入后的讯息。开头为 220- 的就是登入前的讯息,我们称它为欢迎讯息。以 230- 为开头的是登入后的讯息,我们称它为本日讯息 (Message of the day)。这二种讯息我们都可以自行设定。
如果您要设定的是登入前的讯息,请新增一个档案 /etc/ftpwelcome,并将您的讯息写入该文件中。您不需要写 220- 等数据,FTP 服务器会自动帮您加上这种代码。而登入后的讯息是存放在 /etc/ftpmotd,您可以编辑该档以进行设定。
3 FTP服务器管理在启动 FTP 服务器时,我们可以加入一些参数以调整服务器的行为。例如,修改预设的连接端口、记录使用者上传、下载的档案等等。有些参数必须要在使用独立的 daemon 方式启动时才有用,而有的参数在 inetd 模式下也可以使用。下表为我们常用的参数:
参数 是否只能在 Daemon 模式下使用 意义 -a 是 当您有二张网络卡或是二个 IP 时,我们可以设定只接受联机到某一个 IP 的联机要求。例如: ftpd -D -a 19216801此范例表示只接受使用者联机到 19216801 这个 IP。
-d 否 记录 FTP 的除错讯息。除了加入这个参数外,您必须修改 /etc/syslogconf,并加入下列内容以记录 FTP 的讯息。!ftpd /var/log/ftpdlog -h 否 不要显示 FTP 服务器的主机名称、软件信息、版本等。 -l 否 记录 FTP 登入成功及失败的讯息。如果您使用二次 -l,则使用者上传、下载、删除、建立目录时都会留下记录。预设的记录会留在 /var/log/xferlog 中。 -P 是 我们知道 FTP 预设会连接埠 21,以接受客户端的联机要求。不过如果您是以独立的 daemon 方式启动 FTP,则 可以使用 -P 加上连接埠号以改变预设连接埠。
另外,还有很多用来控制使用者权限的参数,将在后面说明。
如果您要修改 ftpd 启动的参数,在 inetd 模式下,您可以修改 /etc/inetdconf,并在 ftp 设定的最后面加入参数,如下列粗体字所示:ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l -l -dftp stream tcp6 nowait root /usr/libexec/ftpd ftpd -l -l -d上面的范例中,我们多加入了参数 -l -d,以记录更多 ftpd 的讯息。
如果您是以独立的 Daemon 方式启动 ftpd,则请修改 /usr/local/etc/rcd/ftpdsh:#!/bin/sh
ftpd_program="/usr/libexec/ftpd"
ftpd_flags="-D -l -l -d"
我们只要修改 ftpd_flags 的部份,加入您所要的参数即可。
4 FTP权限控制预设的 FTP 启动后,使用者可以上传、下载任何他们有权存取的档案。在登入后,使用者可以进到任何系统中的目录 (如果目录权限允许的话)。
我们可以设定限制某些账号不可以使用 FTP 登入。使用者在登入 FTP 服务器时,有几个规则会拒绝该账号登入:
如果 /var/run/nologin 存在,则所有账号都不可以登入。这个档案可以用来暂时停止 FTP 服务。 使用者一定要有密码才能登入,没有密码的使用者无法登入。 使用者名称不可以出现在 /etc/ftpusers 中。 使用者群组不可以出现在 /etc/ftpusers 中。 使用者所使用的 shell 必须要时合法的 shell。合法的 shell 会被定义在 /etc/shells 中。 除了匿名模式外,使用者名称不可以是 ftp 或 anonymous。 /etc/ftpusers 定义了不可以使用 FTP 服务的使用者及群组。看一下该档案的内容,我们可以看到该档案中已经有一些使用者不可以登入 FTP。这些使用者都是系统预设的账号,我们也可以经由修改它来加入其它使用者。在 /etc/ftpusers 中,如果开头是 "@" 表示群组名称。除了控制使用者账号外,在「inetd」模式下,我们还可以控制联机来源。所有 FreeBSD 中由 inetd 所启动的服务都可以经由修改 /etc/hostsallow 以使用 TCP Wrappd 来限制联机来源。下列为预设的 /etc/hostsallow 内容:# Provide a small amount of protection for ftpdftpd : localhost : allow
ftpd : niceguyexamplecom : allow
ftpd : evilcrackerexamplecom : deny
ftpd : ALL : allow如果我们要限制某几个 IP 或网域不能使用 FTP,可以使用下列范例:# Provide a small amount of protection for ftpd
ftpd : localhost : allow
ftpd : 210122135 : deny
ftpd : evilcracker : deny
ftpd : ALL : allow如果您要设定只有某些来源可以使用 FTP,而拒绝大多数的主机,则可以设定:# Provide a small amount of protection for ftpd
ftpd : localhost : allow
ftpd : 1921680 : allow
ftpd : myfriendcom : allow
ftpd : ALL : deny
在使用者登入后,只要目录、档案权限许可,它们可以自由的上传、下载档案。如果您希望加以限制读写的权限,可以在启动 FTP 时加上下列几个参数: 参数 意义 -o 限制所有使用者只能上传档案,而无法下载任何档案。 -r 限制所有使用者对于服务器内所有档案只能只读,不可以建立目录、上传、更改档名、或任何会动到档案目录的指令。
上述的参数必须在启动 FTP 服务器时指定
一般使用者登入后,预设会进入自己的家目录中。使用者可以改变工作路径到系统的任何目录中。如果您希望使用者登入后只能在自己的家目录中活动,而不能进入其它系统目录中,可以使用 chroot 的功能。所谓的 chroot 就是将某一个目录变成使用者看到的根目录。例如,我们让使用者 alex 登入后,将 /home/alex 变成根目录。则 alex 在使用指令「cd /」时,还是会停留在 /home/alex。如果他使用指令「pwd」查看目前所在路径,则会显示 /。如此一来,我们就可以确保使用者不会到处乱跑,进入一些不该进入的地方。这个功能对于提升 FTP 的安全性有莫大的助益。
设定 chroot 的方法很简单,只要修改 /etc/ftpchroot 即可。下面是一个范例:alex
@guest
john /var/ftp
@other /var/ftp其中第一行是设定使用者 alex 登入后,以自己的家目录为根目录。第二行的 @guest 表示只要是群组为 guest 的使用者,都以自己的家目录为根目录。而第三、四行分别表示使用者 john 及群组 other 都以 /var/ftp 为根目录。只要我们善用 chroot 的功能,就可以加强保护系统其它目录,让没有权利的使用者不可以进入系统目录中。建议您在开放 FTP 服务时,将所有使用者都加入 /etc/ftpchroot 中。
我们平常在登入 FreeBSD 的 FTP 站台时,可以使用 anonymous 或是 ftp 这二个使用者登入,而且在登入时,任何密码都可以通过。这种可以使用 anonymous 登入的 FTP 就叫作匿名 FTP。anonymous 及 ftp 这二个账号是预设的匿名账号,当使用者以匿名登入时,服务器会将匿名账号对映到系统内的真实使用者 ftp。所以,如果您要提供匿名的 FTP 服务,请使用下列指令新增使用者账号 ftp:# pw adduser ftp
# mkdir /home/ftp
# chown ftp:ftp /home/ftp
我们建立了使用者 ftp 及其家目录 /home/ftp。使用 pw 指令所建立的使用者在 /etc/masterpasswd 中的密码字段预设为 ,表示不可以登入。这个使用者除了匿名 FTP 外,将不可以使用 telnet、SSH、或是其它服务。
在新增了使用者 ftp 之后,我们就已经支持匿名 FTP 的功能了。现在您可以使用 anonymous 或 ftp 账号登入,而且不需任何密码。由于开放了匿名 FTP 后,任何人都可以登入系统,所以匿名账号登入后一定会使用 chroot,以将匿名使用者限制在家目录中。
除了强制使用 chroot 外,我们还可以在启动 FTP 时加上一些参数,以针对匿名使用者进行更多的限制。下表为启动 FTP 服务时可以使用的参数:
参数 意义 -M 禁止匿名使用者建立新的目录。 -m 允许匿名使用者覆写一个存在的档案。预设启动 FTP 时,并不允许匿名使用者覆写已经存在的档案。当使用者上传档案时,如果已经有同档名的档案存在,系统会自动为上传的档案改名。 -O 让匿名使用者只能上传档案,下载档案的功能会被取消。匿名使用者权限除上表中的几个参数外,一样可以使用 -r、-o 等用来控制一般使用者权限的参数来控制匿名使用者。匿名的 FTP 服务器可以说是危险的开始,如果您没有对匿名的使用者进行权限控制,在开于匿名 FTP 后,将会产生许多安全性的问题。
以上只是针对FreeBSD系统自带的简单ftpd进行的配置应用,如果希望架设更强大的FTP服务器,可以选用proftpd等工具来实现,而且在/usr/ports/ftp目录下就已经加入了proftpd这个工具,具体配置参考本人后续文章。
学习链接
学习链接
第一行:
10:08:45 — 当前系统时间
10 days, 3:05 — 系统已经运行了10天3小时5分钟(在这期间没有重启过)
1 users — 当前有1个用户登录系统
load average: 000, 000, 000 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。
load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
第二行:
Tasks — 任务(进程),系统现在共有135个进程,其中处于运行中的有1个,134个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。
第三行:cpu状态
03% us — 用户空间占用CPU的百分比。
00% sy — 内核空间占用CPU的百分比。
00% ni — 改变过优先级的进程占用CPU的百分比
997% id — 空闲CPU百分比
00% wa — IO等待占用CPU的百分比
00% hi — 硬中断(Hardware IRQ)占用CPU的百分比
00% si — 软中断(Software Interrupts)占用CPU的百分比
第四行:内存状态
3808060k total — 物理内存总量(4GB)
3660048k used — 使用中的内存总量(36GB)
148012k free — 空闲内存总量(148M)
359760k buffers — 缓存的内存量 (359M)
第五行:swap交换分区
4184924k total — 交换区总量(4G)
0k used — 使用的交换区总量(0M)
4184924k free — 空闲交换区总量(4G)
2483956k cached — 缓冲的交换区总量(2483M)
第七行以下:各进程(任务)的状态监控
PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)
根据你的描述,建议你:
1、可能你手机或者电脑运行问题。可重新启动手机胡或者电脑。
2、可能是内存不够接收不到新的信息。可用软件清理一下垃圾,释放内存。
3、可能是下载的软件损害。可把原软件卸载,然后重新下载,安装。
4、可能是你手机、电脑上的日期或者时间不对。可查看一下日期时间,是否正确。如果日期和时间不正确,将会导致网络错误的出现。
5、也可能是软件的服务器出现问题,你只需要等一段时间就会恢复。
1、电梯经常出现E48、E49
现场描述:电梯在门区报E48、E49故障。
问题原因:E48是开门故障,产生的原因是在开门过程中,没有收到开门到位信号,经过多次重复开门,当开门次数超过FB-09后提示E48;E49为关门故障,产生的原因是关门一段时间后没有收到门锁通的信号,经过多次关门超过FB-09后提示E49。
排除方法:从门机、门锁等方面查找,如果设置FB-9=0。将不提示此类故障,但门会不停的开关门。
2、并联梯经常出现E51
现场描述:在并联应用的场合中出现E51提示
问题原因:该问题是系统的Canbus通讯受到干扰影响了正常的通讯数据。 排除方法:接地线整理一遍;终端电阻是否使用得当;检查拨码开关,是否牢靠,可重新拨一次;通讯的屏蔽线或双绞线是否运用正确;通讯线不能与动力线排在一起;拨码开关按照并联梯形式正确设置。
3、降低电梯运行速度方法
现场描述:16m/s的电梯将速度降到1m/s。NICE3000已经显示1m/s,但感觉电梯速度还很高。
问题原因:该现场错误理解F0-03(电梯最大速度)、F0-04(电梯额定速度)的含义,错将F0-04=F0-03=1m/s,这样虽然电梯显示为1m/s但是电梯的实际速度仍然为16m/s。
F0-04是电梯标称的额定速度,该参数是由电梯的机械和曳引机来决定的,所以此参数不能更改。要降速运行只能更改F0-03。
排除方法:将F0-04=16m/s;F0-03=1m/s。此时电梯才是运行在1m/s。
4、轿顶板输入类型F5-25不会设置
现场描述:NICE3000在轿顶板的输入点类型设置(F5-25)中可以定义光幕、开门到位等信号为常开或常闭类型,然后按二进制转十进制,但现场调试人员经常算不好这个参数。
排除方法:在这种情况下,其实我们已经规定,除了满载开关设置为“1”常开外,其余的输入,例如超载、关幕、开门到位、关门到位(必须默认常闭)等均设置为常闭,此时F5-25=64。如有问题查开关接线(开或闭取反)。如有特殊的门机开门到位的接线方式只能接常开,那么F5-25=76。
5、电梯运行偶尔出现E03、E04
现场描述:电梯在正常运行时偶儿出现E03、E04故障提示。
问题原因:该电梯可以正常运行,说明NICE3000一体化系统正常,一般这种情况下,可能的原因是编码器松动,或者断线或者一体化输出动力线接线松动。 排除方法:将接触器的连线、整个主回路的连线重新接好。 产生E02、E03、E04的所有原因:
A、检查电机参数是否正确F1-01~05按照电机铭牌设定。
B、检查编码器参数是否正确,每转脉冲数设定是否正确。
C、检查编码器角度学习的参数是否正确,几次学习的值是否相等。
D、检查编码器的接线是否正确。
E、测量电机三相间电阻无缺相断相、三相阻值大致相等。
F、机型参数FF-01设定是否正确。
6、电梯出现不平层、偶尔报E02、E03、E04、驱动力不够
现场描述:同步机电梯出现不平层、偶尔报E02、E03、E04、驱动力不够等 问题原因:维保电梯更换主板或出厂时,主板上FF-01的功率设置与变频器本身的功率设置不匹配。
排除方法:查看变频器铭牌功率与内部主板FF-01功率设置是否一致。 FF-01与功率对应:11 对应37KW;12对应55KW;13对应75KW;14对应11KW;15对应15KW;16对应185KW;17对22KW;18对应30;19对应37KW。
7、异步电梯运行过程有不平层
现场描述:运行多层平层,但是运行单层电梯不平层,相差5~6毫米 问题原因:
排除方法:A, 核对电机铭牌参数、重新电机自学习; B,检查F2组参数,高速I不要大于07; C,增大减速结束段F3-06时间; D,适当设定F3-09参数为5 。
其他相关原因:在更换主板时,请确认主板内程序版本号,同步与异步板子版本不能互用,请查看FA-04、FA-05版本号。
1查看系统负载
(1)uptime
这个命令可以快速查看机器的负载情况。
在Linux系统中,这些数据表示等待CPU资源的进程和阻塞在不可中断IO进程(进程状态为D)的数量。
命令的输出,load average表示1分钟、5分钟、15分钟的平均负载情况。
通过这三个数据,可以了解服务器负载是在趋于紧张还是趋于缓解。
如果1分钟平均负载很高,而15分钟平均负载很低,说明服务器正在命令高负载情况,需要进一步排查CPU资源都消耗在了哪里。
反之,如果15分钟平均负载很高,1分钟平均负载较低,则有可能是CPU资源紧张时刻已经过去。
(2)W
Show who is logged on and what they are doing
可查询登录当前系统的用户信息,以及这些用户目前正在做什么操作
其中的load average后面的三个数字则显示了系统最近1分钟、5分钟、15分钟的系统平均负载情况
注意:
load average这个输出值,这三个值的大小一般不能大于系统逻辑CPU的个数。
如果输出中系统有4个逻辑CPU,如果load average的三个值长期大于4时,说明CPU很繁忙,负载很高,可能会影响系统性能,
但是偶尔大于4时,倒不用担心,一般不会影响系统性能。相反,如果load average的输出值小于CPU的个数,则表示CPU还有空闲
2dmesg | tail
该命令会输出系统日志的最后10行。
这些日志可以帮助排查性能问题
3vmstat
vmstat Virtual Meomory Statistics(虚拟内存统计),用来获得有关进程、虚存、页面交换空间及 CPU活动的信息。这些信息反映了系统的负载情况。
后面跟的参数1,表示每秒输出一次统计信息,表头提示了每一列的含义
(1)监控进程procs:
r:等待在CPU资源的进程数。
这个数据比平均负载更加能够体现CPU负载情况,数据中不包含等待IO的进程。如果这个数值大于机器CPU核数,那么机器的CPU资源已经饱和(出现了CPU瓶颈)。
b:在等待io的进程数 。
(2)监控内存memoy:
swpd:现时可用的交换内存(单位KB)
free:系统可用内存数(以千字节为单位)
buff: 缓冲去中的内存数(单位:KB)。
cache:被用来做为高速缓存的内存数(单位:KB)。
(3)监控swap交换页面
si: 从磁盘交换到内存的交换页数量,单位:KB/秒。
so: 从内存交换到磁盘的交换页数量,单位:KB/秒。
如果这个数据不为0,说明系统已经在使用交换区(swap),机器物理内存已经不足。
(4)监控 io块设备
bi: 发送到块设备的块数,单位:块/秒。
bo: 从块设备接收到的块数,单位:块/秒。
(5)监控system系统
in: 每秒的中断数,包括时钟中断。
cs: 每秒的环境(上下文)转换次数。
(6)监控cpu中央处理器:
us:用户进程使用的时间 。以百分比表示。
sy:系统进程使用的时间。 以百分比表示。
id:中央处理器的空闲时间 。以百分比表示。
us, sy, id, wa, st:这些都代表了CPU时间的消耗,它们分别表示用户时间(user)、系统(内核)时间(sys)、空闲时间(idle)、IO等待时间(wait)和被偷走的时间(stolen,一般被其他虚拟机消耗)。
这些CPU时间,可以让我们很快了解CPU是否出于繁忙状态。
注:
如果IO等待时间很长,那么系统的瓶颈可能在磁盘IO。
如果用户时间和系统时间相加非常大,CPU出于忙于执行指令。
如果有大量CPU时间消耗在用户态,也就是用户应用程序消耗了CPU时间。这不一定是性能问题,需要结合r队列,一起分析。
4mpstat -P ALL 1
该命令可以显示每个CPU的占用情况,如果有一个CPU占用率特别高,那么有可能是一个单线程应用程序引起的。
MultiProcessor Statistics的缩写,是实时系统监控工具
其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。
格式:mpstat [-P {|ALL}] [internal [count]]
-P {|ALL} 表示监控哪个CPU, cpu在[0,cpu个数-1]中取值
internal 相邻的两次采样的间隔时间
count 采样的次数,count只能和delay一起使用
all : 指所有CPU
%usr : 显示在用户级别(例如应用程序)执行时CPU利用率的百分比
%nice :显示在拥有nice优先级的用户级别执行时CPU利用率的百分比
%sys : 现实在系统级别(例如内核)执行时CPU利用率的百分比
%iowait : 显示在系统有未完成的磁盘I/O请求期间CPU空闲时间的百分比
%irq : 显示CPU服务硬件中断所花费时间的百分比
%soft : 显示CPU服务软件中断所花费时间的百分比
%steal : 显示虚拟机管理器在服务另一个虚拟处理器时虚拟CPU处在非自愿等待下花费时间的百分比
%guest : 显示运行虚拟处理器时CPU花费时间的百分比
%idle : 显示CPU空闲和系统没有未完成的磁盘I/O请求情况下的时间百分比
系统有两个CPU。如果使用参数 -P 然后紧跟CPU编号得到指定CPU的利用率。
( Ubuntu安装: apt-get install sysstat)
5pidstat 1
pidstat命令输出进程的CPU占用率,该命令会持续输出,并且不会覆盖之前的数据,可以方便观察系统动态
6iostat -xz 1
iostat命令主要用于查看机器磁盘IO情况
r/s, w/s, rkB/s, wkB/s:分别表示每秒读写次数和每秒读写数据量(千字节)。读写量过大,可能会引起性能问题。
await:IO操作的平均等待时间,单位是毫秒。这是应用程序在和磁盘交互时,需要消耗的时间,包括IO等待和实际操作的耗时。如果这个数值过大,可能是硬件设备遇到了瓶颈或者出现故障。
avgqu-sz:向设备发出的请求平均数量。如果这个数值大于1,可能是硬件设备已经饱和(部分前端硬件设备支持并行写入)。
%util:设备利用率。这个数值表示设备的繁忙程度,经验值是如果超过60,可能会影响IO性能(可以参照IO操作平均等待时间)。如果到达100%,说明硬件设备已经饱和。
注:如果显示的是逻辑设备的数据,那么设备利用率不代表后端实际的硬件设备已经饱和。值得注意的是,即使IO性能不理想,也不一定意味这应用程序性能会不好,可以利用诸如预读取、写缓存等策略提升应用性能
7free -m
free命令可以查看系统内存的使用情况,-m参数表示按照兆字节展示。
最后两列分别表示用于IO缓存的内存数,和用于文件系统页缓存的内存数。
注:
第二行-/+ buffers/cache,看上去缓存占用了大量内存空间。这是Linux系统的内存使用策略,尽可能的利用内存,如果应用程序需要内存,这部分内存会立即被回收并分配给应用程序。
如果可用内存非常少,系统可能会动用交换区(如果配置了的话),这样会增加IO开销(可以在iostat命令中提现),降低系统性能。
8sar -n DEV 1
sar命令在这里可以查看网络设备的吞吐率。
在排查性能问题时,可以通过网络设备的吞吐量,判断网络设备是否已经饱和。
9sar -n TCP,ETCP 1
sar命令在这里用于查看TCP连接状态,其中包括:
active/s:每秒本地发起的TCP连接数,既通过connect调用创建的TCP连接;
passive/s:每秒远程发起的TCP连接数,即通过accept调用创建的TCP连接;
retrans/s:每秒TCP重传数量;
TCP连接数可以用来判断性能问题是否由于建立了过多的连接,进一步可以判断是主动发起的连接,还是被动接受的连接。TCP重传可能是因为网络环境恶劣,或者服务器压力过大导致丢包。
10top
top命令包含了前面好几个命令的检查的内容。比如系统负载情况(uptime)、系统内存使用情况(free)、系统CPU使用情况(vmstat)等。
因此通过这个命令,可以相对全面的查看系统负载的来源。同时,top命令支持排序,可以按照不同的列排序,方便查找出诸如内存占用最多的进程、CPU占用率最高的进程等。
但是,top命令相对于前面一些命令,输出是一个瞬间值,如果不持续盯着,可能会错过一些线索。这时可能需要暂停top命令刷新,来记录和比对数据。
0条评论