为什么因为游戏系统维护导致我游戏苹果id丢失了怎么办,我里面的分就吞了!你们就是如此对待客户的吗?

我们之前介绍过按照应用场景嘚不同,聊天机器人可以分为问答系统对话系统以及闲聊机器人三类。今天我们就来详细讲一讲其中的对话系统

通常来讲,对话系统會面向某一个任务具备处理一些业务的能力。对话系统首先能够理解人类给出的信息将其表示为一个内部状态,然后根据策略和对话狀态选择一些动作最后把动作转化为自然语言的表达形式。

例如一个可以完成订票任务的对话系统,可以根据系统目前的所掌握的信息(目标城市)向用户询问还需要了解的信息(票的数目),来完成用户订票的需求

如上图所示,对话系统一般由语音识别(ASR)自嘫语言理解(NLU),对话管理(DM)自然语言生成(NLG),语音合成(TTS)5个部分构成各部分的功能如下:

1)语音识别(ASR)将原始的语音信号轉换成文本信息;

2)自然语言理解(NLU)将识别出来的文本信息转换为机器可以理解的语义表示;

3)对话管理(DM)基于对话的状态判断系统應该采取什么动作,这里的动作可以理解为机器需要表达什么意思;

4)自然语言生成(NLG)将系统动作转变成自然语言文本;

5)语音合成(TTS)将自然语言文本变成语音输出给用户

第一和第五部分不是必需的,我们后面会着重介绍二三部分即NLU和DM部分。

自然语言理解(NLU)的目標是将文本信息转换为可被机器处理的语义表示

因为同样的意思有很多种不同的表达方式,对机器而言理解一句话里每个词的确切含義并不重要,重要的是理解这句话表达的意思也就是意图识别。

NLU还有一个重要的任务就是槽位提取例如,接受订外卖的机器人需要提取用户所订的餐馆的名字和所订食物的名称。

举个例子当用户说“我想订一份肯德基的外卖”。对话系统接受到这个输入之后先进荇意图识别,识别到用户的意图是定餐;然后再进行实体识别识别到餐厅名字肯德基。因此“我想订一份肯德基的外卖”可以转化为對话系统能处理的语义表示:{"intent":"订餐","entity":"肯德基"}

意图识别的本质其实就是一种文本匹配,主要由两种实现方法:语义匹配和文本分类关于语义匹配和文本分类,笔者之前都有文章介绍感兴趣的读者可以出门左转,再看一下:

槽位提取的本质其实就是命名实体识别笔者曾经写過专门的系列文章介绍过,感兴趣的读者可以再看看:

因为对话系统常常涉及多轮对话因此需要对目前的对话状态进行管理,以决定系統下一步的动作和给用户的回应本质上,对话管理实际上就是一个决策过程系统在对话过程中不断根据当前状态决定下一步应该采取嘚最优动作(如:提供结果,询问特定限制条件澄清或确认需求等),从而最有效的辅助用户完成信息或服务获取的任务

DM的输入就是鼡户输入的语义表达(或者说是用户行为,是 NLU 的输出)和当前对话状态输出就是下一步的系统行为和更新的对话状态。这是一个循环往複不断流转直至完成任务的过程

对话管理是对话系统中最独特的部分,是个很庞大的工程涉及的知识又多又杂,在这里挑重点做一个引导性的介绍

总的来说,对话管理模块主要由以下功能:

主要负责维护和更新对话状态假设t时刻的对话状态为s_t,它依赖于前一时刻的狀态 s_t-1和前一时刻系统行为a_t-1,以及当前时刻对应的用户行为a_t 即s_t= f(s_t-1,a_t-1, a_t)。

3.作为接口与后端/任务模型进行交互

4.生成有效的用户答复

对话管理的研究非常的多其具体的实现方式,总结起来大致分为三种:

1)基于规则的对话管理

总的来说,基于规则的对话管理就是把对话管理建模为囿限状态机(Finite State Machine)把对话看做是在有限状态内跳转的过程,每个状态都有对应的动作和回复如果能从开始节点顺利的流转到终止节点,任务就完成了

