系统崩溃疑难解答
第21 章• 软件问题疑难解答(概述) 385
收集疑难解答数据
请回答以下问题,以帮助隔离系统问题。有关收集崩溃的系统的疑难解答数据的信息,请
参见第386 页中的“系统崩溃疑难解答核对表”。
表21–1确定系统崩溃数据
问题说明
是否可以重现问题? 这一点很重要,因为在调试很难的问题时,可重现的测试
案例是必不可少的。通过重现问题,服务提供商可以使用
特殊设备构造内核,以触发、诊断和更正错误。
是否使用了任何第三方驱动程序? 具有相同权限的多个驱动程序在内核所在的同一地址空间
中运行,如果这些驱动程序存在错误,则会导致系统崩
溃。
系统在崩溃之前瞬间正在执行什么操作
?
如果系统在执行异常的操作,例如运行新的负荷测试或遇
到特别高的负荷,则可能导致系统崩溃。
在系统崩溃之前,是否有任何异常的控
制台消息?
有时,系统会在实际崩溃前显示故障信号,此信息通常很
有用。
是否向/etc/system 文件中添加了任何
调优参数?
有时,调优参数(如增大共享内存段,以使系统尝试分配
比实际拥有内存更多的内存)会导致系统崩溃。
问题是在最近开始出现的吗? 如果是这样,则出现的问题与对系统的任何更改一致,例
如新的驱动程序、新软件、不同工作负荷、CPU 升级或内
存升级。
系统崩溃疑难解答核对表
可在为崩溃的系统收集系统数据时使用此核对表。
项目数据
系统崩溃转储是否可用?
确定操作系统发行版以及相应软件应用程序的发
行版级别。
确定系统硬件。
包括sun4u 系统的prtdiag 输出。包括其他系统
的资源管理器输出。
是否安装了修补程序?如果已安装,请包括
showrev -p 输出。
系统崩溃疑难解答核对表
386 系统管理指南:高级管理• 2006 年7 月
项目数据
问题是否可重现?
系统中是否有任何第三方驱动程序?
系统在崩溃前正在执行什么操作?
在系统崩溃前是否有任何异常的控制台消息?
是否向/etc/system 文件中添加了任何参数?
问题是在最近开始的吗?
系统崩溃疑难解答核对表
第21 章• 软件问题疑难解答(概述) 387
388
管理系统消息
本章介绍Solaris 操作系统中的系统消息传送功能。
查看系统消息
系统消息显示在控制台设备中。大多数系统消息的文本如下所示:
[ID msgid facility.priority]
例如:
[ID 672855 kern.notice] syncing file systems...
如果消息来自内核,则会显示内核模块名称。例如:
Oct 11 4:07:24 mars ufs: [ID 845546 kern.notice] alloc: /: file system full
当系统崩溃时,系统控制台中可能会显示如下消息:
panic: error message
少数情况下,会显示此消息而非应急消息:
Watchdog reset !
错误日志守护进程syslogd 可在消息文件中自动记录各种系统警告和错误。缺省情况下,其
中许多系统消息都会在系统控制台中显示,并存储在/var/adm 目录中。通过设置系统消息
日志可以指示这些消息的存储位置。有关更多信息,请参见第392 页中的“自定义系统消
息日志”。这些消息可以提醒您系统出现问题,例如设备将要出现故障。
/var/adm 目录中包含若干个消息文件。最新消息位于/var/adm/messages 文件(以及
messages.*)中,最旧的消息位于messages.3 文件中。经过一段时间后(通常为每隔十
22 第2 2 章
389
天),会创建一个新的messages 文件。messages.0 文件重命名为messages.1 ,messages.1
重命名为messages.2,messages.2 重命名为messages.3。将删除当前的
/var/adm/messages.3 文件。
由于/var/adm 目录存储包含消息、崩溃转储和其他数据的大型文件,因此该目录可能会占
用许多磁盘空间。为防止/var/adm 目录变得过大,并确保可以保存将来的崩溃转储,应定
期删除不需要的文件。可以使用crontab 文件自动执行此任务。有关自动执行此任务的更多
信息,请参见第251 页中的“如何删除崩溃转储文件”和第15 章。
如何查看系统消息
使用dmesg 命令显示由系统崩溃或重新引导生成的最新消息。
$ dmesg
或者,使用more 命令逐屏显示消息。
$ more /var/adm/messages
查看系统消息
以下示例显示dmesg 命令的输出。
$ dmesg
Jan 3 08:44:41starbug genunix: [ID 540533 kern.notice] SunOS Release 5.10 ...
Jan 3 08:44:41starbug genunix: [ID 913631kern.notice] Copyright 1983-2003 ...
Jan 3 08:44:41starbug genunix: [ID 678236 kern.info] Ethernet address ...
Jan 3 08:44:41starbug unix: [ID 389951kern.info] mem = 131072K (0x8000000)
Jan 3 08:44:41 starbug unix: [ID 930857 kern.info] avail mem = 121888768
Jan 3 08:44:41starbug rootnex: [ID 466748 kern.info] root nexus = Sun Ultra 5/
10 UPA/PCI (UltraSPARC-IIi 333MHz)
Jan 3 08:44:41starbug rootnex: [ID 349649 kern.info] pcipsy0 at root: UPA 0x1f0x0
Jan 3 08:44:41starbug genunix: [ID 936769 kern.info] pcipsy0 is
Jan 3 08:44:41 starbug pcipsy: [ID 370704 kern.info] PCI-device: , simba0
Jan 3 08:44:41 starbug genunix: [ID 936769 kern.info] simba0 is
◗
示例22–1
查看系统消息
390 系统管理指南:高级管理• 2006 年7 月
Jan 3 08:44:41starbug pcipsy: [ID 370704 kern.info] PCI-device: , simba1
Jan 3 08:44:41starbug genunix: [ID 936769 kern.info] simba1is
Jan 3 08:44:57 starbug simba: [ID 370704 kern.info] PCI-device: , uata0
Jan 3 08:44:57 starbug genunix: [ID 936769 kern.info] uata0 is ,
Jan 3 08:44:57 starbug uata: [ID 114370 kern.info] dad0 at pci1095,6460
.
.
.
有关更多信息,请参见dmesg(1M) 手册页。
系统日志轮转
使用根文件crontab 中的一个项内的logadm 命令,可以轮转系统日志文件。不再使用
/usr/lib/newsyslog 脚本。
系统日志轮转在/etc/logadm.conf 文件中定义。此文件包含用于syslogd 等进程的日志轮转
项。例如,/etc/logadm.conf 文件中的一个项指定,除非/var/log/syslog 文件为空,否则
该文件每周轮转一次。最新的syslog 文件成为syslog.0,下一个最新的文件成为
syslog.1,依此类推。会保留八个以前的syslog 日志文件。
/etc/logadm.conf 文件还包含记录最后一次日志轮转发生时间的时间标记。
可以使用logadm 命令来自定义系统日志,并可根据需要在/etc/logadm.conf 文件中添加其
他日志。
例如,要轮转Apache 访问和错误日志,请使用以下命令:
# logadm -w /var/apache/logs/access_log -s 100m
# logadm -w /var/apache/logs/error_log -s 10m
在此示例中,Apache access_log 文件会在大小达到100MB时进行轮转,以.0、.1 等作为
后缀,并保留旧access_log 文件的10 个副本。error_log 在大小达到10MB时进行轮转,后
缀和副本数与access_log 文件相同。
用于上述Apache 日志轮转示例的/etc/logadm.conf 项与以下示例类似:
另请参见
阅读(466) | 评论(0) | 转发(0) |