FreeBSD6.2架设FTP服务器详解,第1张

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 ftpd

ftpd : 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命令刷新,来记录和比对数据。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » FreeBSD6.2架设FTP服务器详解

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情