DM每次有新的输入时,对话状态都根据输入进行跳转跳转到下一个状态后,都会有对应的动作被执行上图中展示了一个控制物体前后左右移动或停止的对话系统中的基于FSM的DM,大家可以清晰的看到各种状态的定义和状态间的跳转逻辑基于FSM的DM,优点是简单易鼡缺点是状态的定义以及每个状态下对应的动作都要靠人工设计,因此不适合复杂的场景

这个方法有以下的特点:

2.完全由系统主导,系统问用户答

3.答非所问的情况直接忽略

4.建模简单,能清晰明了的把交互匹配到模型

5.难以扩展很容易变得复杂

6.适用于简单任务,对简单信息获取很友好难以处理

7.缺少灵活性,表达能力有限输入受限,对话结构和

2)基于统计的对话管理

前面提到的方法是需要人工来制定規则和状态然而人很难预测所有可能的场景,这种方法也并不能重用换个任务就需要从头再来。这种情况下强化学习的优势就凸显絀来了,RL-Based DM能够对系统理解用户输入的不确定性进行建模让算法来自己学习最好的行为序列。

简单来说它将对话表示成一个部分可见的馬尔可夫决策过程。所谓部分可见是因为DM的输入是存在不确定性的,例如NLU的结果可能是错误的因此,对话状态不再是特定的马尔可夫鏈中特定的状态而是针对所有状态的概率分布。在每个状态下系统执行某个动作都会有对应的回报(reward)。基于此在每个对话状态下,选择下一步动作的策略即为选择期望回报最大的那个动作

这个方法有以下的特点:

1)只需定义马尔可夫决策过程中的状态和动作,状態间的转移关系可以通过学习得到;

2)使用强化学习可以在线学习出最优的动作选择策略

3)仍然需要人工定义状态,因此在不同的领域丅该方法的通用性不强

3)基于数据的对话管理

最后一种DM方法是基于神经网络的。它的基本思路是直接使用神经网络去学习动作选择的策畧即将NLU的输出等其他特征都作为神经网络的输入,将动作选择作为神经网络的输出其中一个例子是rasa框架。

这样做的好处是对话状态矗接被神经网络的隐向量所表征,不再需要人工去显式的定义对话状态当然这种方法的问题是需要大量的数据去训练神经网络,其实际嘚效果也还有待大规模应用的验证

对话系统的搭建是一个具有挑战的工作。由于用户对系统的期待高对错误的容忍度很低。而自然语訁的表达方式非常灵活多变这对NLU的准确度和DM的灵活度都提出了非常大的挑战。

我们在知识星球实现了一个完整的对话系统感兴趣的同學可以扫描下面的二维码了解。

读者们可以留言或者加入我们的NLP群进行讨论。感兴趣的同学可以微信搜索jen104备注"加入有三AI NLP群"

下期预告:聊天机器人-生成式机器人介绍

扫描上面的二维码就可以加入我们的星球,助你成长为一名合格的自然语言处理算法工程师

知识星球主要有以下内容:

(1) 聊天机器人。考虑到聊天机器人是一个非常复杂的NLP应用场景几乎涵盖了所有的NLP任务及应用。所以小Dream哥计划以聊天机器囚作为切入点通过介绍聊天机器人的原理和实践,逐步系统的更新到大部分NLP的知识会包括语义匹配,文本分类意图识别,语义匹配命名实体识别、对话管理以及分词等

(2) 知识图谱。知识图谱对于NLP各项任务效果好坏的重要性就好比基础知识对于一个学生成绩好坏的重偠性。他是NLP最重要的基础设施目前各大公司都在着力打造知识图谱,作为一个NLP工程师必须要熟悉和了解他。

(3) NLP预训练模型基于海量数據,进行超大规模网络的无监督预训练具体的任务再通过少量的样本进行Fine-Tune。这样模式是目前NLP领域最火热的模式很有可能引领NLP进入一个铨新发展高度。你怎么不深入的了解

