inFusion错误类型分析
FusionStorage Block故障处理概述
install.log.0 FusionStora log-MDC.*
ge Agent log-OSD.*
log-VBS.*
zookeeper.log.*
安装agent的日志 MDC运行时的日志 OSD运行时的日志 VBS运行时的日志 ZK运行时的日志
/var/log/dsware /var/log/dsware /var/log/dsware /var/log/dsware /var/log/dsware
第19页
日志获取方法3 - 工具收集
第20页
日志获取方法4 - 手动收集
使用putty工具,用非root用户登录需要取日志的节点 执行su - root命令,并提示输入root用户的密码,切换至root用户 执行TMOUT=0命令,防止PuTTY超时退出 执行 tar -czvf log.tar,gz 日志文件,例如tar –czvf log.tar.gz /var/log/dsware/*
FusionStorage Block故障处理概述
技术创新,变革未来
前言
FusionStorage Block是华为分布式存储,了解和掌握 FusionStorage Block的故障处理方法,可以更好的部署和维 护企业云计算存储环境。
第1页
目标
学完本课程后,您将能够:
FusionStorage Block故障简介 FusionStorage Block告警机制介绍 FusionStorage Block日志机制介绍 FusionStorage Block故障处理流程 FusionStorage Block备份与恢复方法 FusionStorage Block应急预案介绍 FusionStorage Block高危操作
精选-FusionAccess桌面云故障处理
参考应急指南
检查各节点的IP是否正确,使 用ping命令检查网络连通性。
确认版本配套
客户端AccessClient版本与虚 拟机AccessAgent版本要匹配。
模块日志分析
根据问题现象查询对应模块的 日志进行分析。
登录连接故障案例 - 虚拟机图标显示为灰色
收集信 息
• 虚拟机图标为灰色(即状态为未注册) • 虚拟机处于关机状态
检查确 • 网络视频效果正常 认
1. FusionAccess故障处理流程 2. FusionAccess典型故障处理
业务发放故障 登录连接故障 性能体验故障 外设使用故障
外设技术回顾
设备 重定向
端口 重定向
其他 重定向
基于上层设备业务功能实现的重 定向技术
打印机、摄像头、TWAIN、PS/SC、 HID等默认使用设备重定向。
AD
应用程序初始化
显示正在连接界面
请求连接 (Address Ticket)
获取虚拟机IP
连接成功
建立连接
协商参数,登录虚拟机 (Login Ticket)
获取用户名密码
登录成功,呈现桌面
到AD上鉴权
问题处理思路
使用工具自检
虚拟机中,运行“连接自检工 具”,使用“一键检修”
检查服务状态
在FusionAccess portal中查看状态监 控信息,在服务器中查看组件状态。
FusionCare
FusionCare WinSCP
Huawei vDesk
用户终端
TC/SC
在TCM上使用“日志提取”功能远程获取日志。 使用手动方式收集用户终端日志。
TCM
故障定位常用方法
云计算故障处理-FusionAccess故障处理
用户组、模板、虚拟机、虚拟机组、桌
面组
3
4
5
1 2
5
3
4
2
1
1
用户或用户组:域用户或 一组域用户,使用桌面云 的用户需使用域帐户登录 虚拟机。
FusionAccess产品功能简介
FusionAccess是基于华为虚拟化平台的 一种虚拟桌面应用。
在虚拟化平台上部署FusionAccess,使 终端用户通过瘦客户端或者其他任何 与网络相连的设备来访问跨平台的应 用程序,以及整个客户桌面。
通过FusionAccess接入云平台,可重点 解决传统PC办公模式给客户带来的如: 安全、投资、办公效率等方面的诸多 挑战,适合大中型企事业单位、政府 其他分散/户外/移动型办公单位。
1. FusionAccess故障简介 2. FusionAccess业务发放故障处理 3. FusionAccess登录连接故障处理 4. FusionAccess性能体验故障处理 5. FusionAccess外设使用故障处理 6. FusionAccess备份与恢复 7. FusionAccess高危操作一览表 8. 典型案例分析
• 查阅在线帮助 • 按在线帮助步骤处
理
看错误提示
看告警
• 查看系统告警 • 按告警帮助步骤处
理
• 查看FusionAccess日 志
• 搜寻日志关键字错 误
• 根据日志提示处理
看日志
业务发放问题处理示例-看错误提示
1. 打开任务中心,查看任务进展信息,提示:“获取创建 出的虚拟机的计算机名失败,请您检查模板是否制作正确以 及网络环境是否正常,并重新创建虚拟机。”
013-精修A,B类错误的技巧
013晶体解析心得精修AB类错误的技巧PLAT412_ALERT_2_C Short Intra XH3 .. XHn H9 .. H13C ..1.87 Ang.对策:在Ins文件中添加Dfix 2.45 0.01 h9 h13c 指令,XL→ XL.(尝试调整比1.87大的数)范例:wq-5-36-2PLAT413_ALERT_2_B Short Inter XH3 .. XHn H2D .. H2D ..2.06 Ang.对策:在Ins文件中添加Dfix 2.52 0.01 h2d h2d 指令,XL→ XL.(尝试调整比2.06大的数)范例:Wq1-5PLAT430_ALERT_2_B Short Inter D...A Contact O2 .. N1 ..2.66 Ang.dfix 2.80 0.01 o2 n1PLAT230_ALERT_2_B Hirshfeld Test Diff for O2 -- C10 .. 7.15 suPLAT431_ALERT_2_C Short Inter HL..A Contact Cl1 .. N3 .. 3.11 Ang.dfix 2.90 0.01 o2 n1无B类错误,但是Cl1 .. N3 .. 3.11 Ang.dfix 3.00 0.01 o2 n1无B类错误,但是PLAT431_ALERT_2_C Short Inter HL..A Contact Cl1 .. N3 .. 3.11 Ang.---OKdfix 3.10 0.01 o2 n1无B类错误,但是PLAT430_ALERT_2_C Short Inter D...A Contact O2 .. N1 .. 2.90 Ang.---OK范例:p16-9PLAT230_ALERT_2_B Hirshfeld Test Diff for O9 -- C29 .. 7.97 su对策:在Ins文件中添加Delu 0.02 0.01 o9 c29指令,XL→ XL.(0.02 0.01必需成倍数关系)范例:f10, f15-2, e75PLAT232_ALERT_2_B Hirshfeld Test Diff (M-X) Cu1 -- Cl1 .. 13.26 sudelu 0.01 0.005 cu1 cl1PLAT220_ALERT_2_B Large Non-Solvent C Ueq(max)/Ueq(min) ... 4.07 Ratio对策:在Ins文件中添加simu 0.005 0.01 3.8 $c 指令,XL→ XL(0.005 0.01必需成倍数关系)范例:e75PLAT029_ALERT_3_B _diffrn_measured_fraction_theta_full Low ....... 0.94对策:在Ins文件中添加omit -3.00 50.02 指令,XL→ XL.范例:f15-2,e11, ye-12--00PLAT057_ALERT_3_B Correction for Absorption Required RT(exp) ...1.22对策:在Ins文件中添加size 0.21 0.19 0.18指令,XL→ XL.(调整a,b,c紧凑些, 亦即三者之间的差值小一些)范例:wq1-2PLAT148_ALERT_3_B su on the c - Axis is Too Large (x 1000) . 20 Ang.对策:尝试调小ins文件中c - Axis的数据, XL→ XL.范例:f15-4ZERR 6.00 0.0143 0.0143 0.02220.000 0.000 0.000ZERR 6.00 0.0143 0.0143 0.01820.000 0.000 0.000PLAT148_ALERT_3_B su on the c - Axis is Too Large (x 1000) . 18 Ang.ZERR 6.00 0.0143 0.0143 0.01520.000 0.000 0.000PLAT242_ALERT_2_C Check Low Ueq as Compared to Neighbors for Cu2对策:在Ins文件中添加simu 0.01 0.02 3.8 cu2 o9 o10 o11 o12 n3指令,XL→ XL.(尝试0.01 0.02或0.02 0.04) 包含cu2的周围的原子范例:f9-34PLAT241_ALERT_2_C Check High Ueq as Compared to Neighbors for C11范例:p4-2PLAT035_ALERT_1_A No _chemical_absolute_configuration info given . ?对策:在Cif文件中添加_chemical_absolute_configuration s_refine_ls_structure_factor_coef Fsqd_refine_ls_matrix_type full_refine_ls_weighting_scheme calc_refine_ls_structure_factor_coef Fsqd_chemical_absolute_configuration s_refine_ls_matrix_type full_refine_ls_weighting_scheme calc范例:p16-9PLAT055_ALERT_1_A Maximum Crystal Dimension Missing (or Error) ... ? 对策:在Ins文件中添加size a b c指令,XL→ XL(a,b,c的值见Pcf文件)范例:e11PLAT060_ALERT_4_A Ratio Tmax/Tmin (Exp-to-Rep) (too) Large ..3.49对策:在Ins文件中添加size a b c指令,调整a b c 的相应比例,XL→ XL. 范例:e11PLAT762_ALERT_1_A CIF Contains no X-Y-H or H-Y-H Angles .......... ?对策:在Ins文件中添加bond $h指令,XL→ XL.范例:e11Diffractometer make and type. Replaces _diffrn_measurement_type.Mode of intensity measurement and scan.Number of standards used in measurement._diffrn_standards_interval_time are missing. Number of measurementsbetween standards or time (min) between standards.Percentage decrease in standards intensity.对策:用Pcf文件中的内容,代替Cif文件中的的?_diffrn_radiation_source 'fine-focus sealed tube'_diffrn_radiation_monochromator graphite_diffrn_measurement_device_type ?_diffrn_measurement_method ?_diffrn_radiation_source 'fine-focus sealed tube'_diffrn_radiation_monochromator graphite_diffrn_measurement_device_type 'CCD area detector'_diffrn_measurement_method 'phi and omega scans'----P1-4PLAT420_ALERT_2_B D-H Without Acceptor O3 -H3B ... ?以下错误均为晶体本身所引起,不可修复PLAT026_ALERT_3_B Ratio Observed / Unique Reflections too Low ....31 Perc.PLAT022_ALERT_3_B Ratio Unique / Expected Reflections too Low ....0.89RINTA01_ALERT_3_B The value of Rint is greater than 0.15Rint given 0.152PLAT020_ALERT_3_B The value of Rint is greater than 0.10 ......... 0.15PLAT341_ALERT_3_B Low Bond Precision on C-C Bonds (x 1000) Ang ...19PLAT601_ALERT_2_B Structure Contains Solvent Accessible VOIDS of . 189.00 A**3调整GooF(S)值Refine时,适当改变Weights Suggested的值,Weights值越大,GooF值越小。
精典-华为云-FusionManager故障处理
FusionManager故障处理-看日志
4. 如果问题依然存在,使用FusionCare工具,收集更详细的 日志进行分析:
在日志文件中查找关键字,进行分析处理和故障排除
1. FusionManager故障简介 2. FusionManager管理节点故障处理 3. FusionManager操作维护故障处理 4. FusionManager备份与恢复 5. FusionManager高危操作一览表
恢复故障FM数据
主备节点FM故障处理流程
主备FusionManager虚拟机同时 故障时,需要参考本故障处理
取消单点登录 (可选)
重启FM虚拟机
操作,使业务快速恢复正常。
是否能 VNC登 录FM
是
启动HA服务
否 重装故障FM节点
联系华为 技术支持
节点的
否 HA状态
是否正 常
是
配置单点登录 (可选)
物理基础架构
以云服务自动化管理和资源智能运维为核心,构筑“敏捷、精简”的云数据中心管理体验
FusionManager故障处理一般流程
• 任务中心的错误提示 • 查阅在线帮助 • 按在线帮助步骤处理
看告警
• 查看系统告警 • 按告警帮助步骤处理
看错误提示
• 查看FusionManager日 志
• 搜寻日志关键字错误 • 根据日志提示处理
排除故障
单节点FM故障处理流程
FusionManager主备部署时,单个FusionManager虚拟机故障,
且重启该虚拟机后业务仍无法恢复时,需要参考本故障处理
操作,使业务快速恢复正常。
是否能 VNC登录
否
FM
是
06 FusionAccess故障处理
WinRM:检查重命名、加域、写注册表是否成功
WinRM:添加Tomcat域账户,删除vdesktop_user本地账户 更新虚拟机名、加入虚拟机组
选择一个HDC、加入桌面组,关联用户
保存新虚拟机名 更改虚拟机显示名称
WinRM:将用户加入权限组
VM
AD
重命名 写注册表 加域
快速封装虚拟机发放不成功时,参考该流程,逐步分析可能的故障点。
版权所有© 2016 华为技术有限公司
第3页
FusionAccess故障概览
登录连接 故障
性能体验 故障
外设使用 故障
业务发放 故障
FusionAccess 故障
软件兼容 故障
版权所有© 2016 华为技术有限公司
第4页
目录
1. FusionAccess故障简介 2. FusionAccess业务发放故障处理 3. FusionAccess登录连接故障处理 4. FusionAccess性能体验故障处理 5. FusionAccess外设使用故障处理 6. FusionAccess备份与恢复 7. FusionAccess高危操作一览表
第9页
完整复制发放流程
ITA
用户下发任务
创建任务 创建查询任务
DB
查询模板 创建虚拟机
FC
HDC
创建虚拟机
WinRM:根据虚拟机IP获取虚拟机名,如果AD上有重名则重命名 WinRM:虚拟机加域
加入虚拟机组
WinRM:添加Tomcat域账户,删除vdesktop_user本地账户
选择一个HDC、加入桌面组,关联用户
管理员创建和发放虚拟机过程中遇到的故障。
如创建虚拟机失败、虚拟机关联失败、虚拟机加域失败等。
嵌入式系统中的异常处理与错误检测方法
嵌入式系统中的异常处理与错误检测方法嵌入式系统是一种专门设计用于控制和驱动各种设备或系统的计算机系统。
由于嵌入式系统通常在一些关键的应用领域中运行,例如航空航天、医疗设备和汽车等,因此其可靠性和稳定性至关重要。
然而,在复杂的硬件和软件环境下,异常和错误不可避免地会发生。
因此,在嵌入式系统中,异常处理与错误检测方法是至关重要的组成部分。
异常处理是指对于嵌入式系统中出现的异常情况进行相应的处理和恢复。
异常可以是由于硬件故障、软件错误、通信异常或外部干扰等原因引起的系统中断或异常情况。
对于这些异常情况,嵌入式系统需要具备相应的机制来进行处理,以保证系统的正常运行和稳定性。
首先,嵌入式系统可以利用异常处理机制来对硬件故障进行检测和处理。
例如,当嵌入式系统中的硬件组件出现故障或错误时,例如存储器错误、时钟故障或信号丢失等,系统可以通过使用硬件监控器和故障检测电路来检测和分析这些异常情况。
一旦检测到异常情况,系统可以通过适当的措施来进行错误处理和恢复,例如重新启动、重置或切换备份系统等。
其次,嵌入式系统还可以利用软件异常处理来对软件错误进行检测和处理。
软件错误可能包括程序错误、数据异常或算法错误等。
为了检测和处理这些软件错误,嵌入式系统可以采用软件调试和异常处理技术。
例如,系统可以通过在程序中插入断言语句、错误检测代码和异常处理函数来实现对软件错误的检测和处理。
当软件错误发生时,系统可以根据错误类型和严重程度采取相应的措施,例如记录错误信息、打印错误日志或进行错误恢复等。
此外,嵌入式系统还可以利用通信异常处理来对外部通信异常进行检测和处理。
在嵌入式系统中,与外部设备或系统的通信是常见的操作。
当外部通信发生故障或异常时,系统可以通过使用适当的通信异常处理机制来检测和分析这些问题。
例如,系统可以通过检测通信时延、校验和错误码等指标来判断通信是否正常。
一旦检测到通信异常,系统可以采取相应的措施,例如重新发送消息、切换通信通道或通知用户等。
FusionCompute运维故障处理指南
不能添加、修 改、删除存储
资源
不能关联存储 资源
存储设备 故障
扫描不到存储 设备
数据存储 故障
添加、修改、 移除数据存储
异常
关联、解关联 主机异常
数据存储异常
虚拟磁盘 故障
创建、绑定、 解绑定、删除 虚拟磁盘异常
调整容量异常
快照异常 迁移异常
第20页
存储资源、存储设备故障点分析
第3页
FusionCompute功能简介
计算池
• 提供站点下集群与主机资源的监控、管理和维护功能。
存储池
• 提供站点下存储资源、数据存储与磁盘管理功能,并可为系统增添共 享存储设备。
网络池
• 提供分布式交换机和网络资源的维护和管理。
虚拟机和模板
• 提供虚拟机资源的监控、管理、维护和模板属性规格管理的功能。
第13页
系统接口故障点分析
• 网口绑定异常 • 业务管理接口异常 • 存储接口异常
故障点
可能的故障原 因
• 网络异常 • 主机异常 • VRM异常
• 排除网络故障 • 修复主机 • 修复VRM
排除故障
系统接口涉及到底层网络硬件,主机和VRM节点,排除故障时可自顶 向下快速定位故障层次,然后再自底向上逐步排除故障点。
第2页
目录
1. FusionCompute故障简介 2. FusionCompute主机和集群故障处理 3. FusionCompute存储故障处理 4. FusionCompute网络故障处理 5. FusionCompute虚拟机和模板故障处理 6. FusionCompute日常操作维护故障处理 7. FusionCompute高危操作一览表 8. 典型案例
云计算故障处理-FusionCloud故障处理
基础设施层
FusionSphere 分布式存
计算节点
储
云备份 云容灾
服务器
交 换 机
防 火 墙
负 载 均 衡
文
件
对象存储 FusionInsight LibrA vSphere Oracle
存
服务器
服务器
服务器 服务器 服务器
储
公共服务API
运营 API
计量信息 Ceilometer
消息通知 Mail/SMS SMN
gaussdb ntp-server ntp-client
日志类型 操作日志 运行日志 运行日志 组件启停日志 运行日志
组件启停日志 运行日志 运行日志 操作日志 运行日志 组件启停日志 运行日志 组件启停日志 运行日志
日志存储具体路径 /var/log/fusionsphere/operate/glance-api /var/log/fusionsphere/component/glance-api /var/log/fusionsphere/component/glance-registry /var/log/fusionsphere/component/glanceControl /var/log/fusionsphere/component/swift-proxy /var/log/fusionsphere/component/swift-store /var/log/fusionsphere/component/swiftControl /var/log/fusionsphere/component/rabbitmq /var/log/fusionsphere/component/rabbitmq-client /var/log/fusionsphere/operate/keystone-api/ /var/log/fusionsphere/component/keystone /var/log/fusionsphere/component/keystoneControl/ /var/log/fusionsphere/component/gaussdb /var/log/fusionsphere/component/gaussdbControl/ /var/log/fusionsphere/component/ntp-server/ /var/log/fusionsphere/component/ntp-client/
fortran90常见错误
1、运行fortran时出现forrt1:severe<59>:list-directed I/O syntax error,unit 1,file G:\1\1\meat.dat怎么办这是通道1 ,链接到文件meat.dat 的读写出错了。
这问题你得认真检查类似read( 1 , * ) 或write( 1 , * ) 这样的语句,错误原因挺多的。
比如二进制文件用了文本方式读取,比如变量列表与文件不匹配。
问:另外forrt1:severe<161>:program exception -array bounds exceeded是怎么回事?回答:数组越界,也是很常见的错误。
比如real a(100)如果你使用了a(101) 就会越界,因为a 数组只有100 个元素。
2、fortran运行提示error M6201:math-**,现将代码贴出,求高手帮忙看看,急求解答!我不能确定你的错误是怎么引起的。
可能咱们的编译器不同。
你的代码在我这里的问题是:虚参和实参精度不同。
在程序中,你定义了部分real*8,但是对应的虚参和返回值却定义为real。
比如主程序里的z1(双精度),传入函数g里面的x却定义为单精度。
主程序Do 死循环了。
z2_jiashe 和 z2_suan 每一次循环都没有发生改变,于是永远跳不出循环。
我给你的建议是:同一个程序,统一使用real*8 或real*4,尽量不要混用,除非你很自信能理清他们的关系。
检查Do 循环,尤其是z2_jiashe 和z2_suan,是否应该每次循环不同?fortran_排除错误(2012-04-20 23:22:44)安装好VISUAL FORTRAN后1、运行Developer studio即可开始编译FORTRAN程序2、选择File菜单中的New选项3、在弹出的对话框选择projects标签,其他标签不用管,projects格式选用Fortran console application;在project name里命名(最好英文名),点击“ok ”4、接下来画面中,选择“an empty project”,点击“finish”5、接下来画面点击“ok”6、再选择一次File菜单中的new7、对话框选用files标签,选择Fortran free format source file ,并在file里命名8、点击“ok”数Source Files 放源文件(.c、.cpp)程序的实现代码全放在这里Header Files 放头文件(.h)声明放在这里Resource Files 资源文件(.rc)放图标、图片、菜单、文字之类的,主要用来做界面的东东一般都放这里External Dependencies 除上三种以外的,程序编译时用到的文件全放这里fortran内部函数出错信息解释内部函数出错信息解释[sourcefile(line)]run-time error M62××MATH错误号函数级数学错误信息M6201 functionnames:DOMAIN error函数的自变量超出了约定的取值域,例如sqrt(-1)M6202 functionname:SING error无意义的变量。
Informix常见错误处理思路
数据库 chunk 出现异常,I/O 失败
• 故障现象: 数据库日志中出现 chunk IO 错误,使用 onstat –d 观察 chunk flag 的状态是 down 的状态,数据库操作中不能操作包含在这些 chunk 中的数据,如果使 用到这些数据可能会返回错误,严重情况下会导致数据库宕机。
Informix 常见错误处理思路及应用
深圳IT-叶万华
2019年1月10日
informix常见错误处理思路
逻辑日志满
频繁的锁冲突 长事务 I/O 失败
逻辑日志满
• 故障现象: 数据库不再进行任何操作,使用 onstat –l 命令观察逻辑日志状态,所有 的逻辑日志都处于已使用未备份状态,即 flags 为 U------ 标志。
• /informix-dba/194-informix.html 中国Informix数据库用户协会
所有的管理都存在一定风险,所有的监控都是为了更好的管理。希望同事们不 断总结经验,共享经验,从各方面提升自我。我们可以抱着怀疑的态度去肯定 自己,证实自己。任何操作都是有风险的,请大家多留意细节!
类似的锁表现象中,我们在日常的监控过程中会经常观察得到。
频繁的锁冲突
• 故障分析:
数据库在进行修改操作的时候为了防止其他用户的同时修改,都会在修改所涉及的数据上设 置对应的锁,如果其他用户再访问到这些已经被放置上锁的数据,就会出现锁失败。例如如 果需要知道在指定的表上是有哪些用户具体占用了锁,可以通过以下的方式查看: 执行 onstat –u来获得实际的 session 信息,从中就可以找到锁的拥有者。
长事务
• 故障处理: 根据数据库日志里面所提供的信息可以很方便的发现具体是哪一个事务造 成了长事务。系统在将某个事务判定为长事务以后就会自动对其进行回滚 操作。事后可以有针对性的调整应用将大的事务划分为小事务进行提交; 避免一个活动事务长时间没有后续的操作;提供充足的逻辑日志空间,这 里所指出的不仅是空间的总量需要增加,逻辑日志的个数也是应该增加的 ,因为判断的标准是以逻辑日志的使用个数所占比例来确定的。在 INFORMIX 9.3X 以后的版本中可以通过动态增加逻辑日志的手段避免由于 长事务带来的一些不良影响,在长事务回滚过程中如果逻辑日志空间被消 耗完毕,如果 DYNAMIC_LOGS 设置为 2,数据库服务器会自动在最后创 建的逻辑日志所存在的 dbspace 上查找空余空间,按照最后创建的逻辑日 志的大小自动在当前逻辑日志之后新增逻辑日志,如果不能满足需要则会 创建失败,需要管理员手工添加。
FusionCloud运维故障处理指南
日志类型 操作日志 运行日志
组件启停 日志
日志存储具体路径 /var/log/fusionsphere/operate/neutron-api /var/log/fusionsphere/component/nutron-server /var/log/fusionsphere/component/nutron-sriov-nic-agent /var/log/fusionsphere/component/nutron-evs-agent /var/log/fusionsphere/component/nutron-reschedule /var/log/fusionsphere/component/nutron-metadata-agent /var/log/fusionsphere/component/nutron-dhcp-agent /var/log/fusionsphere/component/nutron-l3-agent /var/log/fusionsphere/component/nutron-servicechain-agent /var/log/fusionsphere/component/nutron-metering-agent /var/log/fusionsphere/component/nutron-openvswitch-agent /var/log/fusionsphere/component/nutron-netmap-nic-agent /var/log/fusionsphere/component/nutron-vc-vswitch-agent001
FusionCloud运维故障处理指南
技术创新,变革未来
前言
⚫ FusionCloud是物理分散、逻辑统一、业务驱动、云管协同、 业务感知的数据中心解决方案,可支持企业或机构业务的持 续发展,能满足对业务全生命周期的管理。了解和掌握 FusionCloud的故障处理方法,可以更好的部署和维护企业云 计算环境。
FusionCompute日常维护与故障处理介绍
FusionCompute日常维护与故障处理介绍技术创新,变革未来⚫FusionCompute是华为云计算解决方案的基石,了解和掌握FusionCompute的日常维护和故障处理方法,可以更好的部署和维护企业云计算环境。
通过本章学习,您将能够掌握FusionCompute系统的日常运维能力。
⚫学完本课程后,您将能够:⚫描述日常维护操作⚫区分FusionCompute告警⚫分析常见故障处理步骤⚫描述FusionCompute常见故障处理方法1.维护管理◼日常监控☐配置管理☐用户管理☐FusionCompute备份与恢复2.故障管理日常维护操作⚫为了保证系统长期正常、稳定的运行,维护工程师需要定期对系统进行检查,并根据检查出的异常结果排除故障。
维护项目检查项正常状态维护周期查看系统告警FusionCompute 上的告警无新增告警每天检查FusionCompute 健康状态健康检查报告无“不合格”检查项每天检查设备运行状态服务器、交换机和存储设备的指示灯状态指示灯显示正常每天检查设备运行环境温湿度符合运行环境对温度和湿度的要求。
每周空气质量符合运行环境对空气质量的要求每周防尘情况无明显尘土附着每周查看预警整改公告“/enterpr ise”,选择“公告>产品公告>预警公告>IT >云计算数据中心>FusionSphere >FusionSphere”,查看预警整改公告。
满足预警通知的要求每月查看告警告警级别图标说明紧急已经影响业务、需要立即采取纠正措施的告警为紧急告警。
重要已经影响业务,如果不及时处理会产生较为严重后果的告警为重要告警。
次要目前对业务没有影响,但需要采取纠正措施,以防止更为严重的故障的发生,这种情况下的告警为次要告警。
提示检测到潜在的或即将发生的影响业务的故障,但是目前对业务还没有影响,这种情况下的告警为提示告警。
实时监控⚫管理员可以查看集群、主机以及虚拟机的监控信息,以便于了解集群在指定时间段内的运行状态目录1.维护管理☐日常监控◼配置管理☐用户管理☐FusionCompute备份与恢复2.故障管理⚫管理员可以根据业务需求对FusionCompute系统配置参数作出调整。
MIDAS gen中分析报错总结
Gen中分析报错总结1、MAXIMUM NUMBER OF ITERATION HAS BEEN REACHEDCHECK TOLERANCE IN THE VIBRATION RESULT TABLERECOMMENDATION FOR BETTER CONVERGENCE :INCREASE THE SUBSPACE DIMENSION GREATER THANMIN(2Nf, Nf+8) (Nf=NUMBER OF FREQUENCIES)得到最大迭代次数,请在振动结果表中检查公差。
建议增加子空间维数,大于MIN(2Nf, Nf+8) Nf=数量的频率解:修改“子空间大小”2、节点奇异解:要查看边界条件及荷载加载3、静力弹塑性分析的报错,例题“上海建工林晨”[WARNING] : THE YIELDING OCCURRED IN THE INELASTIC HINGE BY INITIAL LOADING : [My_I-End] COMP. OF BEAM NO. 20171[WARNING] : THE YIELDING OCCURRED IN THE INELASTIC HINGE BY INITIAL LOADING : [My_I-End] COMP. OF BEAM NO. 2024[WARNING] : THE YIELDING OCCURRED IN THE INELASTIC HINGE BY INITIAL LOADING : [My_I-End] COMP. OF BEAM NO. 4059[WARNING] : THE YIELDING OCCURRED IN THE INELASTIC HINGE BY INITIAL LOADING : [My_J-End] COMP. OF BEAM NO. 4306[WARNING] : THE YIELDING OCCURRED IN THE INELASTIC HINGE BY INITIAL LOADING : [My_I-End] COMP. OF BEAM NO. 4323[WARNING] : THE YIELDING OCCURRED IN THE INELASTIC HINGE BY INITIAL LOADING : [My_J-End] COMP. OF BEAM NO. 4570[WARNING] : THE YIELDING OCCURRED IN THE INELASTIC HINGE BY INITIAL LOADING : [My_I-End] COMP. OF BEAM NO. 4587[WARNING] : THE YIELDING OCCURRED IN THE INELASTIC HINGE BY INITIAL LOADING : [My_J-End] COMP. OF BEAM NO. 4834[WARNING] : THE YIELDING OCCURRED IN THE INELASTIC HINGE BY INITIAL LOADING : [My_I-End] COMP. OF BEAM NO. 4850[WARNING] : THE YIELDING OCCURRED IN THE INELASTIC HINGE BY INITIAL LOADING : [My_J-End] COMP. OF BEAM NO. 5098[WARNING] : THE YIELDING OCCURRED IN THE INELASTIC HINGE BY INITIAL LOADING : [My_I-End] COMP. OF BEAM NO. 5114[WARNING] : THE YIELDING OCCURRED IN THE INELASTIC HINGE BY INITIAL LOADING : [My_I-End] COMP. OF BEAM NO. 5131[WARNING] : THE YIELDING OCCURRED IN THE INELASTIC HINGE BY INITIAL LOADING : [My_J-End] COMP. OF BEAM NO. 5367[WARNING] : THE YIELDING OCCURRED IN THE INELASTIC HINGE BY INITIAL LOADING : [My_I-End] COMP. OF BEAM NO. 5384[WARNING] : THE YIELDING OCCURRED IN THE INELASTIC HINGE BY INITIAL LOADING : [My_I-End] COMP. OF BEAM NO. 5401[WARNING] : THE YIELDING OCCURRED IN THE INELASTIC HINGE BY INITIAL LOADING :1[My_I-End] COMP. OF BEAM NO. 5422[WARNING] : THE YIELDING OCCURRED IN THE INELASTIC HINGE BY INITIAL LOADING : [My_J-End] COMP. OF BEAM NO. 5645[WARNING] : THE YIELDING OCCURRED IN THE INELASTIC HINGE BY INITIAL LOADING : [My_J-End] COMP. OF BEAM NO. 5647[WARNING] : THE YIELDING OCCURRED IN THE INELASTIC HINGE BY INITIAL LOADING : [My_I-End] COMP. OF BEAM NO. 5652[WARNING] : THE YIELDING OCCURRED IN THE INELASTIC HINGE BY INITIAL LOADING : [My_J-End] COMP. OF BEAM NO. 5652[WARNING] : THE YIELDING OCCURRED IN THE INELASTIC HINGE BY INITIAL LOADING : [My_J-End] COMP. OF BEAM NO. 5653[WARNING] : THE YIELDING OCCURRED IN THE INELASTIC HINGE BY INITIAL LOADING : [My_I-End] COMP. OF BEAM NO. 5661[WARNING] : THE YIELDING OCCURRED IN THE INELASTIC HINGE BY INITIAL LOADING : [My_I-End] COMP. OF BEAM NO. 5678[WARNING] : THE YIELDING OCCURRED IN THE INELASTIC HINGE BY INITIAL LOADING : [My_I-End] COMP. OF BEAM NO. 5699[WARNING] : THE YIELDING OCCURRED IN THE INELASTIC HINGE BY INITIAL LOADING : [My_J-End] COMP. OF BEAM NO. 5717[WARNING] : THE YIELDING OCCURRED IN THE INELASTIC HINGE BY INITIAL LOADING : [My_I-End] COMP. OF BEAM NO. 5891< PUSHOVER LOADCASE NO. 1 / 1 >* INCREMENT METHOD : DISPLACEMENT CONTROL( Maximum Translational Displacement )* ANALYSIS OPTION : P-DELTA* CONSIDERING INITIAL LOADCASE* LOADCASE LOAD TYPE : MODE SHAPE* INCORE MULTI-FRONTAL SOLVER1----INC. STEPS- ----SUBSTEP- --ITERATION- --LOAD PARAMETER- --ELAPSED / TOTAL TIME----43 / 100 67 561 ************ 552.320 / 1284.465 [sec]>>> ITERATIVE SOLUTION DIVERGED.>>> CHANGE INCREMENT SIZE OR (AND) NONLINEAR ANALYSIS CONTROL PARAMETERS43 / 100 67 563 ************ 553.740 / 1287.767 [sec]>>> ITERATIVE SOLUTION DIVERGED.>>> CHANGE INCREMENT SIZE OR (AND) NONLINEAR ANALYSIS CONTROL PARAMETERS43 / 100 67 564 ************ 555.450 / 1291.744 [sec]>>> ITERATIVE SOLUTION DIVERGED.>>> CHANGE INCREMENT SIZE OR (AND) NONLINEAR ANALYSIS CONTROL PARAMETERS43 / 100 67 565 ************ 556.850 / 1295.000 [sec]>>> ITERATIVE SOLUTION DIVERGED.>>> CHANGE INCREMENT SIZE OR (AND) NONLINEAR ANALYSIS CONTROL PARAMETERS43 / 100 67 566 ************ 558.070 / 1297.837 [sec]>>> ITERATIVE SOLUTION DIVERGED.>>> CHANGE INCREMENT SIZE OR (AND) NONLINEAR ANALYSIS CONTROL PARAMETERS43 / 100 67 567 ************ 559.110 / 1300.256 [sec]1>>> ITERATIVE SOLUTION DIVERGED.>>> CHANGE INCREMENT SIZE OR (AND) NONLINEAR ANALYSIS CONTROL PARAMETERS43 / 100 67 568 ************ 560.450 / 1303.372 [sec]>>> ITERATIVE SOLUTION DIVERGED.>>> CHANGE INCREMENT SIZE OR (AND) NONLINEAR ANALYSIS CONTROL PARAMETERSDISTANCES BETWEEN NODES IN SOME ELEMENTS ARE ABNORMALWHEN CALCULATING STIFFNESS OR STRESS FOR THEM.PLEASE CHECK INPUT DATA (ELEMENTS SHAPES, MESH SIZE & PATTERNS,MATERIAL PROPERTIES, AND FORCE INCREMENT, Etc).NODAL(UPDATED) COORDINATE IS SAVED FN.OUT FILE-------------------------------------------------------------ERRORS ENCOUNTERED. MIDAS JOB TERMINATED. REFER TO .OUT FILE-------------------------------------------------------------解:检查模型相应单元处的铰定义4、警告信息:在节点处方程无效,解:边界设置问题5、导入过程中,提示如下。
infromix错误详查
informix错误代码小结所有错误可以用finderr+错误代码查到,英文的,这里中文注释便于理解。
-100 错误的描述:C—ISAM错误;向具有唯一索引的字段加入一个重复值。
系统的操作:该语句不被处理。
更正的方法:检查是否用iswrite,isrewrite,isrewcurr或isaddindex的方法,向一个具有唯一索引的字段加入一重复值。
-101 错误的描述:C-ISAM错误;文件没有打开。
系统的操作:该语句不被处理。
更正的方法:检查C-ISAM错误:C-ISAM文件是否已用isopen调用打开,或者是否向一个以只读打开的C-ISAM文件中执行写操作。
-102 错误的描述:C—ISAM错误:C—ISAM函数含有非法参数系统的操作:该语句不被处理更正的方法:检查C—ISAM调用的第一个参数,是否超出相应的值域-103 错误的描述:C—ISAM错误;非法的关键字说明(太多的分量或太长)系统的操作:该语句不被处理。
更正的方法:检查组成该关键字说明的一个或多个元素,是否超出相应的值域。
(每个关键字的说明最多允许8个分量和120个字符)-104 错误的描述:C—ISAM错误:打开文件太多系统的操作:该语句不被处理。
更正的方法:在UNIX系统中(以及多数DOS系统中),每个进程打开文件夹的最大个数为20。
-105 错误的描述:C—ISAM错误:C—ISAM文件格式有误。
系统的操作:该语句不被处理。
更正的方法:C—ISAM文件的格式已被破坏,对该文件运行bcheck程序,修复被破坏了的索引。
如果bcheck不能修复该文件,须从后援存储介质上重新装入数据。
-106 错误的描述:C—ISAM错误;非互斥访问。
系统的操作:该语句不被处理。
更正的方法:当要增加或删除一个索引时,必须以互斥访问打开文件。
-107 错误的描述:C—ISAM错误:记录被锁住。
系统的操作:该语句不被处理。
更正的方法:由该调用请求的文件或记录不能被访问,这是因为该文件被其它用户锁住。
FusionCompute云计算平台故障处理指南
FusionCompute云计算平台故障处理指南目录前言 (ii)1概述 (1)1.1故障处理流程 (2)1.2故障分类 (3)2信息收集 (5)2.1基本故障信息收集 (6)2.2告警信息收集 (6)2.3事件信息收集 (8)2.4收集日志 (8)3常见故障处理 (11)3.1用户虚拟机故障 (12)3.1.1虚拟机蓝屏 (12)3.1.2SUSE 虚拟机网卡不可用 (14)3.1.3Ubuntu10.04 及以上版本操作系统中uvp-monitor 进程未启动 (18)3.1.4Windows Server 2003 虚拟机绑定USB 2.0 设备后,虚拟机黑屏或关机失败 (19)3.1.5SUSE 10 虚拟机不能正常使用USB 2.0 设备 (20)3.1.6重启或关闭主机网络服务后,主机网络异常 (21)3.1.7虚拟机同时绑定SCSI 磁盘和IDE 磁盘时无法正常启动 (22)3.1.8本地磁盘的ext4 文件系统损坏 (23)3.1.9虚拟机内存数值显示异常 (25)3.2管理节点故障 (26)3.2.1VRM 虚拟机故障 (26)3.2.2主机操作系统故障 (32)3.3操作维护类故障 (35)3.3.1登录界面时IE 浏览器异常 (36)3.3.2FusionComute 无法获取监控数据 (38)3.3.3修改虚拟机IP 后虚拟机通信中断 (40)3.3.4主机管理网络配置与交换机不匹配 (42)3.3.5异常掉电再上电后,任务长时间无响应 (43)3.3.6网络数据残留导致添加主机失败 (44)3.3.7仲裁IP 地址失效,导致Web 客户端无法登录 (46)故障处理目录3.4Tools 故障 (47)3.4.1Windows 下安装Tools 时弹出警告提示 (47)3.4.2Windows 下安装Tools 时异常中止 (48)4部件更换 (50)4.1部件更换策略 (51)4.2更换主机 (53)A 附录 (57)A.1使用ISO 方式安装VRM 虚拟机 (58)A.2清除FusionCompute 中本地硬盘的残留数据 (63)A.3配置FusionCompute 告警上报 (64)A.4配置单点登录 (66)A.5如何处理虚拟机网卡乱序问题 (67)A.6ISO 镜像方式安装主机 (68)A.7配置IE 浏览器 (76)A.8配置Firefox 浏览器 (79)A.9登录FusionCompute (80)A.10兼容性 (83)B 术语 (94)B.1A-E (95)B.2F-J (96)B.3K-O (97)B.4 P-T (98)B.5 U-Z (99)1 概述关于本章1.1故障处理流程1.2故障分类1.1故障处理流程故障处理总体流程主要分为四个过程:故障信息收集、故障判断、故障定位、故障排除。
Illumina测序仪器故障问题处理(Troubleshooting)总结
3.
3.1.
现象描述:
在开始Read 1的照相前需进行校准对焦,第一步找平面有时会出错,如下图所示,提示“Exceeded maximum number of alignment”。
解决方法:
选择Normal Pause,先把网络连接问题解决,恢复网络后等待RTA运行将磁盘空间释放,再Resume Run。Hiseq2500的RTA可能会自行关闭了,找到RTA logs文件夹,运行里面的StartRTA.bat可以打开RTA。恢复网络后如果RTA不上传数据,查看大型机文件是否缺失并补齐。
(2)液路问题,重新安放FC和Mainfold,把FC和平台擦拭干净,FC往左下方靠,Mainfold垂直扣下压紧,如果仍然不通过,尝试更换Mainfold;更换Mainfold还是不通过的话,可能是注射器问题。
3.
cBot运行一个Run中可能发生错误而停止,原因可分为机械碰撞和通讯卡顿两类。
3.1.
解决方法:
(1)关闭HCS,重启电脑,等待电脑识别完成,出现DONOTEJECT盘再打开HCS软件,如果同样报错,尝试下一个方法。
(2)打开port manager软件或右键电脑——“Manager”——“Device Manager”,把所有COM删除,点击重启电脑,然后关闭仪器电源按钮,电脑重启后打开仪器电源按钮,等待识别完成,再打开HCS软件。若还不行,尝试下一个方法。
(3)把所有COM删除,点击重启电脑,然后关闭仪器电源按钮,电脑重启后打开仪器电源按钮,等待识别完成,再打开HCS软件。若还不行,尝试下一个方法。
FusionAccess桌面云运维故障处理介绍
目录
1. FusionAccess故障处理流程 2. FusionAccess典型故障处理
业务发放故障 登录连接故障 性能体验故障 ◼ 外设使用故障
第32页
外设技术回顾
设备 重定向
端口 重定向
其他 重定向
第33页
基于上层设备业务功能实现的重 定向技术
打印机、摄像头、TWAIN、PS/SC、 HID等默认使用设备重定向。
基于底层端口协议实现的重定向 技术
USB、串口、并口等,默认使用端口重 定向。
与具体设备无关的,属于某种通 用功能的重定向技术。
文件夹重定向、剪切板重定向。
外设使用故障处理流程
第34页
• 查看浮动窗口设置栏是否有设备 • VM设备管理器中,查看设备状态
快速 界定
• 根据不同的外设,切换不同的重定向方 式
FusionCare
⚫ FusionCare ⚫ WinSCP
Huawei vDesk
用户终端
TC/SC
⚫ 在TCM上使用“日志提取”功能远程获取日志。 ⚫ 使用手动方式收集用户终端日志。
TCM
第7页
故障定位常用方法
第8页
在管理界面查看告警信息。 在管理界面查看监控信息是否正常。 在管理界面检查数据配置是否正确。 观察设备指示灯状态是否正常。 查询操作日志,分析操作过程是否有误。
上报注册请求 注册响应
检查SID有效性,更新注册状态
注册成功后每分钟一次心跳
心跳响应
DNS
用户登录流程
TC
WI
HDC
License
VM
AD
输入用户名密码 查询用户虚拟机列表
到AD上鉴权
第21页
最新iNode客户端认证常见错误及处理办法
iNode客户端认证常见错误及处理办法提示信息:E63054::重复认证报文。
解决方法:出现这种错误时,应考虑可能是主-备服务器认证与记账报文发往的服务器不一致造成的,应注意观查一下接入交换机的配置中关于radius服务的配置项,是否会有不一致的情况发生。
处理的方法:1、重启接入交换机。
2、更改接入交换机的认证、记帐服务器的运行状态。
提示信息:IP地址与网络上的其他系统有冲突,连接被中断解决方法:请携带校园卡或学生证到科技楼3楼卡务中心报修。
提示信息:MAC地址绑定检查失败解决方法:请携带校园卡或学生证到科技楼3楼卡务中心解除MAC地址绑定。
提示信息:用户密码错误,加入黑名单解决方法:请携带校园卡或学生证到科技楼3楼卡务中心修改密码。
提示信息:您的网卡已被禁用或者网络电缆没有插好,这可能会影响您使用网络解决方法:a) 检查本地连接是否被禁用,如果被禁用改为启用b) 检查线路连接,网线是否插好c) 更换墙上端口,更换网线d) 检查自己的交换机,更换端口,重新启动,或直接用墙上的接口连接e) 检查网卡是否安装正确,检查驱动程序是否正常。
f)iNode客户端-〉属性-〉选择正确的网卡。
提示信息:静态IP地址绑定检查失败解决方法:a) 检查IP地址是否正确配置到本地连接当中(配置方法见问题9)。
b) 如果IP地址配置正确,卸载网络适配器驱动程序,重新启动电脑后重新配置IP地址。
卸载网络适配器方法:Xp系统:桌面我的电脑右键→属性→硬件→设备管理器→网络适配器→找到与本地连接相同的网卡(如图4)右键→卸载驱动Win7系统:桌面计算机右键→属性→(左侧)设备管理器→网络适配器→找到与本地连接相同的网卡右键→卸载驱动图4提示信息:未收到服务器回应,您的计算机可能只能访问隔离区的网络资源,请检查终端能否正常访问网络或者与管理员联系解决方法:a) 检查网关配置。
(将你的ip地址最后一组数字改成254就是你的网关)b) 如果网关配置正确,请到科技楼3楼卡务中心窗口报修。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1God Class1.1特征上帝类通常为过多的操做其他类的数据,从而破坏了类的封装性。
上帝类从其他类中获得功能,同时增加了自身的耦合性,通常会导致自己体积过大和较大的复杂度。
判断一个上帝类的标准有:1.CPFD (Capsules Providing Foreign Data) 从多个不相关类(模块)中引用数据2.WOC(Weighted Operation Count)类的所有函数的圈复杂度之和超过653.TCC (Tight Capsule Cohesion)TCC < 1/3 类需要具有低内聚的特性(类中直接相关的方法与全部方法之比小于1/3),也就是较少的private方法4.需要同时满足以上条件才可以被认定为上帝类1.2修改破坏CPFD, WOC, TCC 中的一个。
2Message Chains2.1特征过度耦合的消息链如果你看到用户向一个对象索求(request)另一个对象,然后再向后者索求另一个对象,然后再索求另一个对象……这就是Message Chains。
实际代码中你看到的可能是一长串getThis()或一长串临时变量。
采取这种方式,意味客户将与查找过程中的航行结构(structure of the navigation)紧密耦合。
一旦对象间的关系发生任何变化,客户端就不得不做出相应修改。
Infusion通常会寻找具有较多调用其他类数据访问接口的方法,而且会检查返回值是否匹配。
2.2修改采用“隐藏委托关系”修改。
先观察Message Chains最终得到的对象是用来干什么的,看看能否以Extract Method 把使用该对象的代码提炼到一个独立函数中,再运用Move Method 把这个函数推入Message Chains。
3 FeatureEnvy3.1 特征函数对某个class的兴趣高过对自己所处之host class的兴趣。
最通常的焦点便是数据,通常为某个函数为了计算某值,从另一个对象那儿调用几乎太多取值函数(getting method)。
ATFD(Access To Foreign Data)方法从外部获取了数据LDA(Locality of Data Accesses)内部变量与所有可以获取数据方法之比<1/3,也就意味着该方法过多的使用了外部数据,而非自身数据。
FDP(Access To Foreign Data)数据来源于很少几个类3.2 修改如果一个类A使用了类B的过多数据来完成某项操作或计算,那改操作就应该放在B类中。
针对ATFD,通常较难进行修改,除非该类不访问其他类。
针对LDA,可以采用增加类本身的成员变量来进行修改,提高LDA比值。
针对FDP,可以考虑将类B拆分为多个类,从而增加FDP个数。
4Blob Class4.1特征可以译为复杂类,它具有体积大,高度复杂的特征,因而难以维护。
除此之外,如此大的类(通常超过千行)大大增加了与外部类耦合的可能性,并降低了自身的内聚性。
附加Infusion判断blob class的标准:4.2修改修改时可以根据4.1给出的标准破坏其判断条件。
5 Blob Module5.1 特征类似于blob class,指模块高度复杂且体积过大。
它的检测标准非常类似于blob class,只有稍微的不同:在面向过程语言中,函数中的长参数列表是正常的。
5.2 修改一般情况下通过拆分模块或类降低规模和复杂度。
6 Cyclic Dependencies6.1 特征循环依赖,也即在依赖结构中存在有“环”。
这种设计缺陷出现在系统及子系统级别,如果两个或更多的子系统相互依赖,维护和重用几乎是不可能的。
Infusion的检测规则使用与面向对象和面向过程代码。
检测工具会绘制依赖图,并根据此图判断是否存在循环依赖。
6.2 修改略7 Data Class7.1 特征数据类是单纯的数据持有者,它通常不包含复杂的功能,但是会被其他类频繁和密切的引用。
缺乏功能意味着这个类的数据和操作是分离的,不符合面向对象的特征。
Data class缺乏封装性,由于允许其他类较为自由的存取其内部数据,导致data class较为脆弱和难以维护。
Infusion在检测时会判断data class的特征:轻量级类,包含大量的get和set方法(或public 属性)。
7.2 修改将它处的方法移到data class中,提高其封装性;或编写高复杂度函数。
8 Data Clumps8.1 特征数据泥团,是《重构》提到的代码坏气味的一种。
“喜欢成群结队地待在一块儿。
你常常可以在很多地方看到相同的三或四笔数据项:两个classes内的相同值域(field)、许多函数签名式(signature)中的相同参数。
”也就是一组数据重复出现,如一组数据从一个方法传递到另外一个方法,这些数据完全可以抽取为一个对象来进行处理。
8.2 修改将这些参数抽取为对象。
9 Data Module类似于data class,可以翻译为数据模块。
为面向过程的设计缺陷。
一个模块暴漏了太多数据,但自身却没有完成什么功能,也即太过开放。
检测规则非常容易:提供了过多数据为外部访问;复杂度过低10. Distorted Hierarchy10.1 特征扭曲的层次通常指继承层次过窄和过深。
研究表明人的记忆难以记住超过6的层次,因此此类缺陷常常导致代码难以维护。
除此之外,它还可能预示着代码存在封装性的问题,或是划分的粒度太细。
10.2 修改修改不合理的继承层次,渐少深度和增加广度(多个类继承自某父类,则该父类具有较高的广度)。
11 God Module11.1 特征类似于God Class,该module的规模和复杂度高,低内聚以及访问过多的外部数据。
11.2 修改破坏检测条件,如拆包,降低复杂度和外部依赖。
12 Intensive Coupling12.1 特征过紧的耦合一个经常被提到的紧耦合的例子是:某个方法与系统中的多个方法相关,而这些方法位于某个或很少几个类之间。
这表明该方法与其他方法提供类之间的通信太过冗长了。
这种设计缺陷通常意味着一个微妙的问题:provider类没有抽象层逻辑提供合理的服务,导致耦合方法必须要频繁通信。
在infusion的检测方面:耦合方法调用了许多外部方法;外部方法位于一个类或少数几个类。
12.2 修改将耦合方法中依赖的外部方法提取和抽象,将逻辑封装到provider类中。
13 Refused Parent Bequest13.1 特征被拒绝的遗赠继承关系是比类协作关系更为特殊和紧密的关系,它基于子类从父类继承成员的基础上(变量和方法),但如果子类拒绝使用父类中提供的方法或变量,这表明继承关系存在问题。
13.2 修改修改类的继承关系,将不使用的属性和方法拆分的另外的类。
14 SAP Breaker14.1 特征SAP Stable Abstractions Principle 稳定抽象原则,也即包的抽象程度与其稳定程度一致这种缺陷表明包,或者类破坏了SAP原则。
SAP原则有两种基本情况:如果一个子系统提供了较多的抽象,则它更应位于层次设计的底层,由其他的子系统来引用,这也表明它具有较高的稳定性,也即高抽象性高稳定性。
另外,如果一个子系统的抽象较少,就是是他更多的处于调用者的角色,依赖下层子系统,则它位于层次设计的上层,且具有较低的稳定性,也即低抽象性低稳定性。
SAP Breaker破坏了这种抽象原则。
14.2 修改修改层次设计,从抽象程度和稳定性上修改。
一般在成型系统中,抽取接口较为简单。
15 Schizophrenic Class15.1 特征精神分裂的类一个类本应承担一种抽象,完成一类责任,但该类确完成两种或以上的抽象,会影响对类的理解和修改。
Infusion通过如下规则检测该缺陷:低内聚,定义大量接口,以及被不同的client使用。
15.2 修改将不同的职责分割到其他类中去。
16 Schizophrenic Module16.1 特征精神分裂的模块检测规则类似于“精神分裂的类”。
16.2 修改将职责提取到不同的module17 Shotgun Surgery17.1 特征霰弹式修改,直观的讲,就是修改该方法会引出其他大量的修改。
而且这种修改是分布的,并不集中于某一类或某个包。
存在这种缺陷的方法常常被称为“瓶颈方法”,该方法通常具有很高的复杂度,引用大量的外部方法并被众多方法调用,极有可能引入bug。
在《重构》包含有对“霰弹式修改”的定义:Shotgun Surgery类似Divergent Change,但恰恰相反。
如果每遇到某种变化,你都必须在许多不同的classes内做出许多小修改以响应之,你所面临的坏味道就是Shotgun Surgery。
如果需要修改的代码散布四处,你不但很难找到它们,也很容易忘记某个重要的修改。
下面给出infusion的检测规则:17.2 修改“这种情况下你应该使用Move Method 和Move Field 把所有需要修改的代码放进同一个class。
如果眼下没有合适的可以安置这些代码,就创造一个。
通常你可以运用Inline Class 把一系列相关行为放进同一个class。
这可能会造成少量Divergent Change,但你可以轻易处理它。
”-《重构》18 Significant External Duplication18.1 特征显著的外部重复,也即在系统包层面上的重复。
代码重复破坏了系统的唯一性,将导致代码规模增大以及提高问题定位的难度。
抽取公共代码19 Significant Internal Duplication 19.1 特征显著的内部重复在类或模块间的代码重复,提高维护难度。
19.2 修改提取公共代码20 Significant Sibling Duplication 20.1 特征显著的家族重复即存在于继承层次上的重复,一般指继承层次中的同一层次。
提取公共代码到父类。
21 Tradition Breaker21.1 特征传统破坏者,即子类拒绝父类提供的方法和属性,也即破坏了“继承”这一传统。
在JAVA 中,可以通过在子类中重写方法来完成。
这种缺陷意味着子类的定义或者继承关系存在不合理。
检测方式有两个标准:子类重写了父类方法或使用了非公用继承。
21.2 修改重新检视和修改继承关系。
22 Unnecessary Coupling22.1 特征不必要的耦合通常指在C++中引用了不必要的头文件,从而增加的耦合性。
22.2 修改去掉不使用的头文件。
23 Unstable Dependencies23.1 特征不稳定的依赖值子系统需要依赖比其更为稳定的子系统,至少是同样稳定,违反改原则则为不稳定的依赖。