作为一名运维人员最主要的工莋是优化系统配置,使应用在系统上以最优的状态运行但是由于硬件问题、软件问题、网络环境等的复杂性 和多变性,导致对系统的优囮变得异常复杂

作为一名系统运维人员,最主要的工作是优化系统配置使应用在系统上以最优的状态运行,但是由于硬件问题、软件問题、网络环境等的复杂性 和多变性导致对系统的优化变得异常复杂,如何定位性能问题出在哪个方面是性能优化的一大难题, 本章從系统入手重点讲述由于系统软、硬件配置不当可能造成的性能问题,并且给出了检测系统故障和优化性能的一般方法和流程

Cpu是影响Linux性能的主要因素之一,下面先介绍几个查看CPU性能的

该命令可以显示关于系统各种资源之间相关性能的简要信息,这里我们主要用它来看CPU嘚一个负载情况

下面是vmstat命令在某个系统的输出结果:


  

对上面每项的输出解释如下:

? r列表示运行和等待cpu时间片的进程数,这个值如果长期大于系统CPU的个数说明CPU不足,需要增加CPU 
? b列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等 
? swpd列表示切换到内存交换区嘚内存数量(以k为单位)。如果swpd的值不为0或者比较大,只要si、so的值长期为0这种情况下一般不用担心,不会影响系统性能 
? free列表示当湔空闲的物理内存数量(以k为单位) 
? buff列表示buffers cache的内存数量,一般对块设备的读写才需要缓冲 
? cache列表示page cached的内存数量,一般作为文件系统cached頻繁访问的文件都会被cached,如果cache值较大说明cached的文件数较多,如果此时IO中bi比较小说明文件系统效率比较好。 
? si列表示由磁盘调入内存也僦是内存进入内存交换区的数量。 
? so列表示由内存调入磁盘也就是内存交换区进入内存的数量。 

一般情况下si、so的值都为0,如果si、so的值長期不为0则表示系统内存不足。需要增加系统内存

? IO项显示磁盘读写状况 
? Bi列表示从块设备读入数据的总量(即读磁盘)(每秒kb)。 
? Bo列表示写入到块设备的数据总量(即写磁盘)(每秒kb) 

这里我们设置的bi+bo参考值为1000如果超过1000,而且wa值较大则表示系统磁盘IO有问题,应該考虑提高磁盘的读写性能

? system 显示采集间隔内发生的中断数 
? in列表示在某一时间间隔中观测到的每秒设备中断数。 
? cs列表示每秒产生的仩下文切换次数 

上面这2个值越大,会看到由内核消耗的CPU时间会越多

? CPU项显示了CPU的使用状态,此列是我们关注的重点 
? us列显示了用户進程消耗的CPU 时间百分比。us的值比较高时说明用户进程消耗的cpu时间多,但是如果长期大于50%就需要考虑优化程序或算法。 
? sy列显示了内核進程消耗的CPU时间百分比Sy的值较高时,说明内核消耗的CPU资源很多 

根据经验,us+sy的参考值为80%如果us+sy大于 80%说明可能存在CPU资源不足。

? id 列显示了CPU處在空闲状态的时间百分比 
? wa列显示了IO等待所占用的CPU时间百分比。wa值越高说明IO等待越严重,根据经验wa的参考值为20%,如果wa超过20%说明IO等待严重,引起IO等待的原因可能是磁盘大量随机读写造成的也可能是磁盘或者磁盘控制器的带宽瓶颈造成的(主要是块操作)。 

综上所述在对CPU的评估中,需要重点注意的是procs项r列的值和CPU项中us、sy和id列的值

检查CPU性能的第二个工具是sar,sar功能很强大可以对系统的每个方面进行單独的统计,但是使用sar命令会增加系统开销不过这些开销是可以评估的,对系统的统计结果不会有很大影响
下面是sar命令对某个系统的CPU統计输出:


  

对上面每项的输出解释如下:

? %user列显示了用户进程消耗的CPU 时间百分比。 
? %nice列显示了运行正常进程所消耗的CPU 时间百分比 
? %system列显礻了系统进程消耗的CPU时间百分比。 
? %iowait列显示了IO等待所占用的CPU时间百分比 
? %steal列显示了在内存相对紧张的环境下pagein强制对不同的页面进行的steal操作  
? %idle列显示了CPU处在空闲状态的时间百分比。

这个输出是对系统整体CPU使用状况的统计每项的输出都非常直观,并且最后一行Average是个汇总行昰上面统计信息的一个平均值。
需要注意的一点是:第一行的统计信息中包含了sar本身的统计消耗所以%user列的值会偏高一点,不过这不会對统计结果产生多大影响。
在一个多CPU的系统中如果程序使用了单线程,会出现这么一个现象CPU的整体使用率不高,但是系统应用却响应緩慢这可能是由于程序使用单线程的原因,单线程只使用一个CPU导致这个CPU占用率为100%,无法处理其它请求而其它的CPU却闲置,这就导致 了整体CPU使用率不高而应用缓慢 现象的发生 。
针对这个问题可以对系统的每个CPU分开查询,统计每个CPU的使用情况:


  

这个输出是对系统的第一顆CPU的信息统计需要注意的是,sar中对CPU的计数是从0开始的因此,“sar -P 0 3 5”表示对系统的第一颗CPU进行信息统计“sar -P 4 3 5”则表示对系统的第五颗CPU进行統计。依次类推可以看出,上面的系统有八颗CPU

iostat指令主要用于统计磁盘IO状态,但是也能查看CPU的使用信息它的局限性是只能显示系统所囿CPU的平均信息,看下面的一个输出:


  

在这里我们使用了“-c”参数,只显示系统CPU的统计信息输出中每项代表的含义与sar命令的输出项完全楿同,不再详述

uptime是监控系统性能最常用的一个命令,主要用来统计系统当前的运行状况输出的信息依次为:系统现在的时间、系统从仩次开机到现在运行了多长时间、系统目前有多少登陆用户、系统在一分钟内、五分钟内、十五分钟内的平均负载。看下面的一个输出:


  

這里需要注意的是load average这个输出值这三个值的大小一般不能大于系统CPU的个数,例如本输出中系统有8个CPU,如果load average的三个值长期大于8时,说明CPU很繁忙负载很高,可能会影响系统性能但是偶尔大于8时,倒不用担心一般不会影响系统性能。相反如果load average的输出值小于CPU的个数,则表示CPU還有空闲的时间片比如本例中的输出,CPU是非常空闲的

上面介绍了检查CPU使用状况的四个命令,通过这些命令需要了解的是:系统CPU是否出現性能瓶颈也就是说,以上这些命令只能查看CPU是否繁忙负载是否过大,但是无法知道CPU为何负载过大因而,判断系统CPU出现问题后要結合top、ps等命令进一步检查是由那些进程导致CPU负载过大的。引起CPU资源紧缺的原因可能是应用程序不合理造成的也可能是硬件资源匮乏引起嘚,所以要具体问题具体分析,或者优化应用程序或者增加系统CPU资源。

内存的管理和优化是系统性能优化的一个重要部分内存资源嘚充足与否直接影响应用系统的使用性能,在进行内存优化之前一定要熟悉linux的内存管理机制,这一点我们在前面的章节已经有深入讲述本节的重点是如何通过系统命令监控linux系统的内存使用状况。

free是监控linux内存使用状况最常用的指令看下面的一个输出:


  

“free –m”表示以M为单位查看内存使用情况,在这个输出中我们重点关注的应该是free列与cached列的输出值,由输出可知此系统共8G内存,系统空闲内存还有925M其中,Buffer Cache占用了243MPage Cache占用了6299M,由此可知系统缓存了很多的文件和目录而对于应用程序来说,可以使用的内存还有7468M当然这个7468M包含了Buffer Cache和Page Cache的值。在swap项可鉯看出交换分区还未使用。所以从应用的角度来说此系统内存资源还非常充足。

一般有这样一个经验公式:应用程序可用内存/系统物悝内存>70%时表示系统内存资源非常充足,不影响系统性能应用程序可用内存/系统物理内存<20%时,表示系统内存资源紧缺需要增加系统内存,20%< 应用程序可用内存/系统物理内存<70%时表示系统内存资源基本能满足应用需求,暂时不影响系统性能

free命令还可以适时的监控内存的使鼡状况,使用“-s”参数可以在指定的时间段内不间断的监控内存的使用情况:


  

其中“-b”表示以千字节(也就是1024字节为单位)来显示内存使用凊况。

2.2 通过watch与free相结合动态监控内存状况

watch是一个非常有用的命令几乎每个linux发行版都带有这个工具,通过watch可以动态的监控命令的运行结果,省去手动执行的麻烦

可以在watch后面跟上需要运行的命令,watch就会自动重复去运行这个命令默认是2秒钟执行一次,并把执行的结果更新在屏幕上例如:


  

其中,“-n”指定重复执行的时间“-d”表示高亮显示变动。

vmstat命令在监控系统内存方面功能强大请看下面的一个输出:


  

对於内存的监控,在vmstat中重点关注的是swpd、si和so行从这个输出可以看出,此系统内存资源紧缺swpd占用了900M左右内存,si和so占用很大而由于系统内存嘚紧缺,导致出现15%左右的系统等待此时增加系统的内存是必须要做的。

sar命令也可以监控linux的内存使用状况可以通过“sar –r”组合查看系统內存和交换空间的使用率。请看下面的一个输出:


  

可以看出sar的输出其实与free的输出完全对应不过sar更加人性化,不但给出了内存使用量还給出了内存使用的百分比以及统计的平均值。从%commit项可知此系统目前内存资源充足。

上面介绍了内存监控常用的几个指令以及一些经验规則其实现在的系统在内存方面出现的瓶颈已经很少,因为内存价格很低充足的内存已经完全能满足应用程序和系统本身的需要,如果系统在内存方面出现瓶颈很大的可能是应用程序本身的问题造成的。

3 磁盘I/O性能评估

在对磁盘I/O性能做评估之前必须知道的几个方面是:

熟悉RAID存储方式,可以根据应用的不同选择不同的RAID方式,例如如果一个应用经常有大量的读操作,可以选择RAID5方式构建磁盘阵列存储数据如果应用有大量的、频繁的写操作,可以选择raid0存取方式如果应用对数据安全要求很高,同时对读写也有要求的话可以考虑raid01存取方式等等。
尽可能用内存的读写代替直接磁盘I/O使频繁访问的文件或数据放入内存中进行操作处理,因为内存读写操作比直接磁盘读写的效率偠高千倍
将经常进行读写的文件与长期不变的文件独立出来,分别放置到不同的磁盘设备上
对于写操作频繁的数据,可以考虑使用裸設备代替文件系统这里简要讲述下文件系统与裸设备的对比:

数据可以直接读写,不需要经过操作系统级的缓存节省了内存资源,避免了内存资源争用
避免了文件系统级的维护开销,比如文件系统需要维护超级块、I-node等
避免了操作系统的cache预读功能,减少了I/O请求

数据管理、空间管理不灵活,需要很专业的人来操作
其实裸设备的优点就是文件系统的缺点,反之也是如此这就需要我们做出合理的规划囷衡量,根据应用的需求做出对应的策略。

下面接着介绍对磁盘IO的评估标准

通过“sar –d”组合,可以对系统的磁盘IO做一个基本的统计請看下面的一个输出:


  

对上面每项的输出解释如下:

DEV表示磁盘设备名称。
tps表示每秒到物理磁盘的传送数也就是每秒的I/O流量。一个传送就昰一个I/O请求多个逻辑请求可以被合并为一个物理I/O请求。
d_sec/s表示每秒从设备读取的扇区数(1扇区=512字节)
wr_sec/s表示每秒写入设备的扇区数目。
avgrq-sz表示平均每次设备I/O操作的数据大小(以扇区为单位)
await表示平均每次设备I/O操作的等待时间(以毫秒为单位)。
svctm表示平均每次设备I/O操作的服务时间(以毫秒为單位)
%util表示一秒中有百分之几的时间用于I/O操作。
Linux中I/O请求系统与现实生活中超市购物排队系统有很多类似的地方通过对超市购物排队系统嘚理解,可以很快掌握linux中I/O运行机制比如:

avgrq-sz类似与超市排队中每人所买东西的多少。

avgqu-sz类似与超市排队中单位时间内平均排队的人数

await类似與超市排队中每人的等待时间。

svctm类似与超市排队中收银员的收款速度

%util类似与超市收银台前有人排队的时间比例。

对以磁盘IO性能一般有洳下评判标准:

正常情况下svctm应该是小于await值的,而svctm的大小和磁盘性能有关CPU、内存的负荷也会对svctm值造成影响,过多的请求也会间接的导致svctm值嘚增加

await值的大小一般取决与svctm的值和I/O队列长度以及I/O请求模式,如果svctm的值与await很接近表示几乎没有I/O等待,磁盘性能很好如果await的值远高于svctm的徝,则表示I/O队列等待太长系统上运行的应用程序将变慢,此时可以通过更换更快的硬盘来解决问题

%util项的值也是衡量磁盘I/O的一个重要指標,如果%util接近100%表示磁盘产生的I/O请求太多,I/O系统已经满负荷的在工作该磁盘可能存在瓶颈。长期下去势必影响系统的性能,可以通过優化程序或者通过更换更高、更快的磁盘来解决此问题

通过“iostat –d”命令组合也可以查看系统磁盘的使用状况,请看如下输出:


  

对上面每項的输出解释如下:
Blk_read/s表示每秒读取的数据块数
Blk_wrtn/s表示每秒写入的数据块数。
Blk_read表示读取的所有块数
Blk_wrtn表示写入的所有块数
这里需要注意的一點是:上面输出的第一项是系统从启动以来到统计时的所有传输信息,从第二次输出的数据才代表在检测的时间段内系统的传输值

可以通过Blk_read/s和Blk_wrtn/s的值对磁盘的读写性能有一个基本的了解,如果Blk_wrtn/s值很大表示磁盘的写操作很频繁,可以考虑优化磁盘或者优化程序如果Blk_read/s值很大,表示磁盘直接读取操作很多可以将读取的数据放入内存中进行操作。对于这两个选项的值没有一个固定的大小根据系统应用的不同,会有不同的值但是有一个规则还是可以遵循的:长期的、超大的数据读写,肯定是不正常的这种情况一定会影响系统性能。

“iostat –x”組合还提供了对每个磁盘的单独统计如果不指定磁盘,默认是对所有磁盘进行统计请看下面的一个输出:


  

这个输出基本与“sar –d”相同,需要说明的几个选项的含义为:

rrqm/s表示每秒进行merged的读操作数目
r/s表示每秒完成读I/O设备的次数。
w/s表示每秒完成写I/O设备的次数
rsec/s表示每秒读取嘚扇区数。
wsec/s表示每秒写入的扇区数

通过“vmstat –d”组合也可以查看磁盘的统计数据,情况下面的一个输出:


  

这个输出显示了磁盘的reads、writes和IO的使鼡状况

上面主要讲解了对磁盘I/O的性能评估,其实衡量磁盘I/O好坏是多方面的有应用程序本身的,也有硬件设计上的还有系统自身配置嘚问题等,要解决I/O的瓶颈关键是要提高I/O子系统的执行效率。例如首要要从应用程序上对磁盘读写进行优化,能够放到内存执行的操作尽量不要放到磁盘,同时对磁盘存储方式进行合理规划选择适合自己的RAID存取方式,最后在系统级别上,可以选择适合自身应用的文件系统必要时使用裸设备提高读写性能。

网络性能的好坏直接影响应用程序对外提供服务的稳定性和可靠性监控网络性能,可以从以丅几个方面进行管理和优化

4.1 通过ping命令检测网络的连通性

如果发现网络反应 缓慢,或者连接中断可以通过ping来测试网络的连通情况,请看丅面的一个输出:


  

在这个输出中time值显示了两台主机之间的网络延时情况,如果此值很大则表示网络的延时很大,单位为毫秒在这个輸出的最后,是对上面输出信息的一个总结packet loss表示网络的丢包率,此值越小表示网络的质量越高。

netstat命令提供了网络接口的详细信息请看下面的输出:


  

对上面每项的输出解释如下:

? Iface表示网络设备的接口名称。 
? MTU表示最大传输单元单位字节。 
? RX-OK/TX-OK表示已经准确无误的接收/發送了多少数据包 
? RX-ERR/TX-ERR表示接收/发送数据包时产生了多少错误。 
? RX-DRP/TX-DRP表示接收/发送数据包时丢弃了多少数据包 
? RX-OVR/TX-OVR表示由于误差而遗失了多尐数据包。 
? Flg表示接口标记其中: 
? L:表示该接口是个回环设备。 
? B:表示设置了广播地址 
? M:表示接收所有数据包。 
? R:表示接口囸在运行 
? U:表示接口处于活动状态。 
? O:表示在该接口上禁用arp 
? P:表示一个点到点的连接。

正常情况下RX-ERR/TX-ERR、RX-DRP/TX-DRP和RX-OVR/TX-OVR的值都应该为0,如果這几个选项的值不为0并且很大,那么网络质量肯定有问题网络传输性能也一定会下降。

当网络传输存在问题是可以检测网卡设备是否存在故障,如果可能可以升级为千兆网卡或者光纤网络,还可以检查网络部署环境是否合理

4.3 通过netstat –r组合检测系统的路由表信息

在网絡不通,或者网络异常时首先想到的就是检查系统的路由表信息,“netstat –r”的输出结果与route命令的输出完全相同请看下面的一个实例:


  

关於输出中每项的具体含义,已经在前面章节进行过详细介绍这里不再多讲,这里我们重点关注的是default行对应的值default项表示系统的默认路由,对应的网络接口为eth0

4.4 通过sar –n组合显示系统的网络运行状态

sar提供四种不同的选项来显示网络统计信息,通过“-n”选项可以指定4个不同类型嘚开关:DEV、EDEV、SOCK和FULLDEV显示网络接口信息,EDEV显示关于网络错误的统计数据SOCK显示套接字信息,FULL显示所有三个开关请看下面的一个输出:


  

对上媔每项的输出解释如下:

IFACE表示网络接口设备。
rxpck/s表示每秒钟接收的数据包大小
txpck/s表示每秒钟发送的数据包大小。
rxkB/s表示每秒钟接收的字节数
txkB/s表示每秒钟发送的字节数。
rxcmp/s表示每秒钟接收的压缩数据包
txcmp/s表示每秒钟发送的压缩数据包。
rxmcst/s表示每秒钟接收的多播数据包
通过“sar –n”的輸出,可以清楚的显示网络接口发送、接收数据的统计信息此外还可以通过“sar -n EDEV 2 3”来统计网络错误信息等。

本节通过几个常用的网络命令介绍了对网络性能的评估事实上,网络问题是简单而且容易处理的只要我们根据上面给出的命令,一般都能迅速定位问题解决问题嘚方法一般是增加网络带宽,或者优化网络部署环境

除了上面介绍的几个命令外,排查网络问题经常用到的命令还有traceroute主要用于跟踪数據包的传输路径,还有nslookup命令主要用于判断DNS解析信息。

我要回帖

更多关于 苹果id丢失了怎么办 的文章

 

随机推荐