发布新日志

  • LoadRunner监控Windows和Linux常见问题

    2008-07-14 14:30:47

      在51Testing看到一位网友的总结,非常全面. 最近上礼拜Levis总是问为什么他的Linux资源情况监控不了,应该好好看看这篇文章。

    关于LR监视Windows和linux的说明

    一 windows

    1 监视连接前的准备工作

            首先保证被监视的windows系统开启以下二个服务Remote Procedure Call(RPC) 和Remote Registry Service (这里具体在那里开起服务就不说了)。

            被监视的WINDOWS机器:右击我的电脑,选择管理->共享文件夹->共享 在这里面要有C$这个共享文件夹,(要是没有自己手动加)。

            然后保证在安装LR的机器上使用运行.输入\\被监视机器IP\C$ 然后输入管理员帐号和密码,如果能看到被监视机器的C盘了,就说明你得到了那台机器的管理员权限,可以使用LR去连接了。

            说明: LR要连接WINDOWS机器进行监视貌似要有管理员帐号和密码才行。

    2 用LR监视windows的步骤

    (这里就不详细说明了,只要在窗口中右击鼠标选择Add Measurements就可以了)

    二 linux

    1 准备工作

            首先,监视Linux一定要有rstatd这个守护进程,有的Linux版本里也有可能是rpc.rstatd这里只是名字不同而已,功能是一样的。

            一般来说LINUX需要下载一个包才有这个服务,包名字是rpc.rstatd-4.0.1.tar.gz. 这是一个源码,需要编译。

    下载并安装rstatd

    tar -ivh rpc.rstatd-4.0.1.tar.gz
    ./configure —配置
    make —编译
    make install —安装
    rpc.rstatd —启动rstatd进程

    配置rstatd 目标守护进程是xinetd,它的主配置文件是/etc/xinetd.conf 里面内容是

    只有基本信息
    # Simple configuration file for xinetd
    #
    # Some defaults, and include /etc/xinetd.d/

    defaults
    {
    instances = 60
    log_type = SYSLOG authpriv
    log_on_success = HOST PID
    log_on_failure = HOST
    cps = 25 30
    }

    includedir /etc/xinetd.d

    里面内容的意思在这里就不说了!网上有具体解释,

            我们这里需要修改的是/etc/xinetd.d/下的三个conf文件 rlogin ,rsh,rexec 这三个配置文件,打这三个文件里的disable = yes都改成 disable = no ( disabled 用在默认的 {} 中 禁止服务)或是把# default: off都设置成 on 这个的意思就是在xinetd启动的时候默认都启动上面的三个服务!(由于貌似用ps ax不能看到rlogin ,rsh ,rexec这三个进程是否开启,所以使用default: on,因为rstatd和xinetd这二个服务是否启动在ps ax里是看的到的)。
            然后你在保证Linux机器上的进程里有rstatd和xinetd这二个服务就可以用LR去监视了。

    几点小的技巧:

    检查是否启动: rsh server 监听和TCP 是514。
    [root@mg04 root]# netstat -an |grep 514
    tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN
    如果能看到514在监听说明rsh服务器已经启动。

    检查是否启动: rstatd

    输入命令: rpcinfo -p

    如果能看到

    程序 版本 协议 端口

    *** **** udp 741 rstatd

    那就说明rstatd服务启动了,(当然这里也可以用ps ax代替)。

    几点说明: 1) 在实际操作中有可能会碰到一些问题,这里还有一份网上的关于LR连接时候可能出错的情况,详细请见下面;

    2) 网上也有人说在LR的资源窗口中右击鼠标出现的Add Measurements选项是暗淡的,我操作的时候没碰到,这里可能是LR没有完全安装的原因;

    3) 由于条件的限制,(没有UNIX环境)所以这次没有遇及UNIX的监控,但网上也有这方面的资料,说明的也比较清楚,在这里就不再重复了;

    4) 由于本人能力有限,只是把网上的内容归纳了一下,说的不对的地方请高人指点,我会更新内容。

    LoadRunner中服务器资源监控器疑难解答

            要监控服务器计算机上的资源,必须能够连接到该计算机。如果监控失败,并且 LoadRunner 找不到指定的服务器,请确认指定的服务器是否可用。在 Controller 或优化控制台计算机命令行中键入 ping <server_name>,执行“ping”操作。

            验证可以访问该计算机后,请查看下表中有关监控器疑难解答的其他提示。

    问题

    解决方案

    无法监控其他域中的 Windows 计算机,或者访问被拒绝

    要获得对远程计算机的管理权限,请在命令提示符下执行以下命令:

    %net use \\<计算机名>/用户:[<>\<远程计算机名>]

    提示输入密码时,输入远程计算机的密码。

    无法监控 NT/Win 2000 计算机(发出一条错误消息:未找到计算机名无法连接到主机

    要监控的 NT/Win 2000 计算机仅允许具有管理员权限的用户进行监控。要允许非管理员用户进行监控,必须授予用户对特定文件和注册表项的读取权限(Microsoft 技术说明编号 Q158438)。需要执行下列步骤:

    a. 使用浏览器或文件管理器,授予用户对下列项的读取权限:
    %windir%\system32\PERFCxxx.DAT

    %windir%\system32\PERFHxxx.DAT

    其中 xxx 是系统的基本语言 ID
    例如,英语 ID 009。这些文件可能
    已丢失或损坏。如果对此有怀疑,请从
    安装 CD 中提取这些文件。

    b. 使用 REGEDT32,授予用户对下列项的读取权限:
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Perflib
    以及该项的所有子项。

    c. 使用 REGEDT32,至少授予用户对下列项的读取权限:
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\ Control\SecurePipeServers\winreg

    无法从 NT 计算机监控某些 Win 2000 计数器。

    Win 2000 计算机上运行 Controller 或优化控制台。

    某些 Windows 默认计数器生成错误

    删除有问题的计数器,并使用添加度量对话框添加相应计数器。

    无法从被监控的计算机上获得 SQL Server 6.5 版的性能计数器。

    这是 SQL Server 6.5 版的一个错误。解决方法为:在被监控的计算机上使用 regedt32,授予用户对以下注册表项的读取权限:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer

    Microsoft 技术说明编号 Q170394

    选定度量未显示在图中。

    确保已注册显示文件和 online.exe。要在不执行完全安装的情况下注册监控器的 dll,请运行 LoadRunner\bin 中的 set_mon.bat 批处理文件。

    监控 Windows 计算机时,图中不显示任何度量。

    检查内置的 Windows 性能监控器。如果该监控器不能正常工作,则可能是通信设置有问题。

    监控 UNIX 计算机时,图中不显示任何度量。

    确保 rstatd 正在 UNIX 计算机上运行(请参阅系统资源监控)。

    无法监控下列 Web 服务器之一:MS IISMS ASP ColdFusion

    请参阅上面的问题无法监控 Windows 计算机

    无法监控 WebLogic (JMX) 服务器

    打开 <LoadRunner 根文件夹>\dat\monitors\WebLogicMon.ini 文件,并搜索:
    [WebLogicMonitor]
    JVM=javaw.exe
    javaw.exe 更改为java.exe。将打开一个包含

  • loadrunner性能计数器

    2008-07-14 14:30:16

    针对windows操作系统,C/S结构的sql server数据库及WEB平台.net产品测试时的一些计数器.
    Memory: 内存使用情况可能是系统性能中最重要的因素。如果系统“页交换”频繁,说明内存不足。“页交换”是使用称为“页面”的单位,将固定大小的代码和数据块从 RAM 移动到磁盘的过程,其目的是为了释放内存空间。尽管某些页交换使 Windows 2000 能够使用比实际更多的内存,也是可以接受的,但频繁的页交换将降低系统性能。减少页交换将显著提高系统响应速度。要监视内存不足的状况,请从以下的对象计 数器开始:
    Available Mbytes:可用物理内存数. 如果Available Mbytes的值很小(4 MB 或更小),则说明计算机上总的内存可能不足,或某程序没有释放内存。
    page/sec: 表明由于硬件页面错误而从磁盘取出的页面数,或由于页面错误而写入磁盘以释放工作集空间的页面数。一般如果pages/sec持续高于几百,那么您应该进 一步研究页交换活动。有可能需要增加内存,以减少换页的需求(你可以把这个数字乘以4k就得到由此引起的硬盘数据流量)。Pages/sec 的值很大不一定表明内存有问题,而可能是运行使用内存映射文件的程序所致。
    page read/sec:页的硬故障,page/sec的子集,为了解析对内存的引用,必须读取页文件的次数。阈值为>5. 越低越好。大数值表示磁盘读而不是缓存读。
    由于过多的页交换要使用大量的硬盘空间,因此有可能将导致将页交换内存不足与导致页交换的磁盘瓶径混淆。因此,在研究内存不足不太明显的页交换的原因时,您必须跟踪如下的磁盘使用情况计数器和内存计数器:
    Physical Disk\ % Disk Time
    Physical Disk\ Avg.Disk Queue Length
    例 如,包括 Page Reads/sec 和 % Disk Time 及 Avg.Disk Queue Length。如果页面读取操作速率很低,同时 % Disk Time 和 Avg.Disk Queue Length的值很高,则可能有磁盘瓶径。但是,如果队列长度增加的同时页面读取速率并未降低,则内存不足。
    要确定过多的页交换对磁盘活动的影 响,请将 Physical Disk\ Avg.Disk sec/Transfer 和 Memory\ Pages/sec 计数器的值增大数倍。如果这些计数器的计数结果超过了 0.1,那么页交换将花费百分之十以上的磁盘访问时间。如果长时间发生这种情况,那么您可能需要更多的内存。
    Page Faults/sec:每秒软性页面失效的数目(包括有些可以直接在内存中满足而有些需要从硬盘读取)较page/sec只表明数据不能在内存的指定工作集中立即使用。
    Cache Bytes:文件系统缓存(File System Cache),默认情况下为50%的可用物理内存。如IIS5.0 运行内存不够时,它会自动整理缓存。需要关注该计数器的趋势变化
    如 果您怀疑有内存泄露,请监视 Memory\ Available Bytes 和 Memory\ Committed Bytes,以观察内存行为,并监视您认为可能在泄露内存的进程的 Process\Private Bytes、Process\Working Set 和Process\Handle Count。如果您怀疑是内核模式进程导致了泄露,则还应该监视 Memory\Pool Nonpaged Bytes、Memory\ Pool Nonpaged Allocs 和 Process(process_name)\ Pool Nonpaged Bytes。
    Pages per second :每秒钟检索的页数。该数字应少于每秒一页。
    Process:
    %Processor Time: 被处理器消耗的处理器时间数量。如果服务器专用于sql server,可接受的最大上限是80-85%
    Page Faults/sec:将进程产生的页故障与系统产生的相比较,以判断这个进程对系统页故障产生的影响。
    Work set: 处理线程最近使用的内存页,反映了每一个进程使用的内存页的数量。如果服务器有足够的空闲内存,页就会被留在工作集中,当自由内存少于一个特定的阈值时,页就会被清除出工作集。
    Inetinfo:Private Bytes:此进程所分配的无法与其它进程共享的当前字节数量。如果系统性能随着时间而降低,则此计数器可以是内存泄漏的最佳指示器。
    Processor:监视“处理器”和“系统”对象计数器可以提供关于处理器使用的有价值的信息,帮助您决定是否存在瓶颈。
    %Processor Time:如果该值持续超过95%,表明瓶颈是CPU。可以考虑增加一个处理器或换一个更快的处理器。
    %User Time:表示耗费CPU的数据库操作,如排序,执行aggregate functions等。如果该值很高,可考虑增加索引,尽量使用简单的表联接,水平分割大表格等方法来降低该值。
    %Privileged Time:(CPU内核时间)是在特权模式下处理线程执行代码所花时间的百分比。如果该参数值和"Physical Disk"参数值一直很高,表明I/O有问题。可考虑更换更快的硬盘系统。另外设置Tempdb in RAM,减低"max async IO","max lazy writer IO"等措施都会降低该值。
    此外,跟踪计算机的服务器工作队列当前长度的 Server Work Queues\ Queue Length 计数器会显示出处理器瓶颈。队列长度持续大于 4 则表示可能出现处理器拥塞。此计数器是特定时间的值,而不是一段时间的平均值。
    % DPC Time:越低越好。在多处理器系统中,如果这个值大于50%并且Processor:% Processor Time非常高,加入一个网卡可能会提高性能,提供的网络已经不饱和。

    Thread
    ContextSwitches/sec: (实例化inetinfo 和dllhost 进程) 如果你决定要增加线程字节池的大小,你应该监视这三个计数器(包括上面的一个)。增加线程数可能会增加上下文切换次数,这样性能不会上升反而会下降。如果 十个实例的上下文切换值非常高,就应该减小线程字节池的大小。

    Physical Disk:
    %Disk Time %:指所选磁盘驱动器忙于为读或写入请求提供服务所用的时间的百分比。如果三个计数器都比较大,那么硬盘不是瓶颈。如果只有%Disk Time比较大,另外两个都比较适中,硬盘可能会是瓶颈。在记录该计数器之前,请在Windows 2000 的命令行窗口中运行diskperf -yD。若数值持续超过80%,则可能是内存泄漏。
    Avg.Disk Queue Length:指读取和写入请求(为所选磁盘在实例间隔中列队的)的平均数。该值应不超过磁盘数的1.5~2 倍。要提高性能,可增加磁盘。注意:一个Raid Disk实际有多个磁盘。
    Average Disk Read/Write Queue Length:指读取(写入)请求(列队)的平均数。
    Disk Reads(Writes)/s: 物理磁盘上每秒钟磁盘读、写的次数。两者相加,应小于磁盘设备最大容量。
    Average Disksec/Read: 指以秒计算的在此盘上读取数据的所需平均时间。
    Average Disk sec/Transfer:指以秒计算的在此盘上写入数据的所需平均时间。
    Network Interface:
    Bytes Total/sec :为发送和接收字节的速率,包括帧字符在内。判断网络连接速度是否是瓶颈,可以用该计数器的值和目前网络的带宽比较
    SQLServer性能计数器:
    Access Methods(访问方法) 用于监视访问数据库中的逻辑页的方法。
    . Full Scans/sec(全表扫描/秒) 每秒不受限的完全扫描数。可以是基本表扫描或全索引扫描。如果这个计数器显示的值比1或2高,应该分析你的查询以确定是否确实需要全表扫描,以及S Q L查询是否可以被优化。
    . Page splits/sec(页分割/秒)由于数据更新操作引起的每秒页分割的数量。
    Buffer Manager(缓冲器管理器):监视 Microsoft® SQL Server™ 如何使用:内存存储数据页、内部数据结构和过程高速缓存;计数器在 SQL Server 从磁盘读取数据库页和将数据库页写入磁盘时监视物理 I/O。 监视 SQL Server 所使用的内存和计数器有助于确定: 是否由于缺少可用物理内存存储高速缓存中经常访问的数据而导致瓶颈存在。如果是这样,SQL Server 必须从磁盘检索数据。 是否可通过添加更多内存或使更多内存可用于数据高速缓存或 SQL Server 内部结构来提高查询性能。
    SQL Server 需要从磁盘读取数据的频率。与其它操作相比,例如内存访问,物理 I/O 会耗费大量时间。尽可能减少物理 I/O 可以提高查询性能。
    .Page Reads/sec:每秒发出的物理数据库页读取数。这一统计信息显示的是在所有数据库间的物理页读取总数。由于物理 I/O 的开销大,可以通过使用更大的数据高速缓存、智能索引、更高效的查询或者改变数据库设计等方法,使开销减到最小。
    .Page Writes/sec (.写的页/秒) 每秒执行的物理数据库写的页数。
    .Buffer Cache Hit Ratio. 在“缓冲池”(Buffer Cache/Buffer Pool)中没有被读过的页占整个缓冲池中所有页的比率。可在高速缓存中找到而不需要从磁盘中读取的页的百分比。这一比率是高速缓存命中总数除以自 SQL Server 实例启动后对高速缓存的查找总数。经过很长时间后,这一比率的变化很小。由于从高速缓存中读数据比从磁盘中读数据的开销要小得多,一般希望这一数值高一 些。通常,可以通过增加 SQL Server 可用的内存数量来提高高速缓存命中率。计数器值依应用程序而定,但比率最好为90% 或更高。增加内存直到这一数值持续高于90%,表示90% 以上的数据请求可以从数据缓冲区中获得所需数据。
    . Lazy Writes/sec(惰性写/秒)惰性写进程每秒写的缓冲区的数量。值最好为0。
    Cache Manager(高速缓存管理器) 对象提供计数器,用于监视 Microsoft® SQL Server™ 如何使用内存存储对象,如存储过程、特殊和准备好的 Transact-SQL 语句以及触发器。
    . Cache Hit Ratio(高速缓存命中率,所有Cache”的命中率。在SQL Server中,Cache可以包括Log Cache,Buffer Cache以及Procedure Cache,是一个总体的比率。) 高速缓存命中次数和查找次数的比率。对于查看SQL Server高速缓存对于你的系统如何有效,这是一个非常好的计数器。如果这个值很低,持续低于80%,就需要增加更多的内存。
    Latches(闩) 用于监视称为闩锁的内部 SQL Server 资源锁。监视闩锁以明确用户活动和资源使用情况,有助于查明性能瓶颈。
    . Average Latch Wait Ti m e ( m s ) (平均闩等待时间(毫秒)) 一个SQL Server线程必须等待一个闩的平均时间,以毫秒为单位。如果这个值很高,你可能正经历严重的竞争问题。
    . Latch Waits/sec (闩等待/秒) 在闩上每秒的等待数量。如果这个值很高,表明你正经历对资源的大量竞争。
    Locks (锁) 提供有关个别资源类型上的 SQL Server 锁的信息。锁加在 SQL Server 资源上(如在一个事务中进行的行读取或修改),以防止多个事务并发使用资源。例如,如果一个排它 (X) 锁被一个事务加在某一表的某一行上,在这个锁被释放前,其它事务都不可以修改这一行。尽可能少使用锁可提高并发性,从而改善性能。可以同时监视 Locks 对象的多个实例,每个实例代表一个资源类型上的一个锁。
    . Number of Deadlocks/sec(死锁的数量/秒) 导致死锁的锁请求的数量
    . Average Wait Time(ms) (平均等待时间(毫秒)) 线程等待某种类型的锁的平均等待时间
    . Lock Requests/sec(锁请求/秒) 每秒钟某种类型的锁请求的数量。
    Memory manager:用于监视总体的服务器内存使用情况,以估计用户活动和资源使用,有助于查明性能瓶颈。监视 SQL Server 实例所使用的内存有助于确定:
    是否由于缺少可用物理内存存储高速缓存中经常访问的数据而导致瓶颈存在。如果是这样,SQL Server 必须从磁盘检索数据。
    是否可以通过添加更多内存或使更多内存可用于数据高速缓存或 SQL Server 内部结构来提高查询性能。
    Lock blocks:服务器上锁定块的数量,锁是在页、行或者表这样的资源上。不希望看到一个增长的值。
    Total server memory:sql server服务器当前正在使用的动态内存总量.
  • LoadRunner监视的性能计数器

    2008-07-14 14:29:49

    大家好,今后,我们将以专题的方式展开对LR监视的性能计数器及LR的场景设计设计的讨论,欢迎大家涌跃发言。
    今天,我先把我整理的一些计数器及其阈值要求等贴出来,这些计数器是针对我对windows操作系统,C/S结构的sql server数据库及WEB平台.net产品测试时的一些计数器;大家可以继续补充,作过unix平台上oracle数据库测试及J2EE架构及WEBLOGIC方面测试的朋友,也希望把自己使用的计数器贴出来,让大家分享。
    好了,先说这些了,希望通过这个专题,最终能让大家对自己的测试结果进行分析。

    Memory: 内存使用情况可能是系统性能中最重要的因素。如果系统“页交换”频繁,说明内存不足。“页交换”是使用称为“页面”的单位,将固定大小的代码和数据块从 RAM 移动到磁盘的过程,其目的是为了释放内存空间。尽管某些页交换使 Windows 2000 能够使用比实际更多的内存,也是可以接受的,但频繁的页交换将降低系统性能。减少页交换将显著提高系统响应速度。要监视内存不足的状况,请从以下的对象计 数器开始:
    Available Mbytes:可用物理内存数. 如果Available Mbytes的值很小(4 MB 或更小),则说明计算机上总的内存可能不足,或某程序没有释放内存。


    page/sec: 表明由于硬件页面错误而从磁盘取出的页面数,或由于页面错误而写入磁盘以释放工作集 空间的页面数。一般如果pages/sec持续高于几百,那么您应该进一步研究页交换活动。有可能需要增加内存,以减少换页的需求(你可以把这个数字乘以 4k就得到由此引起的硬盘数据流量)。Pages/sec 的值很大不一定表明内存有问题,而可能是运行使用内存映射文件的程序所致。


    page read/sec:页的硬故障,page/sec的子集,为了解析对内存的引用,必须读取页文件的次数。阈值为>5. 越低越好。大数值表示磁盘读而不是缓存读。
    由于过多的页交换要使用大量的硬盘空间,因此有可能将导致将页交换内存不足与导致页交换的磁盘瓶径混淆。因此,在研究内存不足不太明显的页交换的原因时,您必须跟踪如下的磁盘使用情况计数器和内存计数器:
    Physical Disk\ % Disk Time
    Physical Disk\ Avg.Disk Queue Length
    例 如,包括 Page Reads/sec 和 % Disk Time 及 Avg.Disk Queue Length。如果页面读取操作速率很低,同时 % Disk Time 和 Avg.Disk Queue Length的值很高,则可能有磁盘瓶径。但是,如果队列长度增加的同时页面读取速率并未降低,则内存不足。
    要确定过多的页交换对磁盘活动的 影响,请将 Physical Disk\ Avg.Disk sec/Transfer 和 Memory\ Pages/sec 计数器的值增大数倍。如果这些计数器的计数结果超过了 0.1,那么页交换将花费百分之十以上的磁盘访问时间。如果长时间发生这种情况,那么您可能需要更多的内存。


    Page Faults/sec:每秒软性页面失效的数目(包括有些可以直接在内存中满足而有些需要从硬盘读取)较page/sec只表明数据不能在内存的指定工作集中立即使用。
    Cache Bytes:文件系统缓存(File System Cache),默认情况下为50%的可用物理内存。如IIS5.0 运行内存不够时,它会自动整理缓存。需要关注该计数器的趋势变化
    如 果您怀疑有内存泄露,请监视 Memory\ Available Bytes 和 Memory\ Committed Bytes,以观察内存行为,并监视您认为可能在泄露内存的进程的 Process\Private Bytes、Process\Working Set 和Process\Handle Count。如果您怀疑是内核模式进程导致了泄露,则还应该监视 Memory\Pool Nonpaged Bytes、Memory\ Pool Nonpaged Allocs 和 Process(process_name)\ Pool Nonpaged Bytes。


    Pages per second :每秒钟检索的页数。该数字应少于每秒一页。

    Process:
    %Processor Time: 被处理器消耗的处理器时间数量。如果服务器专用于sql server,可接受的最大上限是80-85%
    Page Faults/sec:将进程产生的页故障与系统产生的相比较,以判断这个进程对系统页故障产生的影响。
    Work set: 处理线程最近使用的内存页,反映了每一个进程使用的内存页的数量。如果服务器有足够的空闲内存,页就会被留在工作集中,当自由内存少于一个特定的阈值时,页就会被清除出工作集。
    Inetinfo:Private Bytes:此进程所分配的无法与其它进程共享的当前字节数量。如果系统性能随着时间而降低,则此计数器可以是内存泄漏的最佳指示器。

    Processor:监视“处理器”和“系统”对象计数器可以提供关于处理器使用的有价值的信息,帮助您决定是否存在瓶颈。
    %Processor Time:如果该值持续超过95%,表明瓶颈是CPU。可以考虑增加一个处理器或换一个更快的处理器。
    %User Time:表示耗费CPU的数据库操作,如排序,执行aggregate functions等。如果该值很高,可考虑增加索引,尽量使用简单的表联接,水平分割大表格等方法来降低该值。
    %Privileged Time:(CPU内核时间)是在特权模式下处理线程执行代码所花时间的百分比。如果该参数值和"Physical Disk"参数值一直很高,表明I/O有问题。可考虑更换更快的硬盘系统。另外设置Tempdb in RAM,减低"max async IO","max lazy writer IO"等措施都会降低该值。
    此外,跟踪计算机的服务器工作队列当前长度的 Server Work Queues\ Queue Length 计数器会显示出处理器瓶颈。队列长度持续大于 4 则表示可能出现处理器拥塞。此计数器是特定时间的值,而不是一段时间的平均值。
    % DPC Time:越低越好。在多处理器系统中,如果这个值大于50%并且Processor:% Processor Time非常高,加入一个网卡可能会提高性能,提供的网络已经不饱和。

    Thread
    ContextSwitches/sec: (实例化inetinfo 和dllhost 进程) 如果你决定要增加线程字节池的大小,你应该监视这三个计数器(包括上面的一个)。增加线程数可能会增加上下文切换次数,这样性能不会上升反而会下降。如果 十个实例的上下文切换值非常高,就应该减小线程字节池的大小。

    Physical Disk:
    %Disk Time %:指所选磁盘驱动器忙于为读或写入请求提供服务所用的时间的百分比。如果三个计数器都比较大,那么硬盘不是瓶颈。如果只有%Disk Time比较大,另外两个都比较适中,硬盘可能会是瓶颈。在记录该计数器之前,请在Windows 2000 的命令行窗口中运行diskperf -yD。若数值持续超过80%,则可能是内存泄漏。
    Avg.Disk Queue Length:指读取和写入请求(为所选磁盘在实例间隔中列队的)的平均数。该值应不超过磁盘数的1.5~2 倍。要提高性能,可增加磁盘。注意:一个Raid Disk实际有多个磁盘。
    Average Disk Read/Write Queue Length:指读取(写入)请求(列队)的平均数。
    Disk Reads(Writes)/s: 物理磁盘上每秒钟磁盘读、写的次数。两者相加,应小于磁盘设备最大容量。
    Average Disksec/Read: 指以秒计算的在此盘上读取数据的所需平均时间。
    Average Disk sec/Transfer:指以秒计算的在此盘上写入数据的所需平均时间。
    Network Interface:
    Bytes Total/sec :为发送和接收字节的速率,包括帧字符在内。判断网络连接速度是否是瓶颈,可以用该计数器的值和目前网络的带宽比较

    SQLServer性能计数器:
    Access Methods(访问方法) 用于监视访问数据库中的逻辑页的方法。
    . Full Scans/sec(全表扫描/秒) 每秒不受限的完全扫描数。可以是基本表扫描或全索引扫描。如果这个计数器显示的值比1或2高,应该分析你的查询以确定是否确实需要全表扫描,以及S Q L查询是否可以被优化。
    . Page splits/sec(页分割/秒)由于数据更新操作引起的每秒页分割的数量。
    Buffer Manager(缓冲器管理器):监视 Microsoft&reg; SQL Server? 如何使用: 内存存储数据页、内部数据结构和过程高速缓存;计数器在 SQL Server 从磁盘读取数据库页和将数据库页写入磁盘时监视物理 I/O。 监视 SQL Server 所使用的内存和计数器有助于确定: 是否由于缺少可用物理内存存储高速缓存中经常访问的数据而导致瓶颈存在。如果是这样,SQL Server 必须从磁盘检索数据。 是否可通过添加更多内存或使更多内存可用于数据高速缓存或 SQL Server 内部结构来提高查询性能。
    SQL Server 需要从磁盘读取数据的频率。与其它操作相比,例如内存访问,物理 I/O 会耗费大量时间。尽可能减少物理 I/O 可以提高查询性能。
    .Page Reads/sec:每秒发出的物理数据库页读取数。这一统计信息显示的是在所有数据库间的物理页读取总数。由于物理 I/O 的开销大,可以通过使用更大的数据高速缓存、智能索引、更高效的查询或者改变数据库设计等方法,使开销减到最小。
    .Page Writes/sec (.写的页/秒) 每秒执行的物理数据库写的页数。
    .Buffer Cache Hit Ratio. 在“缓冲池”(Buffer Cache/Buffer Pool)中没有被读过的页占整个缓冲池中所有页的比率。可在高速缓存中找到而不需要从磁盘中读取的页的百分比。这一比率是高速缓存命中总数除以自 SQL Server 实例启动后对高速缓存的查找总数。经过很长时间后,这一比率的变化很小。由于从高速缓存中读数据比从磁盘中读数据的开销要小得多,一般希望这一数值高一 些。通常,可以通过增加 SQL Server 可用的内存数量来提高高速缓存命中率。计数器值依应用程序而定,但比率最好为90% 或更高。增加内存直到这一数值持续高于90%,表示90% 以上的数据请求可以从数据缓冲区中获得所需数据。
    . Lazy Writes/sec(惰性写/秒)惰性写进程每秒写的缓冲区的数量。值最好为0。
    Cache Manager(高速缓存管理器) 对象提供计数器,用于监视 Microsoft&reg; SQL Server? 如何使用内存存储对象,如存储过程、特殊和准备好的 Transact-SQL 语句以及触发器。
    . Cache Hit Ratio(高速缓存命中率,所有Cache”的命中率。在SQL Server中,Cache可以包括Log Cache,Buffer Cache以及Procedure Cache,是一个总体的比率。) 高速缓存命中次数和查找次数的比率。对于查看SQL Server高速缓存对于你的系统如何有效,这是一个非常好的计数器。如果这个值很低,持续低于80%,就需要增加更多的内存。
    Latches(闩) 用于监视称为闩锁的内部 SQL Server 资源锁。监视闩锁以明确用户活动和资源使用情况,有助于查明性能瓶颈。
    . Average Latch Wait Ti m e ( m s ) (平均闩等待时间(毫秒)) 一个SQL Server线程必须等待一个闩的平均时间,以毫秒为单位。如果这个值很高,你可能正经历严重的竞争问题。
    . Latch Waits/sec (闩等待/秒) 在闩上每秒的等待数量。如果这个值很高,表明你正经历对资源的大量竞争。
    Locks (锁) 提供有关个别资源类型上的 SQL Server 锁的信息。锁加在 SQL Server 资源上(如在一个事务中进行的行读取或修改),以防止多个事务并发使用资源。例如,如果一个排它 (X) 锁被一个事务加在某一表的某一行上,在这个锁被释放前,其它事务都不可以修改这一行。尽可能少使用锁可提高并发性,从而改善性能。可以同时监视 Locks 对象的多个实例,每个实例代表一个资源类型上的一个锁。
    . Number of Deadlocks/sec(死锁的数量/秒) 导致死锁的锁请求的数量
    . Average Wait Time(ms) (平均等待时间(毫秒)) 线程等待某种类型的锁的平均等待时间
    . Lock Requests/sec(锁请求/秒) 每秒钟某种类型的锁请求的数量。
    Memory manager:用于监视总体的服务器内存使用情况,以估计用户活动和资源使用,有助于查明性能瓶颈。监视 SQL Server 实例所使用的内存有助于确定:
    是否由于缺少可用物理内存存储高速缓存中经常访问的数据而导致瓶颈存在。如果是这样,SQL Server 必须从磁盘检索数据。
    是否可以通过添加更多内存或使更多内存可用于数据高速缓存或 SQL Server 内部结构来提高查询性能。
    Lock blocks:服务器上锁定块的数量,锁是在页、行或者表这样的资源上。不希望看到一个增长的值。
    Total server memory:sql server服务器当前正在使用的动态内存总量.

    监视IIS需要的一些计数器
    Internet Information Services Global:
    File Cache Hits %、File CacheFlushes、File Cache Hits
    File Cache Hits %是全部缓存请求中缓存命中次数所占的比例,反映了IIS 的文件缓存设置的工作情况。对于一个大部分是静态网页组成的网站,该值应该保持在80%左右。而File Cache Hits是文件缓存命中的具体值,File CacheFlushes 是自服务器启动之后文件缓存刷新次数,如果刷新太慢,会浪费内存;如果刷新太快,缓存中的对象会太频繁的丢弃生成,起不到缓存的作用。通过比较File Cache Hits 和File Cache Flushes 可得出缓存命中率对缓存清空率的比率。通过观察它两个的值,可以得到一个适当的刷新值(参考IIS 的设置ObjectTTL 、MemCacheSize 、MaxCacheFileSize)
    Web Service:
    Bytes Total/sec:显示Web服务器发送和接受的总字节数。低数值表明该IIS正在以较低的速度进行数据传输。
    Connection Refused:数值越低越好。高数值表明网络适配器或处理器存在瓶颈。
    Not Found Errors:显示由于被请求文件无法找到而无法由服务器满足的请求数(HTTP状态代码404)

  • vi/vim 使用方法讲解

    2008-07-14 14:28:46

    文档操作
    vi/vim 基本使用方法
    本文介绍了vi (vim)的基本使用方法,但对于普通用户来说基本上够了!

    vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指 令。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本 的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。

    1、vi的基本概念
      基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

    1) 命令行模式command mode)

      控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。

    2) 插入模式(Insert mode)

      只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。

    3) 底行模式(last line mode)

      将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。

    不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。

    2、vi的基本操作
    a) 进入vi

      在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面:

       $ vi myfile


      不过有一点要特别注意,就是您进入vi之后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。初次使用vi的人都会想先用上下左右键移动光标,结果电脑一直哔哔叫,把自己气个半死,所以进入vi后,先不要乱动,转换到 「插入模式(Insert mode)」再说吧!

    b) 切换至插入模式(Insert mode)编辑文件

      在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。

    c) Insert 的切换

      您目前处于「插入模式(Insert mode)」,您就只能一直输入文字,如果您发现输错了字!想用光标键往回移动,将该字删除,就要先按一下「ESC」键转到「命令行模式(command mode)」再删除文字。

    d) 退出vi及保存文件

      在「命令行模式(command mode)」下,按一下「:」冒号键进入「Last line mode」,例如:

    : w filename (输入 「w filename」将文章以指定的文件名filename保存)

    : wq (输入「wq」,存盘并退出vi)

    : q! (输入q!, 不存盘强制退出vi)


    3、命令行模式(command mode)功能键
    1). 插入模式

      按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;

      按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;

      按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。

    2). 从插入模式切换为命令行模式

      按「ESC」键。

    3). 移动光标

      vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。

      按「ctrl」+「b」:屏幕往“后”移动一页。

      按「ctrl」+「f」:屏幕往“前”移动一页。

      按「ctrl」+「u」:屏幕往“后”移动半页。

      按「ctrl」+「d」:屏幕往“前”移动半页。

      按数字「0」:移到文章的开头。

      按「G」:移动到文章的最后。

      按「$」:移动到光标所在行的“行尾”。

      按「^」:移动到光标所在行的“行首”

      按「w」:光标跳到下个字的开头

      按「e」:光标跳到下个字的字尾

      按「b」:光标回到上个字的开头

      按「#l」:光标移到该行的第#个位置,如:5l,56l。

    4). 删除文字

      「x」:每按一次,删除光标所在位置的“后面”一个字符。

      「#x」:例如,「6x」表示删除光标所在位置的“后面”6个字符。

      「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符。

      「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符。

      「dd」:删除光标所在行。

      「#dd」:从光标所在行开始删除#行

    5). 复制

      「yw」:将光标所在之处到字尾的字符复制到缓冲区中。

      「#yw」:复制#个字到缓冲区

      「yy」:复制光标所在行到缓冲区。

      「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。

      「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。

    6). 替换

      「r」:替换光标所在处的字符。

      「R」:替换光标所到之处的字符,直到按下「ESC」键为止。

    7). 回复上一次操作

      「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。

    8). 更改

      「cw」:更改光标所在处的字到字尾处

      「c#w」:例如,「c3w」表示更改3个字

    9). 跳至指定的行

      「ctrl」+「g」列出光标所在行的行号。

      「#G」:例如,「15G」,表示移动光标至文章的第15行行首。

    4、Last line mode下命令简介
      在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「command mode」下后,再按「:」冒号即可进入「last line mode」。

    A) 列出行号

     「set nu」:输入「set nu」后,会在文件中的每一行前面列出行号。

    B) 跳到文件中的某一行

     「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。

    C) 查找字符

     「/关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。

     「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。

    D) 保存文件

     「w」:在冒号输入字母「w」就可以将文件保存起来。

    E) 离开vi

     「q」:按「q」就是退出,如果无法离开vi,可以在「q」后跟一个「!」强制离开vi。

     「qw」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。

    5、vi命令列表
    1、下表列出命令模式下的一些键的功能:

    h
    左移光标一个字符

    l
    右移光标一个字符

    k
    光标上移一行

    j
    光标下移一行

    ^
    光标移动至行首

    0
    数字“0”,光标移至文章的开头

    G
    光标移至文章的最后

    $
    光标移动至行尾

    Ctrl+f
    向前翻屏

    Ctrl+b
    向后翻屏

    Ctrl+d
    向前翻半屏

    Ctrl+u
    向后翻半屏

    i
    在光标位置前插入字符

    a
    在光标所在位置的后一个字符开始增加

    o
    插入新的一行,从行首开始输入

    ESC
    从输入状态退至命令状态

    x
    删除光标后面的字符

    #x
    删除光标后的#个字符

    X
    (大写X),删除光标前面的字符

    #X
    删除光标前面的#个字符

    dd
    删除光标所在的行

    #dd
    删除从光标所在行数的#行

    yw
    复制光标所在位置的一个字

    #yw
    复制光标所在位置的#个字

    yy
    复制光标所在位置的一行

    #yy
    复制从光标所在行数的#行

    p
    粘贴

    u
    取消操作

    cw
    更改光标所在位置的一个字

    #cw
    更改光标所在位置的#个字


    2、下表列出行命令模式下的一些指令
    w filename
    储存正在编辑的文件为filename

    wq filename
    储存正在编辑的文件为filename,并退出vi

    q!
    放弃所有修改,退出vi

    set nu
    显示行号

    /或?
    查找,在/后输入要查找的内容

    n
    与/或?一起使用,如果查找的内容不是想要找的关键字,按n或向后(与/联用)或向前(与?联用)继续查找,直到找到为止。

  • SAR 命令详解

    2008-07-14 10:41:21



    sar 命令行的常用格式:
    sar [options] [-A] [-o file] t [n]

    在命令行中,n 和t 两个参数组合起来定义采样间隔和次数,t为采样间隔,是必须有
    的参数,n为采样次数,是可选的,默认值是1,-o file表示将命令结果以二进制格式
    存放在文件中,file 在此处不是关键字,是文件名。options 为命令行选项,sar命令
    的选项很多,下面只列出常用选项:
          -A:所有报告的总和。
             -u:CPU利用率
             -v:进程、I节点、文件和锁表状态。
             -d:硬盘使用报告。
             -r:没有使用的内存页面和硬盘块。
             -g:串口I/O的情况。
    -b:缓冲区使用情况。
    -a:文件读写情况。
    -c:系统调用情况。
    -R:进程的活动情况。
    -y:终端设备活动情况。
    -w:系统交换活动。

    下面将举例说明。

    例一:使用命令行 sar -u t n

    例如,每60秒采样一次,连续采样5次,观察CPU 的使用情况,并将采样结果以二进制
    形式存入当前目录下的文件zhou中,需键入如下命令:

    # sar -u -o zhou 60 5

    屏幕显示:

      SCO_SV   scosysv 3.2v5.0.5 i80386   10/01/2001
         14:43:50   %usr   %sys  %wio    %idle(-u)
         14:44:50   0     1    4      94
         14:45:50   0     2    4      93
         14:46:50   0     2    2      96
         14:47:50   0     2    5      93
         14:48:50   0     2    2      96
         Average    0     2    4      94
    在显示内容包括:
      %usr:CPU处在用户模式下的时间百分比。
       %sys:CPU处在系统模式下的时间百分比。
       %wio:CPU等待输入输出完成时间的百分比。
       %idle:CPU空闲时间百分比。
    在所有的显示中,我们应主要注意%wio和%idle,%wio的值过高,表示硬盘存在I/O瓶颈,
    %idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,
    此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表
    明系统中最需要解决的资源是CPU。
    如果要查看二进制文件zhou中的内容,则需键入如下sar命令:
        # sar -u -f zhou
    可见,sar命令即可以实时采样,又可以对以往的采样结果进行查询。

    例二:使用命行sar -v t n

    例如,每30秒采样一次,连续采样5次,观察核心表的状态,需键入如下命令:

    # sar -v 30 5

    屏幕显示:
           SCO_SV scosysv 3.2v5.0.5 i80386 10/01/2001
           10:33:23 proc-sz ov inod-sz ov file-sz ov lock-sz   (-v)
    10:33:53 305/ 321  0 1337/2764  0 1561/1706 0 40/ 128
    10:34:23 308/ 321  0 1340/2764  0 1587/1706 0 37/ 128
    10:34:53 305/ 321  0 1332/2764  0 1565/1706 0 36/ 128
    10:35:23 308/ 321  0 1338/2764  0 1592/1706 0 37/ 128
    10:35:53 308/ 321  0 1335/2764  0 1591/1706 0 37/ 128

    显示内容包括:

    proc-sz:目前核心中正在使用或分配的进程表的表项数,由核心参数MAX-PROC控制。

      inod-sz:目前核心中正在使用或分配的i节点表的表项数,由核心参数
    MAX-INODE控制。

      file-sz: 目前核心中正在使用或分配的文件表的表项数,由核心参数MAX-FILE控
    制。

      ov:溢出出现的次数。

      Lock-sz:目前核心中正在使用或分配的记录加锁的表项数,由核心参数MAX-FLCKRE
    控制。

    显示格式为

    实际使用表项/可以使用的表项数

    显示内容表示,核心使用完全正常,三个表没有出现溢出现象,核心参数不需调整,如
    果出现溢出时,要调整相应的核心参数,将对应的表项数加大。

    例三:使用命行sar -d t n
    例如,每30秒采样一次,连续采样5次,报告设备使用情况,需键入如下命令:
    # sar -d 30 5
    屏幕显示:
          SCO_SV scosysv 3.2v5.0.5 i80386 10/01/2001
    11:06:43 device %busy   avque   r+w/s  blks/s  avwait avserv (-d)
    11:07:13 wd-0   1.47   2.75   4.67   14.73   5.50 3.14
    11:07:43 wd-0   0.43   18.77   3.07   8.66   25.11 1.41
    11:08:13 wd-0   0.77   2.78   2.77   7.26   4.94 2.77
    11:08:43 wd-0   1.10   11.18   4.10   11.26   27.32 2.68
    11:09:13 wd-0   1.97   21.78   5.86   34.06   69.66 3.35
    Average wd-0   1.15   12.11   4.09   15.19   31.12 2.80

    显示内容包括:
    device: sar命令正在监视的块设备的名字。
       %busy: 设备忙时,传送请求所占时间的百分比。
       avque: 队列站满时,未完成请求数量的平均值。
       r+w/s: 每秒传送到设备或从设备传出的数据量。
       blks/s: 每秒传送的块数,每块512字节。
       avwait: 队列占满时传送请求等待队列空闲的平均时间。
       avserv: 完成传送请求所需平均时间(毫秒)。

    在显示的内容中,wd-0是硬盘的名字,%busy的值比较小,说明用于处理传送请求的有
    效时间太少,文件系统效率不高,一般来讲,%busy值高些,avque值低些,文件系统
    的效率比较高,如果%busy和avque值相对比较高,说明硬盘传输速度太慢,需调整。
    例四:使用命行sar -b t n
    例如,每30秒采样一次,连续采样5次,报告缓冲区的使用情况,需键入如下命令:
    # sar -b 30 5

    屏幕显示:
      SCO_SV scosysv 3.2v5.0.5 i80386 10/01/2001
    14:54:59 bread/s lread/s %rcache bwrit/s lwrit/s %wcache pread/s pwrit/s (-b)
    14:55:29 0  147  100  5  21  78   0   0
    14:55:59 0  186  100  5  25  79   0   0
    14:56:29 4  232   98  8  58  86   0   0
    14:56:59 0  125  100  5  23  76   0   0
    14:57:29 0   89  100  4  12  66   0   0
    Average  1  156   99  5  28  80   0   0

    显示内容包括:
    bread/s: 每秒从硬盘读入系统缓冲区buffer的物理块数。
    lread/s: 平均每秒从系统buffer读出的逻辑块数。
    %rcache: 在buffer cache中进行逻辑读的百分比。
    bwrit/s: 平均每秒从系统buffer向磁盘所写的物理块数。
    lwrit/s: 平均每秒写到系统buffer逻辑块数。
    %wcache: 在buffer cache中进行逻辑读的百分比。
    pread/s: 平均每秒请求物理读的次数。
    pwrit/s: 平均每秒请求物理写的次数。

    在显示的内容中,最重要的是%cache和%wcache两列,它们的值体现着buffer的使用效
    率,%rcache的值小于90或者%wcache的值低于65,应适当增加系统buffer的数量,buffer
    数量由核心参数NBUF控制,使%rcache达到90左右,%wcache达到80左右。但buffer参数
    值的多少影响I/O效率,增加buffer,应在较大内存的情况下,否则系统效率反而得不到
    提高。
    例五:使用命行sar -g t n
    例如,每30秒采样一次,连续采样5次,报告串口I/O的操作情况,需键入如下命令:
    # sar -g 30 5

    屏幕显示:
    SCO_SV scosysv 3.2v5.0.5 i80386  11/22/2001
    17:07:03  ovsiohw/s  ovsiodma/s  ovclist/s (-g)
    17:07:33   0.00   0.00   0.00
    17:08:03   0.00   0.00   0.00
    17:08:33   0.00   0.00   0.00
    17:09:03   0.00   0.00   0.00
    17:09:33   0.00   0.00   0.00
    Average    0.00   0.00   0.00

    显示内容包括:
    ovsiohw/s:每秒在串口I/O硬件出现的溢出。
    ovsiodma/s:每秒在串口I/O的直接输入输出通道高速缓存出现的溢出。
    ovclist/s :每秒字符队列出现的溢出。
    在显示的内容中,每一列的值都是零,表明在采样时间内,系统中没有发生串口I/O溢
    出现象。

    sar命令的用法很多,有时判断一个问题,需要几个sar命令结合起来使用,比如,怀疑
    CPU存在瓶颈,可用sar -u 和sar -q来看,怀疑I/O存在瓶颈,可用sar -b、sar -u和
    sar-d来看

    Sar
    -A 所有的报告总和
    -a 文件读,写报告
    -B 报告附加的buffer cache使用情况
    -b buffer cache使用情况
    -c 系统调用使用报告
    -d 硬盘使用报告
    -g 有关串口I/O情况
    -h 关于buffer使用统计数字
    -m IPC消息和信号灯活动
    -n 命名cache
    -p 调页活动
    -q 运行队列和交换队列的平均长度
    -R 报告进程的活动
    -r 没有使用的内存页面和硬盘块
    -u CPU利用率
    -v 进程,i节点,文件和锁表状态
    -w 系统交换活动
    -y TTY设备活动

    -a 报告文件读,写报告
    sar –a 5 5
    SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/07/2002
    11:45:40 iget/s namei/s dirbk/s (-a)
    11:45:45 6 2 2
    11:45:50 91 20 28
    11:45:55 159 20 18
    11:46:00 157 21 19
    11:46:05 177 30 35
    Average 118 18 20

    iget/s 每秒由i节点项定位的文件数量
    namei/s 每秒文件系统路径查询的数量
    dirbk/s 每秒所读目录块的数量
    *这些值越大,表明核心花在存取用户文件上的时间越多,它反映着一些程序和应用文件系统产生的负荷。一般地,如果iget/s与namei/s的比值大于 5,并且namei/s的值大于30,则说明文件系统是低效的。这时需要检查文件系统的自由空间,看看是否自由空间过少。

    -b 报告缓冲区(buffer cache)的使用情况
    sar -b 2 3
    SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/07/2002
    13:51:28 bread/s lread/s %rcache bwrit/s lwrit/s %wcache pread/s pwrit/s (-b)
    13:51:30 382 1380 72 131 273 52 0 0
    13:51:32 378 516 27 6 22 72 0 0
    13:51:34 172 323 47 39 57 32 0 0
    Average 310 739 58 58 117 50 0 0

    bread/s 平均每秒从硬盘(或其它块设备)读入系统buffer的物理块数
    lread/s 平均每秒从系统buffer读出的逻辑块数
    %rcache 在buffer cache中进行逻辑读的百分比(即100% - bread/lreads)
    bwrit/s 平均每秒从系统buffer向磁盘(或其它块设备)所写的物理块数
    lwrit/s 平均每秒写到系统buffer的逻辑块数
    %wcache 在buffer cache中进行逻辑写的百分比(即100% - bwrit/lwrit).
    pread/sgu 平均每秒请求进行物理读的次数
    pwrit/s 平均每秒请求进行物理写的次数

    *所显示的内容反映了目前与系统buffer有关的读,写活。在所报告的数字中,最重要的是%rcache和%wcache(统称为cache命中率)两列,它们具体体现着系统buffer的效率。衡量cache效率的标准是它的命中率值的大小。
    *如果%rcache的值小于90或者%wcache的值低于65,可能就需要增加系统buffer的数量。如果在系统的应用中,系统的I/O活动十分频 繁,并且在内存容量配置比较大时,可以增加buffer cache,使%rcache达到95左右,%wcache达到80左右。
    *系统buffer cache中,buffer的数量由核心参数NBUF控制。它是一个要调的参数。系统中buffer数量的多少是影响系统I/O效率的瓶颈。要增加系统 buffer数量,则要求应该有较大的内存配置。否则一味增加buffer数量,势必减少用户进程在内存中的运行空间,这同样会导致系统效率下降。

    -c 报告系统调用使用情况
    sar -c 2 3
    SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/07/2002
    17:02:42 scall/s sread/s swrit/s fork/s exec/s rchar/s wchar/s (-c)
    17:02:44 2262 169 141 0.00 0.00 131250 22159
    17:02:46 1416 61 38 0.00 0.00 437279 6464
    17:02:48 1825 43 25 0.00 0.00 109397 42331
    Average 1834 91 68 0.00 0.00 225975 23651

    scall/s 每秒使用系统调用的总数。一般地,当4~6个用户在系统上工作时,每秒大约30个左右。
    sread/s 每秒进行读操作的系统调用数量。
    swrit/s 每秒进行写操作的系统调用数量。
    fork/s 每秒fork系统调用次数。当4~6个用户在系统上工作时,每秒大约0.5秒左右。
    exec/s 每秒exec系统调用次数。
    rchar/s 每秒由读操作的系统调用传送的字符(以字节为单位)。
    wchar/s 每秒由写操作的系统调用传送的字符(以字节为单位)。
    *如果scall/s持续地大于300,则表明正在系统中运行的可能是效率很低的应用程序。在比较
    典型的情况下,进行读操作的系统调用加上进行写操作的系统调用之和,约是scall的一半左右。

    -d 报告硬盘使用情况
    sar -d 2 3
    SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/07/2002
    17:27:49 device %busy avque r+w/s blks/s avwait avserv (-d)
    17:27:51 ida-0 6.93 1.00 13.86 259.41 0.00 5.00
    ida-1 0.99 1.00 17.33 290.10 0.00 0.57
    17:27:53 ida-0 75.50 1.00 54.00 157.00 0.00 13.98
    ida-1 9.50 1.00 12.00 75.00 0.00 7.92
    17:27:55 ida-0 7.46 1.00 46.77 213.93 0.00 1.60
    ida-1 17.41 1.00 57.71 494.53 0.00 3.02
    Average ida-0 29.85 1.00 38.14 210.28 0.00 7.83
    ida-1 9.29 1.00 29.02 286.90 0.00 3.20

    device 这是sar命令正在监视的块设备的名字。
    %busy 设备忙时,运行传送请求所占用的时间。这个值以百分比表示。
    avque 在指定的时间周期内,没有完成的请求数量的平均值。仅在队列被占满时取这个值。
    r+w/s 每秒传送到设备或者从设备传送出的数据量。
    blks/s 每秒传送的块数。每块512个字节。
    avwait 传送请求等待队列空闲的平均时间(以毫秒为单位)。仅在队列被占满时取这个值。
    avserv 完成传送请求所需平均时间(以毫秒为单位)
    *ida-0和ida-1是硬盘的设备名字。在显示的内容中,如果%busy的值比较小,说明用于处理
    传送请求的有效时间太少,文件系统的效率不高。要使文件系统的效率得到优化,应使%busy的数值相对高一些,而avque的值应该低一些。

    -g 报告有关串口I/O情况
    sar -g 3 3
    SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/13/2002
    11:10:09 ovsiohw/s ovsiodma/s ovclist/s (-g)
    11:10:12 0.00 0.00 0.00
    11:10:15 0.00 0.00 0.00
    11:10:18 0.00 0.00 0.00
    Average 0.00 0.00 0.00
    ovsiohw/s 每秒在串囗I/O硬件出现的溢出。
    ovsiodma/s 每秒在串囗I/O的直接输入,输出信道高速缓存出现的溢出。
    ovclist/s 每秒字符队列出现的溢出。

    -m 报告进程间的通信活动(IPC消息和信号灯活动)情况
    sar -m 4 3
    SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/13/2002
    13:24:28 msg/s sema/s (-m)
    13:24:32 2.24 9.95
    13:24:36 2.24 21.70
    13:24:40 2.00 36.66
    Average 2.16 22.76

    msg/s 每秒消息操作的次数(包括发送消息的接收信息)。
    sema/s 每秒信号灯操作次数。
    *信号灯和消息作为进程间通信的工具,如果在系统中运行的应用过程中没有使用它们,那么由sar命令报告的msg 和sema的值都将等于0.00。如果使用了这些工具,并且其中或者msg/s大于100,或者sema/s大于100,则表明这样的应用程序效率比较 低。原因是在这样的应用程序中,大量的时间花费在进程之间的沟通上,而对保证进程本身有效的运行时间必然产生不良的影响。

    -n 报告命名缓冲区活动情况
    sar -n 4 3
    SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/13/2002
    13:37:31 c_hits cmisses (hit %) (-n)
    13:37:35 1246 71 (94%)
    13:37:39 1853 81 (95%)
    13:37:43 969 56 (94%)
    Average 1356 69 (95%)

    c_hits cache命中的数量。
    cmisses cache未命中的数量。
    (hit %) 命中数量/(命中数理+未命中数量)。
    *不难理解,(hit %)值越大越好,如果它低于90%,则应该调整相应的核心参数。

    -p 报告分页活动
    sar -p 5 3
    SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/13/2002
    13:45:26 vflt/s pflt/s pgfil/s rclm/s (-p)
    13:45:31 36.25 50.20 0.00 0.00
    13:45:36 32.14 58.48 0.00 0.00
    13:45:41 79.80 58.40 0.00 0.00
    Average 49.37 55.69 0.00 0.00

    vflt/s 每秒进行页面故障地址转换的数量(由于有效的页面当前不在内存中)。
    pflt/s 每秒来自由于保护错误出现的页面故障数量(由于对页面的非法存,取引起的页面故障)。
    pgfil/s 每秒通过”页—入”满足vflt/s的数量。
    rclm/s 每秒由系统恢复的有效页面的数量。有效页面被增加到自由页面队列上。
    *如果vflt/s的值高于100,可能预示着对于页面系统来说,应用程序的效率不高,也可能分页参数需要调整,或者内存配置不太合适。

    -q 报告进程队列(运行队列和交换队列的平均长度)情况
    sar -q 2 3
    SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/13/2002
    14:25:50 runq-sz %runocc swpq-sz %swpocc (-q)
    14:25:52 4.0 50
    14:25:54 9.0 100
    14:25:56 9.0 100
    Average 7.3 100
    runq-sz 准备运行的进程运行队列。
    %runocc 运行队列被占用的时间(百分比)
    swpq-sz 要被换出的进程交换队列。
    %swpocc 交换队列被占用的时间(百分比)。
    *如果%runocc大于90,并且runq-sz的值大于2,则表明CPU的负载较重。其直接后果,可能使系统的响应速度降低。如果%swpocc大于 20,表明交换活动频繁,将严重导致系统效率下降。解决的办法是加大内存或减少缓存区数量,从而减少交换及页—入,页—出活动。

    -r 报告内存及交换区使用情况(没有使用的内存页面和硬盘块)
    sar -r 2 3
    SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/14/2002
    10:14:19 freemem freeswp availrmem availsmem (-r)
    10:14:22 279729 6673824 93160 1106876
    10:14:24 279663 6673824 93160 1106876
    10:14:26 279661 6673824 93160 1106873
    Average 279684 6673824 93160 1106875

    freemem 用户进程可以使用的内存页面数,4KB为一个页面。
    freeswp 用于进程交换可以使用的硬盘盘块,512B为一个盘块。

    -u CPU利用率
    sar -u 2 3
    SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/14/2002
    10:27:23 %usr %sys %wio %idle (-u)
    10:27:25 2 3 8 88
    10:27:27 3 3 5 89
    10:27:29 0 0 0 100
    Average 2 2 4 92
    %usr cpu处在用户模式下时间(百分比)
    %sys cpu处在系统模式下时间(百分比)
    %wio cpu等待输入,输出完成(时间百分比)
    %idle cpu空闲时间(百分比)
    *在显示的内容中,%usr和 %sys这两个值一般情况下对系统无特别影响,%wio的值不能太高,如果%wio的值过高,则CPU花在等待输入,输出上的时间太多,这意味着硬盘存在 I/O瓶颈。如果%idle的值比较高,但系统响应并不快,那么这有可能是CPU花时间等待分配内存引起的。%idle的值可以较深入帮助人们了解系统的 性能,在这种情况上,%idle的值处于40~100之间,一旦它持续低于30,则表明进程竟争的主要资源不是内存而是CPU。
    *在有大量用户运行的系统中,为了减少CPU的压力,应该使用智能多串卡,而不是非智能多串卡。智能多串卡可以承担CPU的某些负担。
    *此外,如果系统中有大型的作业运行,应该把它们合理调度,错开高峰,当系统相对空闲时再运行。

    -v 报告系统表的内容(进程,i节点,文件和锁表状态)
    sar -v 2 3
    SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/14/2002
    10:56:46 proc-sz ov inod-sz ov file-sz ov lock-sz (-v)
    10:56:48 449/ 500 0 994/4147 0 1313/2048 0 5/ 128
    10:56:50 450/ 500 0 994/4147 0 1314/2048 0 5/ 128
    10:56:52 450/ 500 0 994/4147 0 1314/2048 0 5/ 128
    proc-sz 目前在核心中正在使用或分配的进程表的表项数
    inod-sz 目前在核心中正在使用或分配的i节点表的表项数
    file-sz 目前在核心中正在使用或分配的文件表的表项数
    ov 溢出出现的次数
    lock-sz 目前在核心中正在使用或分配的记录加锁的表项数
    *除ov外,均涉及到unix的核心参数,它们分别受核心参数NPROC,NIMODE,NFILE和FLOCKREC的控制。
    *显示格式为:
    实际使用表项/整个表可以使用的表项数
    比如,proc-sz一列所显示的四个数字中,分母的100是系统中整个进程表的长度(可建立100个表项),分子上的24,26和25分别是采样的那一段时间所使用的进程表项。inod-sz,file-sz和lock-sz三列数字的意义也相同。
    三列ov的值分别对应进程表,i节点表和文件表,表明目前这三个表都没有出现溢出现象,当出现溢出时,需要调整相应的核心参数,将对应表加大。

    -w 系统交换活动
    sar -w 2 3
    SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/14/2002
    11:22:05 swpin/s bswin/s swpot/s bswots pswch/s (-w)
    11:22:07 0.00 0.0 0.00 0.0 330
    11:22:09 0.00 0.0 0.00 0.0 892
    11:22:11 0.00 0.0 0.00 0.0 1053
    Average 0.00 0.0 0.00 0.0 757

    swpin/s 每秒从硬盘交换区传送进入内存的次数。
    bswin/s 每秒为换入而传送的块数。
    swpot/s 每秒从内存传送到硬盘交换区的次数。
    bswots 每秒为换出而传送的块数。
    pswch/s 每秒进程交换的数量。
    *swpin/s,bswin/s,swpot/s和bswots描述的是与硬盘交换区相关的交换活动。交换关系到系统的效率。交换区在硬盘上对硬盘的 读,写操作比内存读,写慢得多,因此,为了提高系统效率就应该设法减少交换。通常的作法就是加大内存,使交换区中进行的交换活动为零,或接近为零。如果 swpot/s的值大于1,预示可能需要增加内存或减少缓冲区(减少缓冲区能够释放一部分自由内存空间)。

    -y 报告终端的I/O活动(TTY设备活动)情况
    sar -y 2 3
    SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/14/2002
    11:38:03 rawch/s canch/s outch/s rcvin/s xmtin/s mdmin/s (-y)
    11:38:05 5 0 951 0 1 0
    11:38:07 10 0 996 0 0 0
    11:38:09 4 0 2264 0 0 0
    Average 6 0 1404 0 1 0

    rawch/s 每秒输入的字符数(原始队列)
    canch/s 每秒由正则队列(canonical queue)处理的输入字符数。进行正则处理过程中,可以识别出一些有特殊意义的字符。比如,(中断字符),(退出符),(退格键)等。因此,canch/s中的计数不包括这些有特殊意义的字符。
    outch/s 每秒输出的字符数。
    rcvin/s 每秒接收的硬件中断次数。
    xmtin/s 每秒发出的硬件中断次数。
    mdmin/s 每秒modem中断次数。
    *应该特别说明,sar命令可以对任意终端活动进行统计,所谓任意终端,是指任意tty设备。它们可以是串行终端,主控台,伪终端等等。
    *在这几个量中,modem中断次数mdmin/s应该接近0。其它没有特殊要求,但如果每发送一个字符,中断的数量就动态地增加,这表明终端线出了差错,可能是接触不好。
  • sar 命令

    2008-07-14 10:36:39

    sar 命令

    用途

    收集、报告或保存系统活动信息。

    语法

    /usr/sbin/sar [ { -A | [ -a ] [ -b ] [ -c ] [ -d ][ -k ] [ -m ] [ -q ] [ -r] [ -u ] [ -V ] [ -v ] [ -w] [ -y ] } ] [ -P ProcessorIdentifier, ... | ALL ] [ -ehh [ :mm [ :ss ] ] ] [ -XFile ] [ -fFile ] [ -iSeconds ] [ -oFile ] [ -shh [ :mm [ :ss ] ] ] [ Interval [ Number ] ]

    描述

    sar 命令将操作系统中选定的累计活动计数器的内容写到标准输出。基于 NumberInterval 参数的值,记帐系统以指定的时间间隔(以秒为单位)和指定间隔次数写入信息。Number 参数的缺省采样时间间隔为 1 秒。收集的数据也可以保存在由 -o File 标志所指定的文件中。

    sar 命令抽取并写入以前保存在文件里的标准输出记录。此文件既可以是由 -f 标志指定的文件,或者也可以是缺省情况下标准系统活动每日数据文件,即 /var/adm/sa/sadd 文件,其中 dd 参数表示当前日期。

    没有 -P 标志的 sar 命令报告整个系统(所有处理器)的统计信息,对于以百分比表示的数值计算其平均值,否则计算其总数。如果指定 -P 标志,则 sar 命令报告与指定处理器相关的活动。如果给定 -P ALL,则 sar 命令报告每个单独的处理器的统计信息,跟在整个系统的统计信息后面。

    可以使用标志选择关于特定系统活动的信息。没有指定任何标志,则仅选择系统部件活动。指定 -A 标志,则选择所有活动。

    sar 命令的缺省版本(CPU 使用率报告)可能是用户开始系统活动调查首先要运行的工具之一,因为它监视主要的系统资源。如果 CPU 使用率接近 100%(用户 + 系统),采样的工作负荷为 CPU 受限。如果 I/0 等待花费相当大的时间百分比,这意味着 CPU 执行受阻,等待磁盘 I/O。该 I/O 可能是必要的文件存取,也可能与由于内存不足而进行页面调度有关。

    注:
    系统用于等待远程文件存取的时间没有计入 I/O 等待时间。如果一项任务的 CPU 使用率和 I/O 等待时间相对较低,且响应时间不能令人满意,则可考虑调查有多少时间在等待远程 I/O 。由于没有一个高级命令提供对远程 I/O 等待的统计,所以跟踪数据可能对这种调查有用。

    计算 CPU 磁盘 I/O 等待时间的方法

    AIX 4.3.3 及以后的版本包含用于计算等待磁盘 I/O 所花费 CPU 时间(wio 时间)百分比的方法的改进。在 AIX 4.3.2 及早期操作系统版本中采用的方法在某些情况下会在 SMP 上显示出夸大的 wio 时间。wio 时间是由 sar%wio)命令、vmstatwa)命令和 iostat% iowait)命令报告的。

    AIX 4.3.2 及早期版本中使用的方法如下:每个处理器上的每次时钟中断(每个处理器 100 次/秒)时,都须确定要将最后 10 ms 时间花费在四个类别(usr/sys/wio/idle)中的哪个上。如果时钟中断时 CPU 正处于 usr 模式下,则 usr 类别获取该时钟信号加入其中。如果时钟中断时 CPU 处于 kernel 模式下,则 sys 类别获取该信号。如果 CPU 不忙,则检查是否有任何磁盘 I/O 正在进行。如果有正在进行的磁盘 I/O,则增加 wio 类别。如果没有正在进行的磁盘 I/O 且 CPU 不忙,则 idle 类别取得该信号。wio 时间的夸大是由于所有空闲 CPU 都被视为 wio,而不管等待 I/O 的线程数。例如,只有一个线程正在执行 I/O 的系统可能报告大于 90% 的 wio 时间,而不管该系统拥有的 CPU 数量。

    操作系统 AIX 4.3.3 及以后版本中使用的方法如下:在操作系统 AIX 4.3.3 中所作的更改是仅当某空闲 CPU 上有未完成的 I/O 开始时才将其标记为 wio。当只有几个线程正在执行 I/O,或者系统为空闲时,此方法所报告的 wio 时间要低得多。例如,系统中有四个 CPU 且一个线程正在执行 I/O 时,最多只报告 25% 的 wio 时间。系统中有十二个 CPU 且一个线程正在执行 I/O 时,最多报告 8% 的 wio 时间。NFS 客户机通过 VMM 进行读/写,现在将 biod 在 VMM 等待 I/O 完成所花费的时间报告为 I/O 等待时间。

    如果期望多个采样和多个报告,可为 sar 命令指定一个输出文件,这样就方便多了。将 sar 命令的标准输出数据定向到 /dev/null,并将 sar 命令作为后台进程运行。 以上操作的语法是:

    sar -A -o data.file interval count > /dev/null &

    以二进制格式获取所有数据并将其保存在文件(data.file)中。然后,使用带有 -f 选项的 sar 命令可以有选择地显示数据。

    sar 命令调用一个称为 sadc 的进程来存取系统数据。构建两个 shell 脚本(/usr/lib/sa/sa1/usr/lib/sa/sa2),它们由 cron 命令运行并提供每日统计信息和报告。样本节包括在 /var/spool/cron/crontabs/adm crontab 文件中(但被注释掉),用来指定 cron 守护进程应在何时运行 shell 脚本。以这种方式收集的数据对于描述一段时间内系统的使用特征以及确定使用高峰期是很有用的。

    您可以在系统启动时通过取消 /etc/rc 脚本中相应行的注释将一条哑元记录插入标准系统活动每日数据文件中。对于 CPU 时间小于前一个记录的任何记录,sar 命令都将报告时间变化为负值。如果使用在 /etc/rc 中注释掉的哑元记录插入行重新引导系统,将出现这种情况。

    注:
    sar 命令只报告本地活动。

    可以使用基于 Web 的系统管理器(wsm)中的系统应用程序来运行此命令。

    也可以使用“系统管理界面工具”(SMIT)smit sar 的快捷路径来运行此命令。

    标志

    -A 没有使用 -P 标志时,使用 -A 标志相当于指定 -abckmqruvwy。当与 -P 标志一起使用时,-A 相当于指定 -acmuw
    -a 报告使用文件存取系统例程指定每秒调用各种系统文件存取例程的次数。当与 -P 标志一起使用时,只为每个指定处理器提供此信息;否则,只在系统范围内提供此信息。将显示以下数值:
    dirblk/s
    目录搜索例程为特定文件定位目录项所读取的 512 字节块的数量。
    iget/s
    调用支持多文件系统类型的几个 i-node 查询例程中的任何一个。iget 例程返回一个指向文件或设备的 i-node 结构的指针。
    lookuppn/s
    调用目录搜索例程,根据给定的路径名该例程可以查找 v-node 的地址。
    -b 报告缓冲区活动中每秒用于传输、存取以及高速缓存(内核块高速缓存)的命中率。存取第 3 版本中的大多数文件会忽略内核块缓冲,因此不生成这些统计信息。然而,如果程序打开块设备或裸字符设备进行 I/O,则使用传统的存取机制使生成的统计信息变得有意义。将显示以下数值:
    bread/s, bwrit/s
    报告 I/O 操作的块的数目。这些 I/O 通常由内核执行来管理块高速缓存区,正如在 lread/s 值的描述中所论述的那样。
    lread/s, lwrit/s
    报告逻辑 I/O 请求的数量。当执行对块设备的逻辑读或写时,可能请求小于整块大小的逻辑传输大小。系统对所有块的物理设备单元进行存取,并将这些块缓冲在为此目的而留出 的内核缓冲区(块 I/O 高速缓存区)中。这个高速缓存区由内核管理,因此对块设备的多个逻辑读写可以存取以前缓冲在高速缓存中的数据,而且不需要对该设备进行真正的 I/O。应用程序对块的读写请求作为逻辑读写而统计地报告。由管理高速缓存区的内核所执行的对块设备的块 I/O 作为块读写而报告。
    pread/s, pwrit/s
    报告对裸设备的 I/O 操作的数量。对裸字符设备的 I/O 请求不像对块设备的 I/O 请求那样缓冲。直接对设备执行 I/0。
    %rcache, %wcache
    报告高速缓存的效率(高速缓存命中百分比)。此百分比由下式计算得出:[(100)x(lreads - breads)/ (lreads)]。
    -c 报告系统调用。当与 -P 标志一起使用时,只为每个指定处理器提供此信息;否则,只在系统范围内提供此信息。将显示以下数值:
    exec/s, fork/s
    报告 forkexec 系统调用的总数。
    sread/s, swrit/s
    报告读/写系统调用的总数。
    rchar/s, wchar/s
    报告读/写系统调用传送的字符总数。
    scall/s
    报告系统调用的总数。
    注:根据 sar 命令运行的时间间隔,它本身可以生成相当多的读和写。在无工作负荷的情况下运行 sar 统计,以了解 sar 命令在总统计信息中的份额。
    -d 报告每个块设备(除磁带驱动器外)的活动。所报告的活动数据是:
    %busy, avque
    报告设备忙于执行传输请求所用的那一部分时间以及该段时间内未完成的请求的平均值。
    read/s, write/s, blks/s
    报告从/到一个设备的读/写传送的数量(所传送的字节数以 512 字节为单位)。
    avwait, avserv
    不执行,总是设置为 0.0。
    -e hh[:mm[:ss]] 设置报告的结束时间。缺省结束时间是 18:00。
    -X File File文件中抽取记录,该文件由 sar/sadc 命令的 AIX 4.3 或 AIX 4.2 版本生成。
    -f File File(由 -o File 标志创建)文件中抽取记录。File 参数的缺省值是当前每日数据文件,即 /var/adm/sa/sadd 文件。
    -i Seconds 以尽可能接近 Seconds 参数所指定的秒数选择数据记录。否则,sar 命令将报告在该数据文件中找到的所有秒数。
    -k 报告内核进程活动。将显示以下数值:
    kexit/s
    报告每秒内核进程终止数。
    kproc-ov/s
    报告由于实施进程阈值限制而不能创建内核进程的次数。
    ksched/s
    报告每秒分配执行任务的内核进程数。
    -m 报告每秒消息(发送和接收)以及信号量(创建、使用或破坏)活动。与 -P 标志一起使用时,为每个指定处理器提供此信息;否则,只在系统范围内提供此信息。将显示以下数值:
    msg/s
    报告 IPC 消息原语的数量。
    sema/s
    报告 IPC 信号量原语的数量。
    -o File 将读取的内容以二进制格式保存在文件里。每个读取为一条单独的记录,而且每个记录都含有一个标识该读取时间的标记。
    -P ProcessorIdentifier, ... | ALL 报告指定处理器的每个处理器的统计信息。指定 ALL 关键字报告每个处理器的统计信息以及所有处理器的全部统计信息。在指定要报告的统计信息的标志中,只有 -a-c-m-u-w 标志对 -P 标志有意义。
    -q 报告队列统计信息。将显示以下数值:
    runq-sz
    报告在运行队列中的平均内核线程数。
    %runocc
    报告运行队列占用的时间百分比。
    swpq-sz
    报告等待页面调入的内核线程数的平均值。
    %swpocc
    报告调动队列占用的时间百分比。
    注:任何列为空值表示相关的队列为空。
    -r 报告页面调度统计信息。将显示以下数值:
    cycle/s
    报告每秒页面替换循环的数量。
    fault/s
    报告每秒缺页故障的数量。它没有对生成 I/O 的缺页故障进行计数,因为一些缺页故障可以在没有 I/O 的情况下解决。
    slots
    报告在调页空间中空闲页的数量。
    odio/s
    报告每秒非页面调度磁盘 I/O 的数量。
    -s hh[:mm[:ss]] 设置数据开始时间,使 sar 命令以(遵循)指定时间抽取有时间标记的记录。缺省开始时间是 08:00。
    -u 报告每个处理器或整个系统的统计信息。当与 -P 标志一起使用时,为每个指定的处理器提供此信息;否则,只在系统范围内提供此信息。因为 -u 标志信息以百分比表示,所以系统范围信息只是每个处理器统计信息的平均值。并且,I/O 等待状态是以整个系统而不是每个处理器来定义的。将显示以下数值:
    %idle
    报告 CPU 为空闲(且没有未完成的 I/O 请求)所占的时间百分比。
    %sys
    报告 CPU 在系统(或内核)级别上执行所花费的时间的百分比。
    %usr
    报告 CPU 在用户(或应用程序)级别上执行所花费的时间的百分比。
    %wio
    报告 CPU 空闲(但系统有未完成的磁盘/NFS I/O 请求)所占的时间的百分比。请参阅以上的详细描述。
    注:如果没有请求其它特定的内容选项,则sar 命令报告系统部件的活动。
    -V 读取在以前操作系统版本中创建的 sar 文件。此标志只能与 -f 标志一起使用。
    -v 报告进程、内核线程、i-node 和文件表的状态。将显示以下数值:
    file-sz, inod-sz, proc-sz , thrd-sz
    报告每个表中正在使用的条目数。
    -w 报告系统切换的活动。当与 -P 标志一起使用时,为每个指定的处理器提供此信息;否则,只在系统范围内提供此信息。将显示以下数值:
    pswch/s
    报告每秒上下文转接的数量。
    -y 报告每秒 tty 设备的活动。
    canch/s
    报告 tty 规范输入队列字符。对于 AIX V4 及以后的版本,本字段总是 0(零)。
    mdmin/s
    报告 tty 调制解调器中断。
    outch/s
    报告 tty 输出队列字符。
    rawch/s
    报告 tty 输入队列字符。
    revin/s
    报告 tty 接收中断。
    xmtin/s
    报告 tty 发送中断。

    安全性

    访问控制:这些命令应只将执行(x)访问权授予 adm 组的成员。

    示例

    1. 要报告系统部件活动,请输入:
      sar
    2. 要在随后的 20 秒内每隔 2 秒报告当前的 tty 活动,请输入:
      sar-y  -r 2 20
    3. 要观察系统部件 10 分钟,并对数据进行排序,请输入:
      sar  -o temp 60 10
    4. 要报告最前面的两个处理器的 cpu 活动,请输入:
      sar  -u  -P 0,1
      这样将产生与以下类似的输出:
      cpu  %usr  %sys  %wio  %idle
      0 45 45 5 5
      1 27 65 3 5
    5. 要报告所有处理器和系统范围内的消息、信号量及 CPU 活动,请输入:
      sar  -mu  -P ALL
      而在一个有四个处理器的系统上,将产生与以下类似的输出(最后一行表示对所有处理器的系统范围内的统计):
      cpu  msgs/s  sema/s  %usr  %sys  %wio  %idle
      0 7 2 45 45 5 5
      1 5 0 27 65 3 5
      2 3 0 55 40 1 4
      3 4 1 48 41 4 7
      - 19 3 44 48 3 5
    6. 要读取在以前操作系统版本上生成的名为 File 的系统活动文件,请输入:
      sar  -V  -f File

    文件

    /usr/sbin/sar 包含 sar 命令。
    /bin/sar 表示与 sar 命令的符号链接。
    /var/adm/sa/sadd 表示每日数据文件,其中 dd 参数是表示该月的第几日的数字。
  • 外企面试智力题

    2008-06-17 10:23:41

    ◆1. 有一个长方形蛋糕,切掉了长方形的一块(大小和位置随意),你怎样才能直直的一刀下去,将剩下的蛋糕切成大小相等的两块?

    答案:将完整的蛋糕的中心与被切掉的那块蛋糕的中心连成一条线。这个方法也适用于立方体!请注意,切掉的那块蛋糕的大小和位置是随意的,不要一心想着自己切生日蛋糕的方式,要跳出这个圈子。

    ◆2. 有三筐水果,一筐装的全是苹果,第二筐装的全是橘子,第三筐是橘子与苹果混在一起。筐上的标签都是骗人的,(比如,如果标签写的是橘子,那么可以肯定筐里不会只有橘子,可能还有苹果)你的任务是拿出其中一筐,从里面只拿一只水果,然后正确写出三筐水果的标签。

    提示:从标着“混合”标签的筐里拿一只水果,就可以知道另外两筐装的是什么水果了。

    ◆3. 你有八个球。其中一个有破损,因此比其他球轻了一些。你有一架天平用来比较这些球的重量。如果只称两次,如何找出有破损的那个球?

    ◆4. 为什么下水道的井盖是圆的?

    提示:方形的对角线比边长!

    其他答案:1圆形的井盖可以由一个人搬动,因为它可以在地上滚。2圆形的井盖不必为了架在井口上而旋转它的位置。

    ◆5. 美国有多少辆车?

    ◆6. 你让一些人为你工作了七天,你要用一根金条作为报酬。金条被分成七小块,每天给出一块。如果你只能将金条切割两次,你怎样分给这些工人?

    ◆7. 一列时速15英里的火车从洛杉矶出发,驶向纽约。另外一列时速20英里的火车从纽约出发,驶向洛杉矶。如果一只鸟以每小时25英里的速度飞行,在同一时间从洛杉矶出发,在两列火车之间往返飞行,到火车相遇时为止,鸟飞了多远?

    提示:想想火车的相对速度。

    ◆8. 你有两个罐子,分别装着50个红色的玻璃球和50个蓝色的玻璃球。随意拿起一个罐子,然后从里面拿出一个玻璃球。怎样最大程度地增加让自己拿到红色球的机会?利用这种方法,拿到红色球的几率有多大?

    ◆9. 假设你站在镜子前,抬起左手,抬起右手,看看镜中的自己。当你抬起左手时,镜中的自己抬起的似乎是右手。可是当你仰头时,镜中的自己也在仰头,而不是低头。为什么镜子中的影像似乎颠倒了左右,却没有颠倒上下?

    ◆10. 你有5瓶药,每个药丸重10克,只有一瓶受到污染的药丸重量发生了变化,每个药丸重9克。给你一个天平,你怎样一次就能测出哪一瓶是受到污染的药呢?

    答案:

    1 给5个瓶子标上1、2、3、4、5。

    2 从1号瓶中取1个药丸,2号瓶中取2个药丸,3号瓶中取3个药丸,4号瓶中取4个药丸,5号瓶中取5个药丸。

    3 把它们全部放在天平上称一下重量。

    4 现在用1×10+2×10+3×10+4×10+5×10的结果减去测出的重量。

    5 结果就是装着被污染的药丸的瓶子号码。

    ◆11. 如果你有一个容量为5夸脱的水桶和一个容量为3夸脱的水桶,怎样准确地量出4夸脱的水?
    1.装满5夸脱水,并把部分水倒入3跨脱水桶,剩下2夸脱。
    2.把3夸脱水倒掉
    3.将5夸脱桶中的2夸脱水倒入3夸脱桶中。
    4.将5夸脱桶再次装满
    5.将5夸脱桶中的水倒入已有2夸脱水的3夸脱桶中,这样5夸脱桶中剩下的水刚好是4夸脱

    ◆12. 在开汽车的锁时,应该往哪个方向旋转钥匙?

    ◆13. 如果你可以移动50个州中的任何一个,你会挑哪个,为什么?

    ◆14. 有4条狗(4只蚂蚁或4个人)分别在一个广场的4个角落里。突然,它们同时以同样的速度追赶在自己顺时针方向的一个人,而且会紧追这个目标不放。它们需要多少时间才能相遇,相遇地点在哪里?

    提示:它们将在广场中央相遇,所跑的距离与它们跑的路线无关。

    ◆15. 从空中放下两列火车,每列火车都带着降落伞,降落到一条没有尽头的笔直的铁道上。两列火车之间的距离不清楚。两列车都面向同一个方向。在落地后,降落伞掉 在地上,与火车分离。两列火车都有一个微芯片,可以控制它们的运动。两个芯片是相同的。两列火车都不知道自己的位置。你需要在芯片中写入编码,让这两列火 车相遇。每行编码都有一定的执行命令的时间。

    你能使用以下指令(而且只能用这些指令):

    MF—让火车朝前开

    MB—让火车朝后开

    IF(P)—如果火车旁边有降落伞,这个条件就得到了满足。

    GOTO

    答案:

    A:MF

    IF(P)

    GOTO B

    GOTO A

    B:MF

    GOTO B

    解释:第一行只是让它们离开各自的降落伞。必须让它们离开自己的降落伞,这样后面的火车才能发现前面火车的降落伞,这样就满足了一个条件,它们就可以跳 出起初遵守的编码。它们起初都在A这部分循环,直到后面的火车发现前面火车的降落伞,这时就转入B:并陷入B的循环。前面的火车还是没有找到降落伞,所以 就不停地在A里面循环。由于每行编码都有一定的执行命令时间,完成A循环就比完成B费时,因此后面的火车(在B循环中)最终将赶上前面的火车。

    2.有7克、2克砝码各一个,天平一只,如何只用这些物品三次将140克的盐分成50、90克各一份?
    (1) 把2克重的砝 放在天平左端,分盐于天平两端直到平衡,此时,左端有盐69克,右端有盐71克。(2) 取下天平左端的2克砝码换上7克重的砝码, 端重(69+7)76克,右端仍重71克,从左端取出5克盐后,天平两端平衡,这时左端 余64克盐。 在取下天平两端物品。
    (3) 用刚才称出的5克盐当作"砝码",与2克、7克砝码合成14克砝码。从64克盐 取出14克,恰好剩下50克盐。则其余盐的重量就是90克

    ————————————————————————————————————————————————————————————————————————————————————
    1.击鼠标
      击鼠标比赛现在开始!参赛者有拉尔夫、威利和保罗。
      拉尔夫10秒钟能击10下鼠标;威利20秒钟能击20下鼠标;保罗5秒钟能击5下鼠标。以上各人所用的时间是这样计算的;从第一击开始,到最后一击结束。
      他们是否打平手?如果不是,谁最先击完40下鼠标?
      2.感觉
      用第一感觉判断8+8=91这个等式正确吗?说明理由。
      3.谎话
      如果下列每个人说的话都是假话,那么是谁打碎了花瓶?
      夏克:吉姆打碎了花瓶。
      汤姆:夏克会告诉你谁打碎了花瓶。
      埃普尔:汤姆,夏克和我不太可能打碎花瓶。
      克力斯:我没打碎花瓶。
      艾力克:夏克打碎了花瓶,所以汤姆和埃普尔不太可能打碎花瓶。
      吉姆:我打碎了花瓶,汤姆是无辜的。
      4.大有作为
      鲁道夫、菲利普、罗伯特三位青年,一个当了歌手,一个考上大学,一个加入美军陆战队,个个未来都大有作为。现已知:
      A. 罗伯特的年龄比战士的大;
      B. 大学生的年龄比菲利普小;
      C. 鲁道夫的年龄和大学生的年龄不一样。
      请问:三个人中谁是歌手?谁是大学生?谁是士兵?
      5.麻省理工大学的学生
      美国麻省理大学的学生来自不同国家。
      大卫、比利、特德三名学生,一个是法国人,一个是日本人,一个是美国人。现已知:
      1、 大卫不喜欢面条,特德不喜欢汉堡包;
      2、 喜欢面条的不是法国人;
      3、 喜欢汉堡包的是日本人;
      4、 比利不是美国人。
    请推测出这三名留学生分别来自哪些国家?
      6.宴会桌旁
      在某宾馆的宴会厅里,有4位朋友正围桌而坐,侃侃而谈。他们用了中、英、法、日4种语言。现已知:
      A.甲、乙、丙各会两种语言,丁只会一种语言;
      B.有一种语言4人中有3人都会;
      C.甲会日语,丁不会日语,乙不会英语
      D. 甲与丙、丙与丁不能直接交谈,乙与丙可以直接交谈;
      E. 没有人既会日语,又会法语。
      请问:甲乙丙丁各会什么语言?
      7.借机发财
      从前有A、B两个相邻的国家,它们的关系很好,不但互相之间贸易交往频繁,货币可以通用,汇率也相同。也就是说A国的100元等于B国的100元。可 是两国关系因为一次事件而破裂了,虽然贸易往来仍然继续,但两国国王却互相宣布对方货币的100元只能兑换本国货币的90元。有一个聪明人,他手里只有A 国的100元钞票,却借机捞了一大把,发了一笔横财。请你想一想,这个聪明人是怎样从中发财的?
      8.不合理的安排
      S先生正在家里休息时,接到了一个陌生人打来的预约电话。对方很想在下下个星期的周五去他家里拜访他。但是S先生并不想见这个陌生人,于是他连忙说: “下下个礼拜五我非常忙。上午要开会,下午1点钟要去参加一个学生的婚礼,接着4点钟要去参加一个朋友的孩子的葬礼,随后是我的叔叔的七十寿辰宴会。所以 那天我实在是没有时间来接待您的来访了。”
      请仔细看题,S先生的话里有一处是不可信的,是哪个地方?
      9.快马加鞭
      墨西哥农村现在仍然可以看到人们用马和驴运载货物。一位商人把四匹马从甲村拉到乙村,而从甲村到乙村,A马要花一小时,B马要花两小时,C马要花四小时,D马要花五小时。
      这位商人一次只能拉两匹马,回来时他还要骑一匹马,其中以走得慢的那匹马作为从甲村拉到乙村所需的时间。听说有人花了12小时就把四匹马全部从甲村拉到乙村,请问:他是如何办到的?
    ————————————————————————————————————————————————————————————————————————————
    如果下列每个人说的话都是假话,那么是谁打碎了花瓶?
      夏克:吉姆打碎了花瓶。
      汤姆:夏克会告诉你谁打碎了花瓶。
      埃普尔:汤姆,夏克和我不太可能打碎花瓶。
      克力斯:我没打碎花瓶。
      艾力克:夏克打碎了花瓶,所以汤姆和埃普尔不太可能打碎花瓶。
      吉姆:我打碎了花瓶,汤姆是无辜的。
    ——————————————————————————————————————————————————————————————————————————
    1.排序s-m-t-w-t-f-x-l ?
    答:
    2.如果四千,四百,四表示成4404,那么六一千,六一百,六一表示成什么?
    答:
    3. Create后面加一个词,Conservative 前面加一个单词,组成两个新词,这个词是什么?
    答:
    4.牧场有一些马,现有一些草料,如果卖掉75匹马饲料够20天用,买进100匹马饲料
    够用15天,问原来有多少匹马?
    答:
    5.6个筐子,装着两种水果,一种水果的价格是另外一种的double,桶容量为8,13,15,17,
    19,31,有一个美国人,各用了14美元买两种水果,剩下一个筐。问剩下哪个?
    答:
    6.篮球场,还剩15秒,差对手5分,没可能追得上,现在有一个暂停,你会怎么指导球员去做?

    ————————————————————————————————————————————————————————————————————————————————

    1、  你有四个装药丸的罐子,每个药丸都有一定的重量,

         被污染的药丸是没被污染的重量+1.只称量一次,

          如何判断哪个罐子的药被污染了?

     

    2、对一批编号为1~100,全部开关朝上(开)的灯进行以下*作:

       凡是1的倍数反方向拨一次开关;

          2的倍数反方向又拨一次开关;

          3的倍数反方向又拨一次开关……问:

       最后为关熄状态的灯的编号?

     

    3、想象你在镜子前,请问,为什么镜子中的影像可以颠倒左右,却不能颠倒上下?

     

    4、一群人开舞会,每人头上都戴着一顶帽子。帽子只有黑白两种,黑的至少有一顶。每个人都能看到其它人帽子的颜色,却看不到自己的。主持人先让大家看看别 人头上戴的是什幺帽子,然后关灯,如果有人认为自己戴的是黑帽子,就打自己一个耳光。第一次关灯,没有声音。于是再开灯,大家再看一遍,关灯时仍然鸦雀无 声。一直到第三次关灯,才有劈劈啪啪打耳光的声音响起。问有多少人戴着黑帽子?

     

    5、两个圆环,半径分别是1和2,小圆在大圆内部绕大圆圆周一周,

       问小圆自身转了几周?如果在大圆的外部,小圆自身转几周呢?

     

    6、 1元钱一瓶汽水,喝完后两个空瓶换一瓶汽水,问:你有20元钱,

         最多可以喝到几瓶汽水?

    ————————————————————————————————————————————————————————————————————————————


    一把6发左轮手枪,没有装弹

    现在往里面放两发子弹,装的时候两发子弹相邻

    用枪对着你的脑袋,计划开两枪,如果你没死就赢了

    扣一下扳机,是空的

    现在给你两个选择

    是继续开第二枪

    还是先把滚轮转几圈,然后再开枪

    ———————————————————————————————————————————————————————————————————————————————————

    称苹果问题

    简介:不是脑筋急转弯,大家想想看。

    详细介绍:

    10个箱子,每个箱子10个苹果,其中一个箱子的苹果是9两/个,其他的都是1斤/个。 要求利用一个秤,只秤一次,找出那个装9两/个的箱子。

    囚犯活命问题

    简介:一道真正难倒亿人的智力题,这是微软的面试题。

    详细介绍:

    5个囚犯,分别按1-5号在装有100颗绿豆的麻袋抓绿豆,规定每人至少抓一颗,而抓得最多和最少的人将被处死,而且,他们之间不能交流,但在抓的时候,可以摸出剩下的豆子数。问他们中谁的存活几率最大?提示:

          1,他们都是很聪明的人
          2,他们的原则是先求保命,再去多杀人
          3,100颗不必都分完
          4,若有重复的情况,则也算最大或最小,一并处死

    乒乓球问题

    简介:该题由中华谣网站改造,有一定难度。

    详细介绍:

    假设排列着100个乒乓球,由两个人轮流拿球装入口袋,能拿到第100个乒乓球的人为胜利者。条件是:每次拿球者至少要拿1个,但最多不能超过5个,问:如果你是最先拿球的人,你该拿几个?以后怎么拿就能保证你能得到第100个乒乓球?
    山羊的速度

    简介:无

    详细介绍:

    卢姆教授说:“有一次我目击了两只山羊的一场殊死决斗,结果引出了一个有趣的数学问题。我的一位邻居有一只山羊,重54磅,它已有好几个季度在附 近山区称王称霸。后来某个好事之徒引进了一只新的山羊,比它还要重出3磅。 开始时,它们相安无事,彼此和谐相处。可是有一天,较轻的那只山羊站在陡峭的 山路顶上,向它的竞争对手猛扑过去,那对手站在土丘上迎接挑战,而挑战者显然拥有居高临下的优势。不幸的是,由于猛烈碰撞,两只山羊都一命呜呼了。
      现在要讲一讲本题的奇妙之处。对饲养山羊颇有研究,还写过书的乔治·阿伯克龙比说道:“通过反复实验,我发现,动量相当于一个自20英尺高 处坠落下来的30磅重物的一次撞击,正好可以打碎山羊的脑壳,致它死命。”如果他说得不错,那么这两只山羊至少要有多大的逼近速度,才能相互撞破脑壳?你 能算出来吗?
    酒肆老板娘的难题

    简介:无

    详细介绍:

    据说有人给酒肆的老板娘出了一个难题:此人明明知道店里只有两个舀酒的勺子,分别能舀7两和11两酒,却硬要老板娘卖给他2两酒。聪明的老板娘毫不含糊,用这两个勺子在酒缸里舀酒,并倒来倒去,居然量出了2两酒,聪明的你能做到吗?

    一道关于飞机加油的问题

    简介:无

    详细介绍:

    已知: 每个飞机只有一个油箱, 飞机之间可以相互加油(注意是相互,没有加油机) 一箱油可供一架飞机绕地球飞半圈, 问题:为使至少一架飞机 绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机?(所有飞机从同一机场起飞,而且必须安全返回机场,不允许中途降落,中间没有飞机场)

    难题

    简介:这类题有一定难度,如果得不到答案,也不能说明什么。如果你想到了解题思路,那么答案马上就能出来。如果想不到思路,那么……就别想解出来了。

    详细介绍:

    1.你让工人为你工作7天,回报是一根金条,这个金条平分成相连的7段,你必须在每天结束的时候给他们一段金条。如果只允许你两次把金条弄断,你 如何给你的工人付费? 2.有一辆火车以每小时15公里的速度离开北京直奔广州,同时另一辆火车每小时20公里的速度从广州开往北京。如果有一只鸟,以 30公里每小时的速度和两辆火车同时启动,从北京出发,碰到另一辆车后就向相反的方向返回去飞,就这样依次在两辆火车之间来回地飞,直到两辆火车相遇。请 问,这只鸟共飞行了多长的距离? 3.你有四个装药丸的罐子,每个药丸都有一定的重量,被污染的药丸是没被污染的药丸的重量+1。只称量一次,如何判断哪 个罐子的药被污染了? 4.门外三个开关分别对应室内三盏灯,线路良好,在门外控制开关时候不能看到室内灯的情况,现在只允许进门一次,确定开关和灯的对 应关系? 5.人民币为什么只有1、2、5、10的面值? 6.你有两个罐子以及50个红色弹球和50个蓝色弹球,随机选出一个罐子, 随机选出一个弹球 放入罐子,怎么给出红色弹球最大的选中机会?在你的计划里,得到红球的几率是多少

    ————————————————————————————————————————————————————————————————————————————————————

    两个圆环,半径分别是1和2,小圆在大圆内部绕大圆圆周一周,问小圆自身转了几周?如果在大圆的外部,小圆自身转几周

    ————————————————————————————————————————————————————————————————————————————————————

    没有答案型

    简介:这些题显然不是考你智力。而考的是你的反应能力。这种题大多数没有答案,但是要看你的反应喽!

    详细介绍:

    1.为什么下水道的盖子是圆的? 2.中国有多少辆汽车? 3.将汽车钥匙插入车门,向哪个方向旋转就可以打开车锁? 4.如果你要去掉中国的 34个省(含自治区、直辖市和港澳特区及台湾省)中的任何一个,你会去掉哪一个,为什么? 5.多少个加油站才能满足中国的所有汽车? 6.想象你站在镜 子前,请问,为什么镜子中的影象可以颠倒左右,却不能颠倒上下? 7.为什么在任何旅馆里,你打开热水,热水都会瞬间倾泻而出? 8.你怎样将Excel 的用法解释给你的奶奶听? 9.你怎样重新改进和设计一个ATM银行自动取款机? 10.如果你不得不重新学习一种新的计算机语言,你打算怎样着手来开 始? 11.如果你的生涯规划中打算在5年内受到奖励,那获取该项奖励的动机是什么?观众是谁? 12.如果微软告诉你,我们打算投资五百万美元来启动你 的投资计划,你将开始什么样商业计划?为什么? 13.如果你能够将全世界的电脑厂商集合在一个办公室里,然后告诉他们将被强迫做一件事,那件事将是什 么? 

    画线

    简介:(3分钟-20分钟)

    详细介绍:

    在9个点上画10条直线,要求每条直线上至少有三个点?

    称球

    简介:(5分钟-1小时)

    详细介绍:

    12个球和一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球。13个呢?(注意此题并未说明那个球的重量是轻是重,所以需要仔细考虑)

    问路

    简介:(20秒-2分钟) 

    详细介绍:

    一个岔路口分别通向诚实国和说谎国。来了两个人,已知一个是诚实国的,另一个是说谎国的。诚实国永远说实话,说谎国永远说谎话。现在你要去说谎国,但不知道应该走哪条路,需要问这两个人。请问应该怎么问?

    称水

    简介:(40秒-3分钟)回答

    详细介绍:

    如果你有无穷多的水,一个3公升的提捅,一个5公升的提捅,两只提捅形状上下都不均匀,问你如何才能准确称出4公升的水?

    确定颜色

    简介:(5秒-1分钟)回答

    详细介绍:

    你有一桶果冻,其中有黄色、绿色、红色三种,闭上眼睛抓取同种颜色的两个。抓取多少个就可以确定你肯定有两个同一颜色的果冻?

    标题:海盗分宝石[智力测试题]

    内容: 在美国,据说20分钟内能回答出这道题的人,平均年薪在8万美金以上。这是一道很有趣的推理题。

    详细介绍: 

    在美国,据说20分钟内能回答出这道题的人,平均年薪在8万美金以上。这是一道很有趣的推理题。据统计,在美国20分钟内能回答出这道题的人,平 均年薪在8万美金以上。 5个海盗抢到了100颗宝石,每一颗都一样的大小和价值连城。他们决定这么分: 1。抽签决定自己的号码(1,2,3,4,5)  2。首先,由1号提出分配方案,然后大家5人进行表决,当且仅当半数和超过半数的人同意时,按照他的提案进行分配,否则将被扔入大海喂鲨鱼。 3。如果 1号死后,再由2号提出分配方案,然后大家4人进行表决,当且仅当半数和超过半数的人同意时,按照他的提案进行分配,否则将被扔入大海喂鲨鱼。 4。以次 类推...... 条件: 每个海盗都是很聪明的人,都能很理智的判断得失,从而做出选择。 问题:第一个海盗提出怎样的分配方案才能够使自己的收益最大 化。 

    算指针的重合次数

    简介:(5分钟-15分钟)

    详细介绍:

    在一天的24小时之中,时钟的时针、分针和秒针完全重合在一起的时候有几次?都分别是什么时间?你怎样算出来的?

    时间问题

    简介:(这道题我当初想了一个小时)

    详细介绍:

    烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢?

    过桥问题

    简介:无

    详细介绍:

    在漆黑的夜里,四位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,四个人一共只带了 一只手电筒,而桥窄得只够让两个人同时过。如果各自单独过桥的话,四人所需要的时间分别是1、2、5、8分钟;而如果两人同时过桥,所需要的时间就是走得 比较慢的那个人单独行动时所需的时间。问题是,如何设计一个方案,让这四人尽快过桥。

    ——————————————————————————————————————————————————————————————————————————

    1、有7克、2克砝码各一个,天平一只,如何只用天平称三次将140克的盐分<br/>成50、90克各一份?

    2、给你两个8,两个3,只运用加减乘除和括号运算,如何得出24?

    3、分蛋糕给你一盒蛋糕,请你切成8份,分给在场的8个人,但蛋糕盒里还要有一份。如何分呢?

    4、你面前的一个碗里混放着红豆和绿豆各100粒,再给你两个空碗,要求你在1分钟内把红豆拣到一个碗,把绿豆放进另一个碗。但是,无论如何,将1粒豆子拣<br/>到另一个碗里必须花费1秒钟。如何拣呢?

    5、假设你是在海上漂流的鲁滨逊,手里有这几样东西:火柴、塑料布、镜子、食物、水和指南针。“现在你带不动那么多了,你最先扔哪样?最后保留哪样?”(请列出你随时间丢弃物品的顺序)

    ————————————————————————————————————————————————————————————————————————————

    1,10,3,9,5,8,7,7,9,6;
    * s0 d* L4 O, b+ l0 y. m问接在后面的数字是什么?
    + l+ w+ @7 d, L6 `* wA:11,5;
    % }0 O( t6 Z% L' w. U6 OB:10,5;& K- z) g/ }( j! R! E& s
    C:10,4;& p* [# B+ [2 B, T, \" P3 d
    D:11,6  R  Z8 S( I; r' n) K7 E
    请问答案是什么?为什么?
    / s/ J/ e  I6 g$ Q# P1 |5 C下面有答案

    ——————————————————————————————————————————————————————————————————————————————

    1、一个经理有三个女儿,三个女儿的年龄加起来等于13,三个女儿的年龄乘起来等于经理自己的年龄,有一个下属已知道经理的年龄,但仍不能确定经理 三个女儿的年龄,这时经理说只有一个女儿的头发是黑的,然后这个下属就知道了经理三个女儿的年龄。请问三个女儿的年龄分别是多少?为什么?

    2、 有三个人去住旅馆,住三间房,每一间房$10元,于是他们一共付给老板$30,第二天,老板觉得三间房只需要$25元就够了于是叫小弟退回$5给三位客 人,谁知小弟贪心,只退回每人$1,自己偷偷拿了$2,这样一来便等于那三位客人每人各花了九元,于是三个人一共花了$27,再加上小弟独吞了不$2,总 共是$29。可是当初他们三个人一共付出$30那么还有$1呢?

    3、有两位盲人,他们都各自买了两对黑袜和两对白袜,八对袜了的布质、大小完全相同,  而每对袜了都有一张商标纸连着。两位盲人不小心将八对袜了混在一起。他们每人怎样才能取回黑袜和白袜各两对呢? 外企面试趣味智力题

    4、 有一辆火车以每小时15公里的速度离开洛杉矶直奔纽约,另一辆火车以每小时20公里的速度从纽约开往洛杉矶。如果有一只鸟,以30公里每小时的速度和两辆 火车同时启动,从洛杉矶出发,碰到另一辆车后返回,依次在两辆火车来回飞行,直到两辆火车相遇,请问,这只小鸟飞行了多长距离?

    5、你有两个罐子,50个红色弹球,50个蓝色弹球,随机选出一个罐子,随机选取出一个弹球放入罐子,怎么给红色弹球最大的选中机会?在你的计划中,得到红球的准确几率是多少?

    6、你有四个装药丸的罐子,每个药丸都有一定的重量,被污染的药丸是没被污染的重量+1.只称量一次,如何判断哪个罐子的药被污染了?

    7、对一批编号为1~100,全部开关朝上(开)的灯进行以下*作:凡是1的倍数反方向拨一次开关;2的倍数反方向又拨一次开关;3的倍数反方向又拨一次开关……问:最后为关熄状态的灯的编号。 外企面试趣味智力题

    8、想象你在镜子前,请问,为什么镜子中的影像可以颠倒左右,却不能颠倒上下?

    9、 一群人开舞会,每人头上都戴着一顶帽子。帽子只有黑白两种,黑的至少有一顶。每个人都能看到其它人帽子的颜色,却看不到自己的。主持人先让大家看看别人头 上戴的是什幺帽子,然后关灯,如果有人认为自己戴的是黑帽子,就打自己一个耳光。第一次关灯,没有声音。于是再开灯,大家再看一遍,关灯时仍然鸦雀无声。 一直到第三次关灯,才有劈劈啪啪打耳光的声音响起。问有多少人戴着黑帽子?

    10、两个圆环,半径分别是1和2,小圆在大圆内部绕大圆圆周一周,问小圆自身转了几周?如果在大圆的外部,小圆自身转几周呢?

    11、 1元钱一瓶汽水,喝完后两个空瓶换一瓶汽水,问:你有20元钱,最多可以喝到几瓶汽水?

    ————————————————————————————————————————————————————————————————————————————————

    1、你让工人为你工作7天,给工人的回报是一根金条。金条平分成相连的7段 ,你必须在每天结束时给他们一段金条,如果只许你两次把金条弄断,你如何给你的工人付费?
      
    2、请把一盒蛋糕切成8份,分给8个人,但蛋糕盒里还必须留有一份。
      
    3、小明一家过一座桥,过桥时是黑夜,所以必须有灯。现在小明过桥要1秒, 小明的弟弟要3秒,小明的爸爸要6秒,小明的妈妈要8秒,小明的爷爷要12秒。每次此桥最多可过两人,而过桥的速度依过桥最慢者而定,而且灯在点燃后30秒就会熄灭。问:小明一家如何过桥?
      
    4、一群人开舞会,每人头上都戴着一顶帽子。帽子只有黑白两种,黑的至少有一顶。每个人都能看到其他人帽子的颜色,却看不到自己的。主持人先让大家看看别 人头上戴的是什么帽子,然后关灯,如果有人认为自己戴的是黑帽子,就打自己一个耳光。第一次关灯,没有声音。于是再开灯,大家再看一遍,关灯时仍然鸦雀无 声。一直到第三次关灯,才有劈劈啪啪打耳光的声音响起。问有多少人戴着黑帽子?
      
    5、请估算一下CN TOWER电视塔的质量。
      
    6、一楼到十楼的每层电梯门口都放着一颗钻石,钻石大小不一。你乘坐电梯从一楼到十楼,每层楼电梯门都会打开一次,只能拿一次钻石,问怎样才能拿到最大的一颗?
      
    7、U2合唱团在17分钟内得赶到演唱会场,途中必需跨过一座桥,四个人从桥的同一端出发,你得帮助他们到达另一端,天色很暗,而他们只有一只手电筒。一 次同时最多可以有两人一起过桥,而过桥的时候必须持有手电筒,所以就得有人把手电筒带来带去,来回桥两端。手电筒是不能用丢的方式来传递的。四个人的步行 速度各不同,若两人同行则以较慢者的速度为准。Bono需花1分钟过桥,Edge需花2分钟过桥,Adam需花5分钟过桥,Larry需花10分钟过桥。 他们要如何在17分钟内过桥呢?
      
    8、烧一根不均匀的绳要用一个小时,如何用它来判断半个小时 ?
      
    9、为什么下水道的盖子是圆的?
      
    10、美国有多少辆加油站(汽车)?
      
    11、有7克、2克砝码各一个,天平一只,如何只用这些物品三次将140克的盐分成50、90克各一份?
      
    12、有一辆火车以每小时15公里的速度离开洛杉矶直奔纽约,另一辆火车以每小时20公里的速度从纽约开往洛杉矶。如果有一只鸟,以外30公里每小时的速 度和两辆火车现时启动,从洛杉矶出发,碰到另辆车后返回,依次在两辆火车来回的飞行,直道两面辆火车相遇,请问,这只小鸟飞行了多长距离?
      
    13、你有两个罐子,50个红色弹球,50个蓝色弹球,随机选出一个罐子,随机选取出一个弹球放入罐子,怎么给红色弹球最大的选中机会?在你的计划中,得到红球的准确几率是多少?
      
    14、想象你在镜子前,请问,为什么镜子中的影像可以颠倒左右,却不能颠倒上下?
      
    15、你有四人装药丸的罐子,每个药丸都有一定的重量,被污染的药丸是没被污染的重量+1.只称量一次,如何判断哪个罐子的药被污染了?
      
    16、如果你有无穷多的水,一个3夸脱的和一个5夸脱的提桶,你如何准确称出4夸脱的水?
      
    17、你有一桶果冻,其中有黄色,绿色,红色三种,,闭上眼睛选出同样颜色的两个,抓取同种颜色的两个。抓取多少个就可以确定你肯定有两个同一颜色的果冻?
      
    18、将汽车钥匙插入车门,向哪个方向旋转就可以打开车锁?
      
    19、如果要你能去掉50个州的任何一个,那你去掉哪一个,为什么?
      
    20、对一批编号为1~100 全部开关朝上开的灯进行以下操作凡是1 的倍数反方向拨一次开关2 的倍数反方向又拨一次开关3 的倍数反方向又拨一次开关。问最后为关熄状态的灯的编号。
      
    21、假设一张圆盘像唱机上的唱盘那样转动。这张盘一半是黑色,一半是白色。假设你有数量不限的一些颜色传感器。要想确定圆盘转动的方向,你需要在它周围摆多少个颜色传感器?它们应该被摆放在什么位置?
      
    22、假设时钟到了12点。注意时针和分针重叠在一起。在一天之中,时针和分针共重叠多少次?你知道它们重叠时的具体时间吗?
      
    23、中间只隔一个数字的两个奇数被称为奇数对,比如17和19。证明奇数对之间的数字总能被6整除(假设这两个奇数都大于6)。现在证明没有由三个奇数组成的奇数对。
      
    24、一个屋子有一个门(门是关闭的)和3盏电灯。屋外有3个开关,分别与这3盏灯相连。你可以随意操纵这些开关,可一旦你将门打开,就不能变换开关了。确定每个开关具体管哪盏灯。
      
    25、假设你有8个球,其中一个略微重一些,但是找出这个球的惟一方法是将两个球放在天平上对比。最少要称多少次才能找出这个较重的球?
      
    26、下面玩一个拆字游戏,所有字母的顺序都被打乱。你要判断这个字是什么。假设这个被拆开的字由5个字母组成:
          1.共有多少种可能的组合方式?
          2.如果我们知道是哪5个字母,那会怎么样?
          3.找出一种解决这个问题的方法。
      
    27、有4个女人要过一座桥。她们都站在桥的某一边,要让她们在17分钟内全部通过这座桥。这时是晚上。她们只有一个手电筒。最多只能让两个人同时过桥。 不管是谁过桥,不管是一个人还是两个人,必须要带着手电筒。手电筒必须要传来传去,不能扔过去。每个女人过桥的速度不同,两个人的速度必须以较慢的那个人 的速度过桥。
        第一个女人:过桥需要1分钟;
        第二个女人:过桥需要2分钟;
        第三个女人:过桥需要5分钟;
        第四个女人:过桥需要10分钟。
    比如,如果第一个女人与第4个女人首先过桥,等她们过去时,已经过去了10分钟。如果让第4个女人将手电筒送回去,那么等她到达桥的另一端时,总共用去了20分钟,行动也就失败了。怎样让这4个女人在17分钟内过桥?还有别的什么方法?
      
    28、如果你有两个桶,一个装的是红色的颜料,另一个装的是蓝色的颜料。你从蓝色颜料桶里舀一杯,倒入红色颜料桶,再从红色颜料桶里舀一杯倒入蓝颜料桶。两个桶中红蓝颜料的比例哪个更高?通过算术的方式来证明这一点。
      
      
      
    [size=4]B:疯狂计算 [/size]
      
    29、已知两个1~30之间的数字,甲知道两数之和,乙知道两数之积。甲问乙:"你知道是哪两个数吗?"乙说:"不知道";乙问甲:"你知道是哪两个数吗?"甲说:"也不知道";于是,乙说:"那我知道了";随后甲也说:"那我也知道了";这两个数是什么?
      
    30、4,4,10,10,加减乘除,怎么出24点?
      
    31、1000!有几位数,为什么?
      
    32、F(n)=1 n>8 n<12
      F(n)=2 n<2
      F(n)=3 n=6
      F(n)=4 n=other
      使用+ - * /和sign(n)函数组合出F(n)函数
      sign(n)=0 n=0
      sign(n)=-1 n<0
      sign(n)=1 n>0
      
    33、编一个程序求质数的和例如F(7)=1+3+5+7+11+13+17=58
      
    35、三层四层二叉树有多少种
      
    36、1--100000 数列按一定顺序排列,有一个数字排错,如何纠错?写出最好方法。两个数字呢?
      
    37、链接表和数组之间的区别是什么?
      
    38、做一个链接表,你为什么要选择这样的方法?
      
    39、选择一种算法来整理出一个链接表。你为什么要选择这种方法?现在用 O(n)时间来做。
      
    40、说说各种股票分类算法的优点和缺点。
      
    41、用一种算法来颠倒一个链接表的顺序。现在在不用递归式的情况下做一遍 。
       
    42、用一种算法在一个循环的链接表里插入一个节点,但不得穿越链接表。
      
    43、用一种算法整理一个数组。你为什么选择这种方法?
      
    44、用一种算法使通用字符串相匹配。
      
    45、颠倒一个字符串,优化速度,优化空间。
      
    46、颠倒一个句子中的词的顺序,比如将"我叫克丽丝"转换为"克丽丝叫我",实现速度最快,移动最少。
      
    47、找到一个子字符串,优化速度,优化空间。
      
    48、比较两个字符串,用O(n)时间和恒量空间。
      
    49、假设你有一个用1001个整数组成的数组,这些整数是任意排列的,但是你知道所有的整数都在1到1000(包括1000)之间。此外,除一个数字出 现两次外,其他所有数字只出现一次。假设你只能对这个数组做一次处理,用一种算法找出重复的那个数字。如果你在运算中使用了辅助的存储方式,那么你能找到 不用这种方式的算法吗?
      
    50、不用乘法或加法增加8倍。现在用同样的方法增加7倍。
      
    [size=4]C:创造性应用[/size]
      
    51、营业员小姐由于工作失误,将2万元的笔记本电脑以1.2万元错卖给李先生,王小姐的经理怎么写信给李先生试图将钱要回来?
      
    52、如何将计算机技术应用于一幢100层高的办公大楼的电梯系统上?你怎样
      优化这种应用?工作日时的交通、楼层或时间等因素会对此产生怎样的影响?
      
    53、你如何对一种可以随时存在文件中或从因特网上拷贝下来的操作系统实施保护措施,防止被非法复制?
      
    54、你如何重新设计自动取款机?
      
    55、假设我们想通过电脑来操作一台微波炉,你会开发什么样的软件来完成这个任务?
      
    56、你如何为一辆汽车设计一台咖啡机?
      
    56、如果你想给微软的Word系统增加点内容,你会增加什么样的内容?
      
    57、你会给只有一只手的用户设计什么样的键盘?
      
    58、你会给失聪的人设计什么样的闹钟?

    ——————————————————————————————————————————————————————————————

    女儿的错——父亲打电话给女儿,要她替自己买一些生活用品,同时告诉她,钱放在书桌上的一个信封里。女儿找到信封,看见上面写着98,以为信封内有 98元,就把钱拿出来,数也没数放进书包里。在商店里,她买了90元的东西,付款时才发现,她不仅没有剩下8元,反而差了4元。回到家里,她把这事告诉了 父亲,怀疑父亲把钱点错了。父亲笑着说,他并没有数错,错在女儿身上。
    问:女儿错在什么地方?
      
    找硬币——3个日本孩子 翻衣兜,他们把兜里所有的钱都掏出来,看看一共有多少钱。结果一共有320日元。其中有两枚硬币是100日元的,两枚是50日元的,两枚是10日元的。每 一个孩子所带的硬币中没有相同的。而且,没带100日元硬币的孩子也没带10日元的硬币,没带50日元硬币的孩子也没带100日元的硬币。你能弄清楚这3 个日本孩子原来各自带了什么硬币吗?
      
    入睡与醒来——问:从你生下来的那一刻起,你入睡和醒来的次数哪个多?多多少次?
      
    什么书中毛病最多?

    为什么好马不吃回头草?

    什么东西说“父亲”是不会相碰,叫“爸爸”时却会碰到两次?

    农夫养10头牛,只有19只角,为什么?

     打什么东西既不花力气又舒服?

     托尼总是喜欢把家里的闹钟整坏,妈妈为什么总是让不会修理钟表的爸爸代为修理?

    戴夫走路从来脚不沾地,这是为什么?

     生米不小心煮成熟饭时该怎么办?

    制造日期与有效日期是同一天的产品是什么?

    时钟敲了十三下,请问现在该做什么呢?
      
    有对一模一样的双胞胎兄弟,哥哥的屁股有黑痣,而弟弟没有。但即使这对双胞胎穿着相同的服饰,仍然有人可立刻知道谁是哥哥,谁是弟弟。究竟是谁呢?
      
    家有家规,国有国规,那动物园里有啥规?

    先有男人,还是先有女人?
      
    玛丽整天说个不停,可有一个月她说的最少,那是为什么?
      
    戴维手里拿着火柴走到厨房,这有一个煤气灶和一个酒精灯,他如果想烧开水,请问:他应该先该点燃什么?
      
    老师说蚯蚓切成两段仍能再生,西恩照老师的话去做,蚯蚓却死了,为什么?

    汽车在右转弯时,哪只轮胎不转—

    ————————————————————————————————————————————————————————————————

    1、第一个答案是b的问题是哪一个?   
    (a)2;(b) 3;(c)4;(d)5;(e)6  

    2、唯一的连续两个具有相同答案的问题是:   
    (a)2,3;(b)3,4;(c)4,5;(d)5,6;(e)6,7;  

    3、本问题答案和哪一个问题的答案相同?   
    (a)1;(b)2;(c)4;(d)7;(e)6  

    4、答案是a的问题的个数是:   
    (a)0;(b)1;(c)2;(d)3;(e)4  

    5、本问题答案和哪一个问题的答案相同?   
    (a)10;(b)9;(c)8;(d)7;(e)6  

    6、答案是a的问题的个数和答案是什么的问题的个数相同?   
    (a)b;(b)c;(c)d;(d)e;(e)以上都不是  

    7、按照字母顺序,本问题的答案和下一个问题的答案相差几个字母?   
    (a)4;(b)3;(c)2;(d)1;(e)0。(注:a和b相差一个字母)  

    8、答案是元音字母的问题的个数是:   
    (a)2;(b)3;(c)4;(d)5;(e)6。(注:a和e是元音字母)  

    9、答案是辅音字母的问题的个数是:   
    (a)一个质数;(b)一个阶乘数;(c)一个平方数;(d)一个立方数,(e)5的倍数  

    10、本问题的答案是:   
    (a)a;(b)b;(c)c;(d)d;(e)e

    ——————————————————————————————————————————————————————————————

    五个人来自不同地方住不同房子养不同动物吸不同牌子香烟喝不同饮料喜欢
    不同食物根据以下线索确定谁是养猫的人


    1 红房子在蓝房子的右边白房子的左边不一定紧邻
    2 黄房子的主人来自香港而且他的房子不在最左边
    3 爱吃比萨饼的人住在爱喝矿泉水的人的隔壁
    4 来自北京的人爱喝茅台住在来自上海的人的隔壁
    5 吸希尔顿香烟的人住在养马的人?右边隔壁
    6 爱喝啤酒的人也爱吃鸡
    7 绿房子的人养狗
    8 爱吃面条的人住在养蛇的人的隔壁
    9 来自天津的人的邻居紧邻一个爱吃牛肉另一个来自成都


    下面是一组答案
    由左到右
    蓝--上海--啤酒--鸡
    绿--北京--茅台--面条---狗
    红--成都--矿泉水--蛇
    白--天津--比萨--马
    黄--香港--牛肉--猫
    所以养猫的人是香港人

    ——————————————————————————————————————————————————————————————————————————

    一个小猴子边上有100根香蕉,它要走过50米才能到家,
    每次它最多搬50根香蕉,(多了就被压死了),它每走
    1米就要吃掉一根,请问它最多能把多少根香蕉搬到家里。

    提示:他可以把香蕉放下往返的走,但是必须保证它每走
    一米都能有香蕉吃。也可以走到n米时,放下一些香蕉,
    拿着n根香蕉走回去重新搬50根。

    (50-17)+16=49

    16跟..............................................

    猴子走1米吃一根回一米吃一跟在去一米吃一根也就是搬一次要走3趟
    结果一次备50跟,那么就是50/3=16。6666米
    假设17米

    猴子走了17米再回去搬剩下的50跟得 50-17=33跟
    再回来,然后加上17米处第一次搬的蕉蕉

    再然后背着蕉蕉回家,结果应该是16跟

    ——————————————————————————————————————————————————————————————

    一、摸豆子问题
    5个囚犯,分别按1-5号,在装有100颗绿豆的麻袋里抓绿豆,规定每人至少抓一颗,而抓得最多
    和最少的人将被处死,而且,他们之间不能交流,但在抓的时候,可以摸出剩下的豆子数。问他
    们中谁的存活几率最大?
      提示:
      1.他们都是很聪明的人
      2.他们的原则是先求保命,再去多杀人
      3.100颗不必都分完
      4.若有重复的情况,则也算最大或最小,一并处死。

    三、病狗问题
    一个大院子里住了50户人家,每家都养了一条狗,这个院子里的人都有极强的推理能力。
         有一天他们接到通知说院子里有狗生病了,并要求所有主人在发现自己家狗生病的
    当天就要把狗枪杀掉。
        然而所有主人和他们的狗都不能够离开自己的房子,主人与主人之间也不能通过任
    何方式进行沟通,他们能做的只是通过窗户观察别人家的狗是否生病从而判断自己的狗
    病否。(就是说,每个主人只能看出其他49家的狗是不是生病,单独看自己的狗是看不
    出来的)
        第一天没有枪声,第二天还是没有枪声,第三天传出一阵枪声,问有多少条狗被枪
    杀?


    四、小猴子搬香蕉问题
    一个小猴子边上有100根香蕉,它要走过50米才能到家,
    每次它最多搬50根香蕉,(多了就被压死了),它每走
    1米就要吃掉一根,请问它最多能把多少根香蕉搬到家里。
    提示:他可以把香蕉放下往返的走,但是必须保证它每走
    一米都能有香蕉吃。也可以走到n米时,放下一些香蕉,
    拿着n根香蕉走回去重新搬50根


    五、倒水问题
          有三个立方体无盖盒子,不计容器厚度,容积分别为1*1*1,2*2*2,3*3*3.
    要求:1.用此三个盒子装13的水
         2.每个杯子只能加水一次
         3.不能有水浪费掉.
    请问有何方法.


    六、分酒问题一
    有1个8升的装满酒的杯子和两个小杯子,A和B两个人要平分这8升酒,让两个人都觉得公平的方
    法是,由A先把酒平分到两个小杯子里,直到他认为自己无论选哪杯都不吃亏为止。然后让B在两
    个小杯中选自己认为最合算的一杯。剩下的一杯给A。现在有两个8升的装满酒的杯子和4个小杯
    子,ABCD四个人要怎么分,才可以让每一个人觉得公平?


    七、分酒问题二
    有三个酒杯,其中两个大酒杯每个可以装8两酒,一个可以装3两酒。现在两个大酒杯都装满了酒
    ,只用这三个杯子怎么把酒平均的分给4个人喝?


    八、称球问题
    (1)一共12个一样的小球,其中只有一个重量与其它不一样(未知轻重),给你一个天平, 只
    称三次, 找出那个不同重量的球
    (2)一共13个一样的小球,其中只有一个重量与其它不一样(未知轻重),给你一个天平, 只
    称三次, 找出那个不同重量的球


    九、称药问题
    有10罐药,其中有一罐已经变质……已知正常的药每粒10g,变质的每粒9g,那么怎样只称一次
    就查出哪罐变质了?


    十、经典的帽子问题
    1、有一个牢房,有3个犯人关在其中。因为玻璃很厚,所以3个人只能互相看见,不能听到对方
    说话的声音。”
        有一天,国王想了一个办法,给他们每个人头上都戴了一顶帽子,只叫他们知道帽子的颜色
    不是白的就是黑的,不叫他们知道自己所戴帽子的是什么颜色的。在这种情况下,国王宣布两条
    如下:
         (1)谁能看到其他两个犯人戴的都是白帽子,就可以释放谁;
         (2)谁知道自己戴的是黑帽子,就释放谁。
        其实,国王给他们戴的都是黑帽子。他们因为被绑,看不见自己罢了。于是他们3个人互相
    盯着不说话。可是不久,心眼灵的A用推理的方法,认定自己戴的是黑帽子。您想,他是怎样推
    断的?
    2、有十个人站成一列,
    每个人头上有一顶帽子,要么是红色,要么是蓝色.
    每个人只能看见站在自己前面所有的人的帽子的颜色.
    现让每个人报一种颜色,
    请想法使尽量多的人报的颜色是他自己帽子的颜色.
    如:排在偶数位子的人报他前面人的帽子的颜色,从第十位开始报,
    而奇数位的就可以知道自己帽子的颜色了,
    这样就有5个人报的颜色是他自己帽子的颜色.
    现问如何使九个人报的颜色是他自己帽子的颜色呢?

    ————————————————————————————————————————————————————————————————————————————————————

    十一、一美元纸币
    注:美国货币中的硬币有1美分、5美分、10美分、25美分、50美分和1美元这几种面值。请接着
    看正文吧,挑战你逻辑推理的极限。
        一家小店刚开始营业,店堂中只有三位男顾客和一位女店主。当这三位男士同时站起来付帐
    的时候,出现了以下的情况:
       (1)这四个人每人都至少有一枚硬币,但都不是面值为1美分或1美元的硬币。
       (2)这四人中没有一人能够兑开任何一枚硬币。
       (3)一个叫卢的男士要付的帐单款额最大,一位叫莫的男士要付的帐单款额其次,一个叫内
    德的男士要付的帐单款额最小。
       (4)每个男士无论怎样用手中所持的硬币付帐,女店主都无法找清零钱。
       (5)如果这三位男士相互之间等值调换一下手中的硬币,则每个人都可以付清自己的帐单而
    无需找零。
       (6)当这三位男士进行了两次等值调换以后,他们发现手中的硬币与各人自己原先所持的硬
    币没有一枚面值相同。
        随着事情的进一步发展,又出现如下的情况:
       (7)在付清了帐单而且有两位男士离开以后,留下的男士又买了一些糖果。这位男士本来可
    以用他手中剩下的硬币付款,可是女店主却无法用她现在所持的硬币找清零钱。
       (8)于是,这位男士用1美元的纸币付了糖果钱,但是现在女店主不得不把她的全部硬币都
    找给了他。
        现在,请你不要管那天女店主怎么会在找零上屡屡遇到麻烦,这三位男士中谁用1美元的纸
    币付了糖果钱?

    十二、苹果橘子问题
    有3箱水果,一箱全是苹果,一箱全是橘子,还有一箱是两种水果的混装。三个箱子上都贴了标
    签,不过所有的标签都贴错了~现在要求你只拿出一个水果,来判断3个箱子里的情况~


    十三、填符号数学题 不愧是13号,难!
    在中填入加减乘除,使结果等于2008:
    1、(34□5□6□8□9□1)□2=2008
    2、(56□7□89□1□23□1)□4=2008
    3、5□8□25□20□5□10□2□4=2008


    十四、一道关于飞机加油的问题
    已知:
    每个飞机只有一个油箱,飞机之间可以相互加油(注意是相互,没有加油机) 一箱油可供一架
    飞机绕地球飞半圈。
    问题:
    为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机?(所有飞机从同一
    机场起飞,而且必须安全返回机场,不允许中途降落,中间没有飞机场)


    十五、取硬币题
    16个硬币,A和B轮流拿走一些,每次拿走的个数只能是1,2,4中的一个数。
    谁最后拿硬币谁输。
    问:A或B有无策略保证自己赢?
    假设都很聪明


    17. 三个小伙子同时爱上了一个姑娘,为了决定他们谁能娶这个姑娘,他们决定用手枪进行一次决斗。阿历克斯的命中率是30%,克里斯比他好些,命中率是50%, 最出色的枪手是鲍博,他从不失误,命中率是100%。由于这个显而易见的事实,为公平起见,他们决定按这样的顺序:阿历克斯先开枪,克里斯第二,鲍博最 后。然后这样循环,直到他们只剩下一个人。那么这三个人中谁活下来的机会最大呢?他们都应该采取什么样的策略?


    18.2个盲人每人买了2双黑袜2双白袜,(每双袜子连在一起,)不小心吧这把8双袜子混在了一起,请问他俩怎样才能拿会自己的袜子(2双黑袜2双白袜)


    19. 盆子里有15个包子,平均分给15个小朋友,每人1个.可是分完后盆里还有1个,为什么??


    21. 8833这四个数(只可用+-*/和括号)如何等于24?

    22. 有3只母老虎 每一老虎都带一只小老虎 他们同时要过河但是河里只有一只船船一次可以载2个老虎(不论大小)船到对岸想要船回来必须有一只老虎划船回来  3只小老虎只有一只会划船 3个大老虎都会划船每次过河时母老虎必须守着自己的小老虎以防被其他老虎吃掉小老虎之间不会发生打架  母老虎们也不会打架 请问怎么过河
    答案:
    把老虎们设为ABC和abc
    设为a会划船
    一 a带b到对岸 a返回
    二a带c到对岸 a返回
    三BC到对岸 Bb返回
    四Aa到对岸 Cc返回
    五BC到对岸 a返回
    六ac到对岸 a 返回
    七ab到对岸 成功过河

    ——————————————————————————————————————————————————————————————————————

    23. 12个球,有1个其重量与其他不同(不知轻重),用天平测3次找出。
    球编号为1-12号
    1,2,3,4--5,6,7,8
    如果平衡,坏球在9,10,11,12里
        1,2--9,10,如平衡,坏球在11,12里
            1--11平衡12坏;否则11坏
    如果不平衡,9,10,11,12都是好球
        1,6,7,8--5,9,10,11
             平衡,坏球在2,3,4里。易得
             不平衡,看天平倾斜方向是否发生变化,若变化在6,7,8里,没变化就是1,5
                      后面的易得


    24. P先生、Q先生具有足够的推理能力。这天,他们正在接受面试。
    他们知道桌子的抽屉里有16张扑克牌:
    红桃 A Q 4
    黑桃 J 8 4 2 7 3
    草花 K Q 5 4 6
    方块 A 5
    约瀚教授从这16张牌中挑出一张牌来,并把这张牌的点数告诉P先生,把这张牌的花色告诉Q先生。
    这时,约翰教授问P先生和Q先生:你们能从已知的点数或花色中推知这张牌是什么牌吗?
    P先生:"我不知道这张牌。"  Q先生:"我知道你不知道这张牌。"
    P先生:"现在我知道这张牌了。" Q先生:"我也知道了。"
    请问这张牌是什么牌?
    答案
    P说:“我不知道这张牌。”是因为有多个选择,必然是重复出现过的牌。(则数字可能是:A、Q、4、5)
    Q说:“我知道你不知道这张牌。”回答这么肯定,是因为确认了在这花色中,都是有其他花色数字相同的牌,这种花色可能是:红桃、方块(而且肯定不是黑心和草花,是的话,有些牌是唯一的,P只要知道点数就知道是什么牌,Q说得这么肯定,说明不是)
    P说:“我知道是什么牌了”。P知道点数,如是A点,则有红桃A和方块A两种可能,不能知道是什么牌;则只可能是红Q点、红4和方5,他才能判断出来。(此时,我们因为不知道P知道的点数,所以我们是判断不出来的)
    Q说:“我也知道了”,如花色是红,Q不会说他知道了,因为有红Q和红4。所以只能是方块5。(最后因为Q说他知道了,所以我们也说知道了:这是方块5)
    方片 5

    25. 桌子上有三张扑克牌,排成一行。现在,我们已经知道:
    1.K右边的两张牌中至少有一张是A。
    2.A左边的两张牌中也有一张是A。
    3.方块左边的两张牌中至少有一张是红桃。
    4.红桃右边的两张牌中也有一张是红桃。
    问:这三张是什么牌?
    分析与解答
    这三张牌,从左到右依次为:红桃K、红桃A和方块A。
    先 来确定左边的第一张牌。从前提1得知这张牌是K;从前提4得知这张牌是红桃;所以,这张牌是红桃K。再来确定右边的第一张牌。从前提2得知这张牌是A;从 前提3得知这张牌是方块;所以,这张牌为方块A。最后,来确定当中的一张牌。从前提2得知,或者这张牌是A,或者左边第一张是A;又从前提1得知左边第一 张是K,所以,当中这张牌是A。同理,从前提4得知,或者当中这张牌是红桃,或者右边第一张牌是红桃;但由前提3可知右边第一张是方块,这样,即可确定, 当中这张牌是红桃。

    26. 王牌
    在一盘纸牌游戏中,某个人的手中有这样的一副牌:
    (1)正好有十三张牌。
    (2)每种花色至少有一张。
    (3)每种花色的张数不同。
    (4)红心和方块总共五张。
    (5)红心和黑桃总共六张。
    (6)属于“王牌”花色的有两张。红心、黑桃、方块和梅花这四种花色,哪一种是“王牌”花色?
    分析与解答
    解答:据(1),(2),(3),此人手中四种花色的分布是以下三种可能情况之一:
    (a)1237
    (b)1246
    (c)1345
    根 据(6),情况(c)被排除,因为其中所有花色都不是两张牌。根据(5),情况(a)被排除,因为其中任何两种花色的张数之和都不是六。因此,(b)是实 际的花色分布情况。根据(5),其中要么有两张红心和四张黑桃,要么有四张红心和两张黑桃。根据(4),其中要么有一张红心和四张方块,要么有四张红心和 一张方块。综合(4)和(5),其中一定有四张红心;从而一定有两张黑桃。因此,黑桃是王牌花色。
    概括起来,此人手中有四张红心、两张黑桃、一张方块和六张梅花


    27. 你让工人为你工作7天,给工人的回报是一根金条。金条平分成相连的7段,你必须在每天结束时给他们一段金条,如果只许你两次把金条弄断,你如何给你的工人付费?
    答 案:把金条分成1/7、2/7和4/7三份。这样,第1天我就可以给他1/7;第2天我给他2/7,让他找回我1/7;第3天我就再给他1/7,加上原先 的2/7就是3/7;第4天我给他那块4/7,让他找回那两块1/7和2/7的金条;第5天,再给他1/7;第6天和第2天一样;第7天给他找回的那个 1/7。


    28. 现在小明一家过一座桥,过桥的时候是黑夜,所以必须有灯。现在小明过桥要1秒,小明的弟弟要3秒,小明的爸爸要6秒,小明的妈妈要8秒,小明的爷爷要12 秒。每次此桥最多可过两人,而过桥的速度依过桥最慢者而定,而且灯在点燃后30秒就会熄灭。问小明一家如何过桥?
    参考答案:这类智力题目,其实是 考察应聘者在限制条件下解决问题的能力。具体到这道题目来说,很多人往往认为应该由小明持灯来来去去,这样最节省时间,但最后却怎么也凑不出解决方案。但 是换个思路,我们根据具体情况来决定谁持灯来去,只要稍稍做些变动即可:第一步,小明与弟弟过桥,小明回来,耗时4秒;第二步,小明与爸爸过河,弟弟回 来,耗时9秒;第三步,妈妈与爷爷过河,小明回来,耗时13秒;最后,小明与弟弟过河,耗时4秒,总共耗时30秒,多么惊险!

    29.  已知1<x<y<30 ,将x+y告诉甲,将x*y告诉乙
      下面是甲乙对话
      甲说:“我不知道x和y是多少,但你也不知道”
      乙说:“我知道x和y分别是多少了!”
      甲说:“我也知道了”
      问x和y分别是多少?

    ——————————————————————————————————————————————————————————————————————————————————

    1、试想你站在镜子前,为什么镜子能够颠倒左右,不能颠倒上下?

    2、为什么下水道的盖子是圆的?(程亮)

    ————————————————————————————————————————————————————————

    小明和小强都是张老师的学生,张老师的生日是m月n日,
    2人都知道张老师的生日是下列10组中的一天,
    张老师把m值告诉了小明,把n值告诉了小强,
    张老师问他们知道他的生日是那一天吗?
    3月4日 3月5日 3月8日
    6月4日 6月7日
    9月1日 9月5日
    12月1日 12月2日 12月8日
    小明说:如果我不知道的话,小强肯定也不知道
    小强说:本来我也不知道,但是现在我知道了
    小明说:哦,那我也知道了
    请根据以上对话推断出张老师的生日是哪一天

    终于得到答案啦!

    分析:

    第一:从题目小强和小明的对答可以知道几个事情:
    1、老师出的这题是肯定有答案的;
    2、小明和小强开始都不知道答案;
    3、小强在知道小明不知道答案后,小强就知道答案,然后小明也知道答案;

    第二:画出一个表
    小明(代表月) 小强(代表日)
    3月 4日,5日,8日
    6月 4日,7日
    9月 1日,5日
    12月 1日,2日,8日

    第三:从小明和小强开始都不知道答案我们可以知道小强的拿到的日期是有重复的,因此可以推出小明拿的月份不可能是6月,因为如果是6月

    ,小明就可以推出小强拿的是4号。简化上表:(将否定的数值用*号代替)

    小明(代表月) 小强(代表日)
    3月 4日,5日,8日
    * 4日,*
    9月 1日,5日
    12月 1日,*,8日

    第四:我们开始假设:
    假设一:小明拿的是3月,小强拿的是4号
    推理:如果小明只看到自己的3月,而不知道小强的4号,小明确定老师的生日的日期就只有4号、5号、8号三个,因此小明是不确定的;

    如果小强拿的是4号,开始小强确定老师的生日的月份就只有3月或6月其中一个,当然开始就是不确定了,然而现在小明先说自己不知道,就说

    明不可能是6月,就只有3月,所以小强知道了;在小强知道后,小明自然可以知道小强拿的是4号,所以小明就知道了。
    这样的结果不就符合上面几种情况?第一:有答案,第二:开始小明小强都不知道,第三小强先知道,小明再知道。

    !!!!!!!!!!!呀?没理由,第一个假设就已经通过?不可能,肯定有问题!!!!!!!!!!
    好,我们开始再假设下面的!!!!

    假设二:小明拿的是3月,小强拿的是5号
    推理:如果小明只看到自己的3月,而不知道小强的5号,小明确定老师的生日的日期就只有4号、5号、8号三个,因此小明是不确定的;

    如果小强拿的是5号,开始小强确定老师的生日的月份就只有3月或9月其中一个,当然开始就是不确定了,然而现在小明先说自己不知道,就说

    明不可能是6月,但是3月和9月依然不能确定,所以小强也不可能知道。

    !!!!!!!!!!!哦!有点希望呀,第二个假设不通过,如果剩下的都不通过,不就是第一个假设的日期了吗?

    假设三:小明拿的是3月,小强拿的是8号
    推理:如果小明只看到自己的3月,而不知道小强的8号,小明确定老师的生日的日期就只有4号、5号、8号三个,因此小明是不确定的;

    如果小强拿的是8号,开始小强确定老师的生日的月份就只有3月或12月其中一个,当然开始就是不确定了,然而现在小明先说自己不知道,就

    说明不可能是6月,但是3月和12月依然不能确定,所以小强也不可能知道。


    假设四:小明拿的是9月,小强拿的是1号
    推理:如果小明只看到自己的9月,而不知道小强的1号,小明确定老师的生日的日期就只有1号、5号两个,因此小明是不确定的;如果

    小强拿的是1号,开始小强确定老师的生日的月份就只有9月或12月其中一个,当然开始就是不确定了,然而现在小明先说自己不知道,就说明

    不可能是6月,但是9月和12月依然不能确定,所以小强也不可能知道。


    假设五:小明拿的是9月,小强拿的是5号
    推理:如果小明只看到自己的9月,而不知道小强的5号,小明确定老师的生日的日期就只有1号、5号两个,因此小明是不确定的;如果

    小强拿的是5号,开始小强确定老师的生日的月份就只有9月或12月其中一个,当然开始就是不确定了,然而现在小明先说自己不知道,就说明

    不可能是6月,但是9月和12月依然不能确定,所以小强也不可能知道。


    假设六:小明拿的是12月,小强拿的是1号
    推理:如果小明只看到自己的12月,而不知道小强的1号,小明确定老师的生日的日期就只有1号、8号两个,因此小明是不确定的;如果

    小强拿的是1号,开始小强确定老师的生日的月份就只有9月或12月其中一个,当然开始就是不确定了,然而现在小明先说自己不知道,就说明

    不可能是6月,但是9月和12月依然不能确定,所以小强也不可能知道。


    假设七:小明拿的是12月,小强拿的是8号
    推理:如果小明只看到自己的12月,而不知道小强的8号,小明确定老师的生日的日期就只有1号、8号两个,因此小明是不确定的;如果

    小强拿的是1号,开始小强确定老师的生日的月份就只有3月或12月其中一个,当然开始就是不确定了,然而现在小明先说自己不知道,就说明

    不可能是6月,但是3月和12月依然不能确定,所以小强也不可能知道。

    !!!!!!!!!!!!!哦,答案出来啦,七个假设中,只有假设一是符合题目的,因此正确答案:3月4日。 

    ————————————————————————————————————————————————————————————————————————

    .为什么下水道的盖子是圆的? 2.中国有多少辆汽车? 3.将汽车钥匙插入车门,向哪个方向旋转就可以打开车锁? 4.如果你要去掉中国的34个省(含自治区、直辖市和港澳特区及台湾省)中的任何一个,你会去掉哪一个,为什么? 5.多少个加油站才能满足中国的所有汽车? 6.想象你站在镜子前,请问,为什么镜子中的影象可以颠倒左右,却不能颠倒上下? 7.为什么在任何旅馆里,你打开热水,热水都会瞬间倾泻而出? 8.你怎样将Excel的用法解释给你的奶奶听? 9.你怎样重新改进和设计一个ATM银行自动取款机? 10.如果你不得不重新学习一种新的计算机语言,你打算怎样着手来开始? 11.如果你的生涯规划中打算在5年内受到奖励,那获取该项奖励的动机是什么?观众是谁? 12.如果微软告诉你,我们打算投资五百万美元来启动你的投资计划,你将开始什么样商业计划?为什么? 13.如果你能够将全世界的电脑厂商集合在一个办公室里,然后告诉他们将被强迫做一件事,那件事将是什么?

    ————————————————————————————————————————


  • LoadRunner监视的性能计数器

    2008-05-29 15:54:13

    今天,我先把我整理的一些计数器及其阈值要求等贴出来,这些计数器是针对我对windows操作系统,C/S结构的sql server数据库及WEB平台.net产品测试时的一些计数器;大家可以继续补充,作过unix平台上oracle数据库测试及J2EE架构及WEBLOGIC方面测试的朋友,也希望把自己使用的计数器贴出来,让大家分享。

      好了,先说这些了,希望通过这个专题,最终能让大家对自己的测试结果进行分析。

      Memory: 内存使用情况可能是系统性能中最重要的因素。如果系统“页交换”频繁,说明内存不足。“页交换”是使用称为“页面”的单位,将固定大小的代码和数据块从 RAM 移动到磁盘的过程,其目的是为了释放内存空间。尽管某些页交换使 Windows 2000 能够使用比实际更多的内存,也是可以接受的,但频繁的页交换将降低系统性能。减少页交换将显著提高系统响应速度。要监视内存不足的状况,请从以下的对象计数器开始:

      Available Mbytes:可用物理内存数. 如果Available Mbytes的值很小(4 MB 或更小),则说明计算机上总的内存可能不足,或某程序没有释放内存。

      page/sec: 表明由于硬件页面错误而从磁盘取出的页面数,或由于页面错误而写入磁盘以释放工作集空间的页面数。一般如果pages/sec持续高于几百,那么您应该进一步研究页交换活动。有可能需要增加内存,以减少换页的需求(你可以把这个数字乘以4k就得到由此引起的硬盘数据流量)。Pages/sec 的值很大不一定表明内存有问题,而可能是运行使用内存映射文件的程序所致。

      page read/sec:页的硬故障,page/sec的子集,为了解析对内存的引用,必须读取页文件的次数。阈值为>5. 越低越好。大数值表示磁盘读而不是缓存读。

      由于过多的页交换要使用大量的硬盘空间,因此有可能将导致将页交换内存不足与导致页交换的磁盘瓶径混淆。因此,在研究内存不足不太明显的页交换的原因时,您必须跟踪如下的磁盘使用情况计数器和内存计数器:

      Physical Disk\ % Disk Time

      Physical Disk\ Avg.Disk Queue Length

       例如,包括 Page Reads/sec 和 % Disk Time 及 Avg.Disk Queue Length。如果页面读取操作速率很低,同时 % Disk Time 和 Avg.Disk Queue Length的值很高,则可能有磁盘瓶径。但是,如果队列长度增加的同时页面读取速率并未降低,则内存不足。

      要确定过多的 页交换对磁盘活动的影响,请将 Physical Disk\ Avg.Disk sec/Transfer 和 Memory\ Pages/sec 计数器的值增大数倍。如果这些计数器的计数结果超过了 0.1,那么页交换将花费百分之十以上的磁盘访问时间。如果长时间发生这种情况,那么您可能需要更多的内存。

      Page Faults/sec:每秒软性页面失效的数目(包括有些可以直接在内存中满足而有些需要从硬盘读取)较page/sec只表明数据不能在内存的指定工作集中立即使用。

      Cache Bytes:文件系统缓存(File System Cache),默认情况下为50%的可用物理内存。如IIS5.0 运行内存不够时,它会自动整理缓存。需要关注该计数器的趋势变化

       如果您怀疑有内存泄露,请监视 Memory\ Available Bytes 和 Memory\ Committed Bytes,以观察内存行为,并监视您认为可能在泄露内存的进程的 Process\Private Bytes、Process\Working Set 和Process\Handle Count。如果您怀疑是内核模式进程导致了泄露,则还应该监视 Memory\Pool Nonpaged Bytes、Memory\ Pool Nonpaged Allocs 和 Process(process_name)\ Pool Nonpaged Bytes。

      Pages per second :每秒钟检索的页数。该数字应少于每秒一页。

      Process:

      %Processor Time: 被处理器消耗的处理器时间数量。如果服务器专用于sql server,可接受的最大上限是80-85%

      Page Faults/sec:将进程产生的页故障与系统产生的相比较,以判断这个进程对系统页故障产生的影响。

      Work set: 处理线程最近使用的内存页,反映了每一个进程使用的内存页的数量。如果服务器有足够的空闲内存,页就会被留在工作集中,当自由内存少于一个特定的阈值时,页就会被清除出工作集。

      Inetinfo:Private Bytes:此进程所分配的无法与其它进程共享的当前字节数量。如果系统性能随着时间而降低,则此计数器可以是内存泄漏的最佳指示器。

      Processor:监视“处理器”和“系统”对象计数器可以提供关于处理器使用的有价值的信息,帮助您决定是否存在瓶颈。

      %Processor Time:如果该值持续超过95%,表明瓶颈是CPU。可以考虑增加一个处理器或换一个更快的处理器。

      %User Time:表示耗费CPU的数据库操作,如排序,执行aggregate functions等。如果该值很高,可考虑增加索引,尽量使用简单的表联接,水平分割大表格等方法来降低该值。

       %Privileged Time:(CPU内核时间)是在特权模式下处理线程执行代码所花时间的百分比。如果该参数值和"Physical Disk"参数值一直很高,表明I/O有问题。可考虑更换更快的硬盘系统。另外设置Tempdb in RAM,减低"max async IO","max lazy writer IO"等措施都会降低该值。

      此外,跟踪计算机的服务器工作队列当前长度的 Server Work Queues\ Queue Length 计数器会显示出处理器瓶颈。队列长度持续大于 4 则表示可能出现处理器拥塞。此计数器是特定时间的值,而不是一段时间的平均值。

      % DPC Time:越低越好。在多处理器系统中,如果这个值大于50%并且Processor:% Processor Time非常高,加入一个网卡可能会提高性能,提供的网络已经不饱和。

      Thread

       ContextSwitches/sec: (实例化inetinfo 和dllhost 进程) 如果你决定要增加线程字节池的大小,你应该监视这三个计数器(包括上面的一个)。增加线程数可能会增加上下文切换次数,这样性能不会上升反而会下降。如果 十个实例的上下文切换值非常高,就应该减小线程字节池的大小。

      Physical Disk:

      %Disk Time %:指所选磁盘驱动器忙于为读或写入请求提供服务所用的时间的百分比。如果三个计数器都比较大,那么硬盘不是瓶颈。如果只有%Disk Time比较大,另外两个都比较适中,硬盘可能会是瓶颈。在记录该计数器之前,请在Windows 2000 的命令行窗口中运行diskperf -yD。若数值持续超过80%,则可能是内存泄漏。

      Avg.Disk Queue Length:指读取和写入请求(为所选磁盘在实例间隔中列队的)的平均数。该值应不超过磁盘数的1.5~2 倍。要提高性能,可增加磁盘。注意:一个Raid Disk实际有多个磁盘。

      Average Disk Read/Write Queue Length:指读取(写入)请求(列队)的平均数。

      Disk Reads(Writes)/s: 物理磁盘上每秒钟磁盘读、写的次数。两者相加,应小于磁盘设备最大容量。

      Average Disksec/Read: 指以秒计算的在此盘上读取数据的所需平均时间。

      Average Disk sec/Transfer:指以秒计算的在此盘上写入数据的所需平均时间。

      Network Interface:

      Bytes Total/sec :为发送和接收字节的速率,包括帧字符在内。判断网络连接速度是否是瓶颈,可以用该计数器的值和目前网络的带宽比较

      SQLServer性能计数器:

      Access Methods(访问方法) 用于监视访问数据库中的逻辑页的方法。

      . Full Scans/sec(全表扫描/秒) 每秒不受限的完全扫描数。可以是基本表扫描或全索引扫描。如果这个计数器显示的值比1或2高,应该分析你的查询以确定是否确实需要全表扫描,以及S Q L查询是否可以被优化。

      . Page splits/sec(页分割/秒)由于数据更新操作引起的每秒页分割的数量。

      Buffer Manager(缓冲器管理器):监视 Microsoft® SQL Server? 如何使用: 内存存储数据页、内部数据结构和 过程高速缓存;计数器在 SQL Server 从磁盘读取数据库页和将数据库页写入磁盘时监视物理 I/O。 监视 SQL Server 所使用的内存和计数器有助于确定: 是否由于缺少可用物理内存存储高速缓存中经常访问的数据而导致瓶颈存在。如果是这样,SQL Server 必须从磁盘检索数据。 是否可通过添加更多内存或使更多内存可用于数据高速缓存或 SQL Server 内部结构来提高查询性能。

      SQL Server 需要从磁盘读取数据的频率。与其它操作相比,例如内存访问,物理 I/O 会耗费大量时间。尽可能减少物理 I/O 可以提高查询性能。

      .Page Reads/sec:每秒发出的物理数据库页读取数。这一统计信息显示的是在所有数据库间的物理页读取总数。由于物理 I/O 的开销大,可以通过使用更大的数据高速缓存、智能索引、更高效的查询或者改变数据库设计等方法,使开销减到最小。

      .Page Writes/sec (.写的页/秒) 每秒执行的物理数据库写的页数。

       .Buffer Cache Hit Ratio. 在“缓冲池”(Buffer Cache/Buffer Pool)中没有被读过的页占整个缓冲池中所有页的比率。可在高速缓存中找到而不需要从磁盘中读取的页的百分比。这一比率是高速缓存命中总数除以自 SQL Server 实例启动后对高速缓存的查找总数。经过很长时间后,这一比率的变化很小。由于从高速缓存中读数据比从磁盘中读数据的开销要小得多,一般希望这一数值高一 些。通常,可以通过增加 SQL Server 可用的内存数量来提高高速缓存命中率。计数器值依应用程序而定,但比率最好为90% 或更高。增加内存直到这一数值持续高于90%,表示90% 以上的数据请求可以从数据缓冲区中获得所需数据。

      . Lazy Writes/sec(惰性写/秒)惰性写进程每秒写的缓冲区的数量。值最好为0。

      Cache Manager(高速缓存管理器) 对象提供计数器,用于监视 Microsoft® SQL Server? 如何使用内存存储对象,如存储过程、特殊和准备好的 Transact-SQL 语句以及触发器。

       . Cache Hit Ratio(高速缓存命中率,所有Cache”的命中率。在SQL Server中,Cache可以包括Log Cache,Buffer Cache以及Procedure Cache,是一个总体的比率。) 高速缓存命中次数和查找次数的比率。对于查看SQL Server高速缓存对于你的系统如何有效,这是一个非常好的计数器。如果这个值很低,持续低于80%,就需要增加更多的内存。

      Latches(闩) 用于监视称为闩锁的内部 SQL Server 资源锁。监视闩锁以明确用户活动和资源使用情况,有助于查明性能瓶颈。

      . Average Latch Wait Ti m e ( m s ) (平均闩等待时间(毫秒)) 一个SQL Server线程必须等待一个闩的平均时间,以毫秒为单位。如果这个值很高,你可能正经历严重的竞争问题。

      . Latch Waits/sec (闩等待/秒) 在闩上每秒的等待数量。如果这个值很高,表明你正经历对资源的大量竞争。

       Locks(锁) 提供有关个别资源类型上的 SQL Server 锁的信息。锁加在 SQL Server 资源上(如在一个事务中进行的行读取或修改),以防止多个事务并发使用资源。例如,如果一个排它 (X) 锁被一个事务加在某一表的某一行上,在这个锁被释放前,其它事务都不可以修改这一行。尽可能少使用锁可提高并发性,从而改善性能。可以同时监视 Locks 对象的多个实例,每个实例代表一个资源类型上的一个锁。

      . Number of Deadlocks/sec(死锁的数量/秒) 导致死锁的锁请求的数量

      . Average Wait Time(ms) (平均等待时间(毫秒)) 线程等待某种类型的锁的平均等待时间

      . Lock Requests/sec(锁请求/秒) 每秒钟某种类型的锁请求的数量。

      Memory manager:用于监视总体的服务器内存使用情况,以估计用户活动和资源使用,有助于查明性能瓶颈。监视 SQL Server 实例所使用的内存有助于确定:

      是否由于缺少可用物理内存存储高速缓存中经常访问的数据而导致瓶颈存在。如果是这样,SQL Server 必须从磁盘检索数据。

      是否可以通过添加更多内存或使更多内存可用于数据高速缓存或 SQL Server 内部结构来提高查询性能。

      Lock blocks:服务器上锁定块的数量,锁是在页、行或者表这样的资源上。不希望看到一个增长的值。

      Total server memory:sql server服务器当前正在使用的动态内存总量.

      监视IIS需要的一些计数器

      Internet Information Services Global:

      File Cache Hits %、File CacheFlushes、File Cache Hits

       File Cache Hits %是全部缓存请求中缓存命中次数所占的比例,反映了IIS 的文件缓存设置的工作情况。对于一个大部分是静态网页组成的网站,该值应该保持在80%左右。而File Cache Hits是文件缓存命中的具体值,File CacheFlushes 是自服务器启动之后文件缓存刷新次数,如果刷新太慢,会浪费内存;如果刷新太快,缓存中的对象会太频繁的丢弃生成,起不到缓存的作用。通过比较File Cache Hits 和File Cache Flushes 可得出缓存命中率对缓存清空率的比率。通过观察它两个的值,可以得到一个适当的刷新值(参考IIS 的设置ObjectTTL 、MemCacheSize 、MaxCacheFileSize)

      Web Service:

      Bytes Total/sec:显示Web服务器发送和接受的总字节数。低数值表明该IIS正在以较低的速度进行数据传输。

      Connection Refused:数值越低越好。高数值表明网络适配器或处理器存在瓶颈。

      Not Found Errors:显示由于被请求文件无法找到而无法由服务器满足的请求数(HTTP状态代码404)

  • linux top命令详解

    2008-05-14 16:29:26

    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。

    top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48
    Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombie
    Cpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si
    Mem: 191272k total, 173656k used, 17616k free, 22052k buffers
    Swap: 192772k total, 0k used, 192772k free, 123988k cached

    PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
    1379 root 16 0 7976 2456 1980 S 0.7 1.3 0:11.03 sshd
    14704 root 16 0 2128 980 796 R 0.7 0.5 0:02.72 top
    1 root 16 0 1992 632 544 S 0.0 0.3 0:00.90 init
    2 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
    3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0

    统计信息区
    前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:

    01:06:48 当前时间
    up 1:22 系统运行时间,格式为时:分
    1 user 当前登录用户数
    load average: 0.06, 0.60, 0.48 系统负载,即任务队列的平均长度。
    三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

    第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:

    Tasks: 29 total 进程总数
    1 running 正在运行的进程数
    28 sleeping 睡眠的进程数
    0 stopped 停止的进程数
    0 zombie 僵尸进程数
    Cpu(s): 0.3% us 用户空间占用CPU百分比
    1.0% sy 内核空间占用CPU百分比
    0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
    98.7% id 空闲CPU百分比
    0.0% wa 等待输入输出的CPU时间百分比
    0.0% hi
    0.0% si

    最后两行为内存信息。内容如下:

    Mem: 191272k total 物理内存总量
    173656k used 使用的物理内存总量
    17616k free 空闲内存总量
    22052k buffers 用作内核缓存的内存量
    Swap: 192772k total 交换区总量
    0k used 使用的交换区总量
    192772k free 空闲交换区总量
    123988k cached 缓冲的交换区总量。
    内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,
    该数值即为这些内容已存在于内存中的交换区的大小。
    相应的内存再次被换出时可不必再对交换区写入。

    进程信息区
    统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。

    序号 列名 含义
    a PID 进程id
    b PPID 父进程id
    c RUSER Real user name
    d UID 进程所有者的用户id
    e USER 进程所有者的用户名
    f GROUP 进程所有者的组名
    g TTY 启动进程的终端名。不是从终端启动的进程则显示为 ?
    h PR 优先级
    i NI nice值。负值表示高优先级,正值表示低优先级
    j P 最后使用的CPU,仅在多CPU环境下有意义
    k %CPU 上次更新到现在的CPU时间占用百分比
    l TIME 进程使用的CPU时间总计,单位秒
    m TIME+ 进程使用的CPU时间总计,单位1/100秒
    n %MEM 进程使用的物理内存百分比
    o VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
    p SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。
    q RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
    r CODE 可执行代码占用的物理内存大小,单位kb
    s DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
    t SHR 共享内存大小,单位kb
    u nFLT 页面错误次数
    v nDRT 最后一次写入到现在,被修改过的页面数。
    w S 进程状态。
    D=不可中断的睡眠状态
    R=运行
    S=睡眠
    T=跟踪/停止
    Z=僵尸进程
    x COMMAND 命令名/命令行
    y WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
    z Flags 任务标志,参考 sched.h

    默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通过下面的快捷键来更改显示内容。

    更改显示内容
    通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。

    按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。

    按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。

    命令使用

    1. 工具(命令)名称
    top
    2.工具(命令)作用
    显示系统当前的进程和其他状况; top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止. 比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定.
    3.环境设置
    在Linux下使用。
    4.使用方法
    4.1使用格式
    top [-] [d] [p] [q] [c] [C] [S] [s] [n]
    4.2参数说明
    d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。
    p 通过指定监控进程ID来仅仅监控某个进程的状态。
    q该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。
    S 指定累计模式
    s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
    i 使top不显示任何闲置或者僵死进程。
    c 显示整个命令行而不只是显示命令名
    4.3其他
      下面介绍在top命令执行过程中可以使用的一些交互命令。从使用角度来看,熟练的掌握这些命令比掌握选项还重要一些。这些命令都是单字母的,如果在命令行选项中使用了s选项,则可能其中一些命令会被屏蔽掉。
      Ctrl+L 擦除并且重写屏幕。
      h或者? 显示帮助画面,给出一些简短的命令总结说明。
      k 终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。
      i 忽略闲置和僵死进程。这是一个开关式命令。
      q 退出程序。
      r 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。
      S 切换到累计模式。
      s 改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。
      f或者F 从当前显示中添加或者删除项目。
      o或者O 改变显示项目的顺序。
      l 切换显示平均负载和启动时间信息。
      m 切换显示内存信息。
      t 切换显示进程和CPU状态信息。
      c 切换显示命令名称和完整命令行。
      M 根据驻留内存大小进行排序。
      P 根据CPU使用百分比大小进行排序。
      T 根据时间/累计时间进行排序。
    W 将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。

  • vmstat

    2008-05-14 15:13:23


      实时查看内存使用情况

    vmstat 2(秒数)
    vmstat 5 40

    vmstat 可用来记录 processes, memory, paging, block IO, traps, 与cpu activity。

    例如

    $ vmstat 1 # 1 是更新速度,单位为秒
    procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
    r b swpd free buff cache si so bi bo in cs us sy id wa
    1 0 549368 13316 102388 91992 12 6 9 8 2 12 72 3 25 0
    2 0 549368 13316 102388 91992 0 0 0 0 156 1516 98 2 0 0
    2 0 549368 13312 102388 91992 0 0 0 0 125 534 99 1 0 0

    ....

    第一列與第二列所代表是執行程式的資訊,接下來的是記憶體、swap、io、systm 與 cpu。

    Procs
    r: The number of processes waiting for run time.
    b: The number of processes in uninterruptible sleep.

    Memory
    swpd: the amount of virtual memory used.
    free: the amount of idle memory.
    buff: the amount of memory used as buffers.
    cache: the amount of memory used as cache.
    inact: the amount of inactive memory. (-a option)
    active: the amount of active memory. (-a option)

    Swap
    si: Amount of memory swapped in from disk (/s).
    so: Amount of memory swapped to disk (/s).

    IO
    bi: Blocks received from a block device (blocks/s).
    bo: Blocks sent to a block device (blocks/s).
    System
    in: The number of interrupts per second, including the clock.
    cs: The number of context switches per second.

    CPU
    These are percentages of total CPU time.
    us: Time spent running non-kernel code. (user time, including nice time)

    sy: Time spent running kernel code. (system time)
    id: Time spent idle. Prior to Linux 2.5.41, this includes IO-wait time.
    wa: Time spent waiting for IO. Prior to Linux 2.5.41, shown as zero.

  • 命名规则

    2008-04-14 13:15:01

    Forbidden Usernames:

    qa, www, dev, blog, admin,administrator, forum, wiki

    [additional suggestions: Root, Bin, daemon, adm, lp, sync, shutdown, halt, mail, news, uucp, operator, games, nobody]

    URL Constraints

    Swear words NOT allowed: fuck, shit, piss, cocksucker, cunt

    User Name needs to be four or more letters/numbers

    Dashes and dots ARE allowed [example: coco.conn or coco_conn]

    Special characters are NOT allowed [example: &,^,$, etc.]

  • web设计原则

    2008-04-02 18:40:31

    指导原则

    一.别让我思考

    目标是让每个页面都不言而喻,如果能够达到这个目标,普通用户只要看它一眼就能知道是什么内容,知道任何使用它

    二.人们实际上是如何使用web的

    1.不是阅读,而是扫描

    2.不作最佳选择,而是满意即可

    3.不是追根到底,而是勉强应付

    三.广告牌设计101法则

    1.建立清楚的视觉层次

    (1)愈重要的部分愈突出

    (2)逻辑上相关的部分在视觉上也相关

    (3)逻辑上包含的部分在视觉上进行嵌套

    2.习惯用法是你的好帮手

    (1)它们非常有用

    (2)设计师通常不愿意利用它们

    如果不打算使用一种已有的web习惯用法,你必须确认你在使用一种1)同样清楚,同样不言而喻,这样就和习惯用法一样好了2)带来很大的价值,因此值得用户付出一点努力来学习方法.如果打算创新,那么你必须理解你准备换用的方法的价值,而很多设计师都低估习惯用法提供的价值.

    3.把页面划分成明确定义的区域

    4.明显标识可以点击的地方

    5.降低视觉噪音

    (1)眼花缭乱

    (2)背景燥声

    四.点击多少次都没有关系,只要每次点击都是无须思考,明确无误的选择

    五.省略不必要的文字

    1.欢迎次必须消灭

    2.指示说明必须消灭

    必须正确处理的几个方面

    六.导航设计

    如果在网站上找不到方向,人们不会使用你的网站.

    1.网络导航101法则

    很多方面,等你进入站点时也遵循如下过程

    (1)你通常是为了寻找某个目标

    (2)你会决定先询问还是先浏览

    (3)如果选择浏览,你将通过标志的引导在层次结构中穿行

    (4)最后,如果找不到想要的东西,你会离开.

    2.无法承受的浏览之轻

    在web上的体验缺少了许多我们在生活中用来 同空间相处的感觉,下面是web空间诡异之处

    (1)感觉不到站点大小

    (2)感觉不到方向

    (3)感觉不到位置

    3.被忽略了的导航用途

    导航有两个显而易见的用途:帮组我们找到想要的任何东西和告诉我们现在身处何处

    而且还有以下用途

    (1)给我们一些固定的感觉

    (2)告诉我们当前位置

    通过让层次结构可视化,导航可以告诉我们网站上有些什么.导航表现了内容,而且表现站点比引导或告诉我们位置更重要

    (3)告诉我们如何使用网站

    (4)给我们对网站构造者的信心

    4.web导航习惯用法

  • 易用性测试(引用贴)

    2007-12-13 17:35:03

    通常对易用性有如下定义: 
    易见Easy to discover:单单凭观察,用户就应知道设备的状态,该设备供选择可以采取的行动。 
    易学Easy to learn:不通过帮助文件或通过简单的帮助文件,用户就能对一个陌生的产品有清晰的认识。 
    易用Easy to use:用户不翻阅手册就能使用软件。 

    对于易用性测试可遵循以下原则:

    1、完成相同或相近功能的按钮用Frame 框起来,常用按钮要支持快捷方式。

    2、完成同一功能或任务的元素放在集中位置,减少鼠标移动的距离。

    3、按功能将界面划分局域块,用Frame 框起来,并要有功能说明或标题。

    4、界面要支持键盘自动浏览按钮功能,即按Tab 键的自动切换功能。

    5、界面上首先应输入的信息和重要信息的控件在Tab 顺序中应当靠前,位置也应放在窗口上较醒目的位置。

    6、同一界面上的控件数最好不要超过10 个,多于10 个时可以考虑使用分页界面显示。

    7、分页界面要支持在页面间的快捷切换,常用组合快捷键Ctrl+Tab

    8、默认按钮要支持Enter 操作,即按Enter 后自动执行默认按钮对应操作。

    9、可输入控件检测到非法输入后应给出说明信息并能自动获得焦点。

    10、Tab 键的顺序与控件排列顺序要一直,目前流行总体从上到下,同时行间从左到右的方式。

    11、复选框和选项框按选择几率的高底而先后排列。

    12、复选框和选项框要有默认选项,并支持Tab 选择。

    13、选项数相同时多用选项框而不用下拉列表框。

    14、界面空间较小时使用下拉框而不用选项框。

    15、选项数较少时使用选项框,相反使用下拉列表框。

    16、专业性强的软件要使用相关的专业术语,通用性界面则提倡使用通用性词眼。

    17、对于界面输入重复性高的情况,该界面应全面支持键盘操作,即在不使用鼠标的情况下采用键盘进行操作。

    对于易用性测试还可从以下几个方面入手:

    1、导航测试 

    导航描述了用户在一个页面内操作的方式,在不同的用户接口控制之间,例如按钮、对话框、列表和窗口等;或在不同的连接页面之间。通过考虑下列问题,可以决定一个应用系统是否易于导航:导航是否直观?系统的主要部分是否可通过主页存取?系统是否需要站点地图、搜索引擎或其他的导航帮助? 
    在一个页面上放太多的信息往往起到与预期相反的效果。应用系统的用户趋向于目的驱动,很快地扫描一个应用系统,看是否有满足自己需要的信息,如果没有,就会很快地离开。很少有用户愿意花时间去熟悉应用系统的结构,因此,应用系统导航帮助要尽可能地准确。导航的另一个重要方面是应用系统的页面结构、导航、菜单、连接的风格是否一致。确保用户凭直觉就知道应用系统里面是否还有内容,内容在什么地方。
    应用系统的层次一旦决定,就要着手测试用户导航功能,让最终用户参与这种测试,效果将更加明显。

    2、图形测试 

    在应用系统中,适当的图片和动画既能起到广告宣传的作用,又能起到美化页面的功能。一个应用系统的图形可以包括图片、动画、边框、颜色、字体、背景、按钮等。图形测试的内容有:

    (1)要确保图形有明确的用途,图片或动画不要胡乱地堆在一起,以免浪费传输时间。应用系统的图片尺寸要尽量地小,并且要能清楚地说明某件事情,一般都链接到某个具体的页面。

    (2)验证所有页面字体的风格是否一致。

    (3)背景颜色应该与字体颜色和前景颜色相搭配。

    (4)图片的大小和质量也是一个很重要的因素,一般采用JPG或GIF压缩。

    3、内容测试

    内容测试用来检验应用系统提供信息的正确性、准确性和相关性。
    信息的正确性是指信息是可靠的还是误传的。例如,在商品价格列表中,错误的价格可能引起财政问题甚至导致法律纠纷;信息的准确性是指是否有语法或拼写错误。这种测试通常使用一些文字处理软件来进行,例如使用Microsoft Word的"拼音与语法检查"功能;信息的相关性是指是否在当前页面可以找到与当前浏览信息相关的信息列表或入口,也就是一般Web站点中的所谓"相关文章列表"。

    4、整体界面测试

    整体界面是指整个应用系统的页面结构设计,是给用户的一个整体感。例如:当用户浏览应用系统时是否感到舒适,是否凭直觉就知道要找的信息在什么地方?整个应用系统的设计风格是否一致?
    对整体界面的测试过程,其实是一个对最终用户进行调查的过程。一般应用系统采取在主页上做一个调查问卷的形式,来得到最终用户的反馈信息。对所有的可用性测试来说,都需要有外部人员(与应用系统开发没有联系或联系很少的人员)的参与,最好是最终用户的参与。 


    界面

    界面是软件与用户交互的最直接的层面,界面的好坏决定用户对软件的第一印象。而设计优良的界面能够引导用户自己完成相应的操作,起到向导的作用。同时界面如同人的面孔,具有吸引用户的直接优势。设计合理的界面能给用户带来轻松愉悦的感受和成功的感觉,相反由于界面设计的失败,让用户有挫败感,再实用强大的功能都可能在用户的畏惧与放弃中付诸东流。
    目前流行的界面风格有三种方式:多窗体、单窗体以及资源管理器风格,无论那种风格,以下原则应该得到重视或参考。在测试人员进行测试过程中,也可参考以下原则对产品进行评价。

    1、规范性原则

    通常界面设计都按Windows 界面的规范来设计,即包含“菜单条、工具栏、工具厢、状态栏、滚动条、右键快捷菜单”的标准格式,可以说:界面遵循规范化的程度越高,则易用性相应的就越好。小型软件一般不提供工
    具厢。
    规范性细则:

    (1)常用菜单要有命令快捷方式。

    (2)完成相同或相近功能的菜单用横线隔开放在同一位置。

    (3)菜单前的图标能直观的代表要完成的操作。

    (4)菜单深度一般要求最多控制在三层以内。

    (5)工具栏要求可以根据用户的要求自己选择定制。

    (6)相同或相近功能的工具栏放在一起。

    (7)工具栏中的每一个按钮要有及时提示信息。

    (8)一条工具栏的长度最长不能超出屏幕宽度。

    (9)工具栏的图标能直观的代表要完成的操作。

    (10)系统常用的工具栏设置默认放置位置。

    (11)工具栏太多时可以考虑使用工具厢。

    (12)工具厢要具有可增减性,由用户自己根据需求定制。

    (13)工具厢的默认总宽度不要超过屏幕宽度的1/5。

    (14)状态条要能显示用户切实需要的信息,常用的有:目前的操作、系统状态、用户位置、用户信息、提示信息、错误信息、使用单位信息及软件开发商信息等,如果某一操作需要的时间较长,还应该显示进度条和进程提示

    (15)滚动条的长度要根据显示信息的长度或宽度能及时变换,以利于用户了解显示信息的位置和百分比。

    (16)状态条的高度以放置五好字为宜,滚动条的宽度比状态条的略窄。

    (17)菜单和工具条要有清楚的界限;菜单要求凸出显示,这样在移走工具条时仍有立体感。

    (18)菜单和状态条中通常使用5 号字体。工具条一般比菜单要宽,但不要宽的太多,否则看起来很不协调。

    (19)右键快捷菜单采用与菜单相同的准则。

    2、帮助设施原则

    系统应该提供详尽而可靠的帮助文档,在用户使用产生迷惑时可以自己寻求解决方法。
    帮助设施细则:

    (1)帮助文档中的性能介绍与说明要与系统性能配套一致。

    (2)打包新系统时,对作了修改的地方在帮助文档中要做相应的修改,做到版本统一。

    (3)操作时要提供及时调用系统帮助的功能。常用F1。

    (4)在界面上调用帮助时应该能够及时定位到与该操作相对的帮助位置。也就是说帮助要有即时针对性。

    (5)最好提供目前流行的联机帮助格式或HTML 帮助格式。

    (6)用户可以用关键词在帮助索引中搜索所要的帮助,当然也应该提供帮助主题词。

    (7)如果没有提供书面的帮助文档的话,最好有打印帮助的功能。

    (8)在帮助中应该提供我们的技术支持方式,一旦用户难以自己解决可以方便的寻求新的帮助方式。


    3、合理性原则

    屏幕对角线相交的位置是用户直视的地方,正上方四分之一处为易吸引用户注意力的位置,在放置窗体时要注意利用这两个位置。
    合理性细则:

    (1) 父窗体或主窗体的中心位置应该在对角线焦点附近。

    (2) 子窗体位置应该在主窗体的左上角或正中。

    (3) 多个子窗体弹出时应该依次向右下方偏移,以显示窗体出标题为宜。

    (4) 重要的命令按钮与使用较频繁的按钮要放在界面上注目的位置。

    (5)错误使用容易引起界面退出或关闭的按钮不应该放在易点位置。横排开头或最后与竖排最后为易点位置。

    (6) 与正在进行的操作无关的按钮应该加以屏蔽。

    (7) 对可能造成数据无法恢复的操作必须提供确认信息,给用户放弃选择的机会。

    (8) 非法的输入或操作应有足够的提示说明。

    (9)对运行过程中出现问题而引起错误的地方要有提示,让用户明白错误出处,避免形成无限期的等待。

    (10)提示、警告、或错误说明应该清楚、明了、恰当并且应避免英文提示的出现。

    4、美观与协调性原则

    界面应该大小适合美学观点,感觉协调舒适,能在有效的范围内吸引用户的注意力。
    美观与协调性细则:

    (1)长宽接近黄金点比例,切忌长宽比例失调、或宽度超过长度。

    (2)布局要合理,不宜过于密集,也不能过于空旷,合理的利用空间。

    (3)按钮大小基本相近,忌用太长的名称,免得占用过多的界面位置。

    (4)按钮的大小要与界面的大小和空间要协调。

    (5)避免空旷的界面上放置很大的按钮。

    (6)放置完控件后界面不应有很大的空缺位置。

    (7)字体的大小要与界面的大小比例协调,通常使用的字体中宋体9-12 较为美观,很少使用超过12号的字体。

    (8)前景与背景色搭配合理协调,反差不宜太大,最好少用深色,如大红、大绿等。常用色考虑使用Windows 界面色调。

    (9)如果使用其他颜色,主色要柔和,具有亲和力与磁力,坚决杜绝刺目的颜色。

    (10)大型系统常用的主色有"#E1E1E1"、"#EFEFEF"、"#C0C0C0"等。

    (11)界面风格要保持一致,字的大小、颜色、字体要相同,除非是需要艺术处理或有特殊要求的地方。

    (12)如果窗体支持最小化和最大化或放大时,窗体上的控件也要随着窗体而缩放;切忌只放大窗体而忽略控件的缩放。

    (13)对于含有按钮的界面一般不应该支持缩放,即右上角只有关闭功能。

    (14)通常父窗体支持缩放时,子窗体没有必要缩放。

    (15)如果能给用户提供自定义界面风格则更好,由用户自己选择颜色、字体等。

    5、菜单位置原则

    菜单是界面上最重要的元素,菜单位置按照按功能来组织。
    菜单设置细则:

    (1)菜单通常采用“常用--主要--次要--工具--帮助”的位置排列,符合流行的Windows 风格。

    (2)常用的有“文件”、“编辑”,“查看”等,几乎每个系统都有这些选项,当然要根据不同的系统有所取舍。

    (3)下拉菜单要根据菜单选项的含义进行分组,并切按照一定的规则进行排列,用横线隔开。

    (4)一组菜单的使用有先后要求或有向导作用时,应该按先后次序排列。

    (5)没有顺序要求的菜单项按使用频率和重要性排列,常用的放在开头,不常用的靠后放置;重要的放在开头,次要的放在后边。

    (6)如果菜单选项较多,应该采用加长菜单的长度而减少深度的原则排列。

    (7)菜单深度一般要求最多控制在三层以内。

    (8)对常用的菜单要有快捷命令方式,组合原则见7。

    (9)对与进行的操作无关的菜单要用屏蔽的方式加以处理,如果采用动态加载方式—即只有需要的菜单才显示—最好。

    (10)菜单前的图标不宜太大,与字高保持一直最好。

    (11)主菜单的宽度要接近,字数不应多于四个,每个菜单的字数能相同最好。

    (12)主菜单数目不应太多,最好为单排布置。

    6、独特性原则

    如果一味的遵循业界的界面标准,则会丧失自己的个性。在框架符合以上规范的情况下,设计具有自己独特风格的界面尤为重要。尤其在商业软件流通中有着很好的迁移默化的广告效用。
    独特性细则:

    (1)安装界面上应有单位介绍或产品介绍,并有自己的图标或徽标。

    (2)主界面,最好是大多数界面上要有公司图标或徽标。

    (3)登录界面上要有本产品的标志,同时包含公司图标或徽标。

    (4)帮助菜单的“关于”中应有版权和产品信息。

    (5)公司的系列产品要保持一直的界面风格,如背景色、字体、菜单排列方式、图标、安装过程、按钮用语等应该大体一致。

    (6)应为产品制作特有的图标并区别于公司图标或徽标

    7、快捷方式的组合原则

    在菜单及按钮中使用快捷键可以让喜欢使用键盘的用户操作得更快一些,在西文Windows 及其应用软件中快捷键的使用大多是一致的。
    菜单中:

    (1)面向事务的组合有:Ctrl-D 删除;Ctrl-F 寻找;Ctrl –H 替换;Ctrl-I 插入;Ctrl-N 新记录;Ctrl-S 保存Ctrl-O 打开。

    (2)列表:Ctrl-R ,Ctrl-G 定位;Ctrl-Tab 下一分页窗口或反序浏览同一页面控件。

    (3)编辑:Ctrl-A 全选;Ctrl-C 拷贝;Ctrl-V 粘贴;Ctrl-X 剪切;Ctrl-Z 撤消操作;Ctrl-Y 恢复操作。

    (4)文件操作:Ctrl-P 打印;Ctrl-W 关闭。

    (5)系统菜单:Alt-A 文件;Alt-E 编辑;Alt-T 工具;Alt-W 窗口;Alt-H 帮助。

    (6)MS Windows 保留键:Ctrl-Esc 任务列表;Ctrl-F4 关闭窗口;Alt-F4 结束应用;Alt-Tab 下一应用;Enter 缺省按钮/确认操作;Esc取消按钮/取消操作;Shift-F1 上下文相关帮助。

    按钮中:可以根据系统需要而调节,以下只是常用的组合。

    Alt-Y 确定(是);Alt-C 取消;Alt-N 否;Alt-D 删除;Alt-Q 退出;Alt-A 添加;Alt-E 编辑;Alt-B 浏览;Alt-R 读;Alt-W 写。
    这些快捷键也可以作为开发中文应用软件的标准,但亦可使用汉语拼音的开头字母。

    8、排错性考虑原则

    在界面上通过下列方式来控制出错几率,会大大减少系统因用户人为的错误引起的破坏。开发者应当尽量周全地考虑到各种可能发生的问题,使出错的可能降至最小。如应用出现保护性错误而退出系统,这种错误最容易使用户对软件失去信心。因为这意味着用户要中断思路,并费时费力地重新登录,而且已进行的操作也会因没有存盘而全部丢失。
    排错性细则:

    (1)最重要的是排除可能会使应用非正常中止的错误。

    (2)应当注意尽可能避免用户无意录入无效的数据。

    (3)采用相关控件限制用户输入值的种类。

    (4)当用户作出选择的可能性只有两个时,可以采用单选框。

    (5)当选择的可能再多一些时,可以采用复选框,每一种选择都是有效的,用户不可能输入任何一种无效的选择。

    (6)当选项特别多时,可以采用列表框,下拉式列表框。

    (7)在一个应用系统中,开发者应当避免用户作出未经授权或没有意义的操作。

    (8)对可能引起致命错误或系统出错的输入字符或动作要加限制或屏蔽。

    (9)对可能发生严重后果的操作要有补救措施。通过补救措施用户可以回到原来的正确状态。

    (10)对一些特殊符号的输入、与系统使用的符号相冲突的字符等进行判断并阻止用户输入该字符。

    (11)对错误操作最好支持可逆性处理,如取消系列操作。

    (12)在输入有效性字符之前应该阻止用户进行只有输入之后才可进行的操作。

    (13)对可能造成等待时间较长的操作应该提供取消功能。

    (14)特殊字符常有;;’”><,`‘:“[”{、\|}]+=")-(_*&&^%$#@!
    ,。?/还有空格。

    (15)与系统采用的保留字符冲突的要加以限制。

    (16)在读入用户所输入的信息时,根据需要选择是否去掉前后空格。

    (17)有些读入数据库的字段不支持中间有空格,但用户切实需要输入中间空格,这时要在程序中加以处理。

    9、多窗口的应用与系统资源原则

    设计良好的软件不仅要有完备的功能,而且要尽可能的占用最底限度的资源。

    (1)在多窗口系统中,有些界面要求必须保持在最顶层,避免用户在打开多个窗口时,不停的切换甚至最小化其他窗口来显示该窗口。

    (2)在主界面载入完毕后自动卸出内存,让出所占用的WINDOWS 系统资源。

    (3)关闭所有窗体,系统退出后要释放所占的所有系统资源,除非是需要后台运行的系统。

    (4)尽量防止对系统的独占使用。

  • 易用性测试

    2007-12-13 17:29:21

      易用性(Useability)是交互的适应性、功能性和有效性的集中体现。
             人体工程学(ergonomics)是一门将日常使用的东西设计为易于使用和实用性强的学科。
             在 2003 年颁布的 GB/T16260-2003(ISO 9126-2001) 《软件工程 产品质量》质量模型中,提出易用性包含易理解性、易学习性和易操作性;即易用性是指在指定条件下使用时,软件产品被理解、学习、使用和吸引用户的能力。
              (1)易理解性;(2)易学习性;(3)易操作性;(4)吸引性;(5)依从性。
             
             
             易用性测试包括针对应用程序的测试,同时还包括对用户手册系统文档的测试。通常采用质量外部模型来评价易用性。包括如下方面的测试:
              (1)易理解性测试;
              (2)易学性测试;
              (3)易操作性测试;
              (4)吸引性测试;
              (5)易用的依从性测试。
             
             
             易用性测试方法有:静态测试;动态测试;动态和静态结合测试。
             
             人体工程学的主要目标是达到易用性。
             1、用户界面测试
             用于与软件交互的方式称为用户界面或UI。
             2、优秀UI的构成
             软件测试员要负责测试软件的易用性,包括其用户界面。
             记住,软件测试员不需要去设计UI,只需要把自己当作用户,然后去找出UI中的问题。
             优秀UI具备的七个要素:
             (1)符合标准和规范
             最重要的用户界面要素是软件符合现行的标准和规范——或者有真正站得住脚的不符合的理由。
             注意:如果测试在特定平台上运行的软件,就需要把该平台的标准和规范作为产品说明书的补充内容。像对待产品说明书一样,根据它建立测试用例。
             这些标准和规范由软件易用性专家开发。它们是经由大量正规测试、使用、尝试和错误而设计出的方便用户的规则。
             也并非要完全遵守准则,有时开发小组可能想对标准和规范有所提高。
             平台也可能没有标准,也许测试的软件就是平台本身。
             在这种情况下,设计小组可能成为软件易用性标准的创立者。
             (2)直观
             用户界面是否洁净、不唐突、不拥挤?
             UI的组织和布局合理吗?
             有多余功能吗?
             帮助系统有效吗?
             (3)一致
             如果软件或者平台有一个标准,就要遵守它。如果没有,就要注意软件的特性,确保相似的操作以相似的方式进行。
             快捷键和菜单选项
             术语和命名
             听众
             诸如OK和Cancel按钮的位置。
             (4)灵活
             多种视图的选择:
             状态跳转
             状态终止和跳过
             数据输入和输出
             (5)舒适
             软件使用起来应该舒适,不能给用户工作制造障碍和困难。
             恰当;
             错误处理;
             性能。
             (6)正确
             要测试正确性,就是测试UI是否做了该做的事。
             注意:市场定位偏差、语言和拼写、不良媒体、WYSIWYG(所见即所得)。
             (7)实用
             是否实用事优秀用户界面的最后一个要素。
             3、为有残疾障碍的人员测试:辅助选项测试
             辅助选项测试(accessibility testing)也就是为有残疾障碍的人测试。
             残疾有许多种:视力损伤、听力损伤、运动损伤、认知和语言障碍。
             (1)法律要求:
             开发残疾人可以使用的用户界面的软件有一些法律规定。在美国,有3条法律:
             美国公民残疾人条例(ADA)声明
             居民条例第508款
             通信条例第255款
             (2)软件中的辅助特性
             软件可以有两种方式提供辅助。
             最容易的方式是利用平台或者操作系统内置的支持。
             如果测试的软件不在这些平台上运行,或者本身就是平台,就需要定义、编制和测试自己的辅助选项。
             注意:如果正在测试产品的易用性,一定要专门为辅助选项建立测试用例。
             如windows系统,提供了:粘滞键,筛选键,切换键,声音卫士,声音显示,高对比度,鼠标键,串行键。
             4、总结
             总之,不要让易用性测试的模糊性和主观性阻碍测试工作。易用性测试的模糊和主观是固然的,即使设计用户界面的专家也会承认有的地方是这样的。
  • 个人所得税算法

    2007-12-13 15:45:33

    工资薪金个人所得税适用九级超额累进税率,将收入分为九个级别,收入越高适用的税率越高,具体参照下列税率表:

      级数应纳税所得额 税率 速算扣除数

      1 不超过500元5% 0元

      2 超过500元至2000元 10%25元

      3 超过2000元至5000元15%125元

      4 超过5000元至20000元 20%375元

      5 超过20000元至40000元25%1375元

      6 超过40000元至60000元30%3375元

      7 超过60000元至80000元35%6375元

      8 超过80000元至100000元 40%10375元

      9 超过100000元45%15375元

      (本表中的应纳税所得额是指收入额减去可扣除费用后的余额,速算扣除数是为简化税款计算方法而设计的一个算术参数)

      计算的公式为:(收入额-强制保险等-费用扣除额)×税率-速算扣除数=应纳税款

      

  • 16个经典面试问题回答思路

    2007-12-05 18:09:28

    问题一:"请你自我介绍一下"2
            思路: 1、这是面试的必考题目。 2、介绍内容要与个人简历相一致。 3、表述方式上尽量口语化。 4、要切中要害,不谈无关、无用的内容。 5、条理要清晰,层次要分明。6、事先最好以文字的形式写好背熟。

            问题二:"谈谈你的家庭情况"
    思路:1、 况对于了解应聘者的性格、观念、心态等有一定的作用,这是招聘单位问该问题的主要原因。 2、 简单地罗列家庭人口。 3、 宜强调温馨和睦的家庭氛围。 4、 宜强调父母对自己查看更多教育的内容教育的重视。 5、 宜强调各位家庭成员的良好状况。 6、 宜强调家庭成员对自己工作的支持。 7、 宜强调自己对家庭的责任感。

            问题三:"你有什么业余爱好?
    思路: 1、 业余爱好能在一定程度上反映应聘者的性格、观念、心态,这是招聘单位问该问题的主要原因。 2、 最好不要说自己没有业余爱好。 3、 不要说自己有那些庸俗的、令人感觉不好的爱好。 4、 最好不要说自己仅限于读书、听音乐、上网,否则可能令面试官怀疑应聘者性格孤僻。 5、 最好能有一些户外的业余爱好来"点缀"你的形象。

            问题四:"你最崇拜谁?
            思路: 1、 最崇拜的人能在一定程度上反映应聘者的性格、观念、心态,这是面试官问该问题的主要原因。 2、 不宜说自己谁都不崇拜。 3、 不宜说崇拜自己。 4、 不宜说崇拜一个虚幻的、或是不知名的人。 5、 不宜说崇拜一个明显具有负面形象的人。 6、 所崇拜的人人最好与自己所应聘的工作能"搭"上关系。 7、 最好说出自己所崇拜的人的哪些品质、哪些思想感染着自己、鼓舞着自己。
     
            问题五:"你的座右铭是什么?
            思路: 1、座右铭能在一定程度上反映应聘者的性格、观念、心态,这是面试官问这个问题的主要原因。 2、不宜说那些医引起不好联想的座右铭。 3、不宜说那些太抽象的座右铭。 4、不宜说太长的座右铭。 5、座右铭最好能反映出自己某种优秀品质。 6、 参考答案——"只为成功找方法,不为失败找借口

            问题六:"谈谈你的缺点";
            思路: 1、 不宜说自己没缺点。 2、 不宜把那些明显的优点说成缺点。 3、 不宜说出严重影响所应聘工作的缺点。 4、 不宜说出令人不放心、不舒服的缺点。 5、 可以说出一些对于所应聘工作"无关紧要"的缺点,甚至是一些表面上看是缺点,从工作的角度看却是优点的缺点。G

            问题七:"谈一谈你的一次失败经历"
            思路: 1、 不宜说自己没有失败的经历。 2、 不宜把那些明显的成功说成是失败。 3、 不宜说出严重影响所应聘工作的失败经历, 4、 所谈经历的结果应是失败的。 5、 宜说明失败之前自己曾信心白倍、尽心尽力。 6、 说明仅仅是由于外在客观原因导致失败。 7、 失败后自己很快振作起来,以更加饱满的热情面对以后的工作。
      _
            问题八:"你为什么选择我们公司?"P}
            思路: 1、 面试官试图从中了解你的动机、愿望以及对此项工作的态度。 2、 建议从行业、企业和岗位这三个角度来回答。 3、 参考答案——"我十分看好贵公司所在的行业,我认为贵公司十分重视人才,而且这项工作很适合我,相信自己一定能做好。

            问题九:"对这项工作,你有哪些可预见的困难?
            思路: 1、 不宜直接说出具体的困难,否则可能令对方怀疑应聘者不行。 2、 可以尝试迂回战术,说出应聘者对困难所持有的态度——"工作中出现一些困难是正常的,也是难免的,但是只要有坚忍不拔的毅力、良好的合作精神以及事前周密 而充分的准备,任何困难都是可以克服的。"}u_{
      
            问题十:"如果我录用你,你将怎样开展工作
            思路: 1、 如果应聘者对于应聘的职位缺乏足够的了解,最好不要直接说出自己开展工作的具体办法, 2、 可以尝试采用迂回战术来回答,如"首先听取领导的指示和要求,然后就有关情况进行了解和熟悉,接下来制定一份近期的工作计划并报领导批准,最后根据计划开 展工作。

            问题十一:"与上级意见不一是,你将怎么办
            思路: 1、 一般可以这样回答"我会给上级以必要的解释和提醒,在这种情况下,我会服从上级的意见。" 2、 如果面试你的是总经理,而你所应聘的职位另有一位经理,且这位经理当时不在场,可以这样回答:"对于非原则性问题,我会服从上级的意见,对于涉及公司利益 的重大问题,我希望能向更高层领导反映。

            问题十二:"我们为什么要录用你?
            思路: 1、 应聘者最好站在招聘单位的角度来回答。 2、 招聘单位一般会录用这样的应聘者:基本符合条件、对这份共组感兴趣、有足够的信心。 3、 如"我符合贵公司的招聘条件,凭我目前掌握的技能、高度的责任感和良好的饿适应能力及学习能力 ,完全能胜任这份工作。我十分希望能为贵 公司服务,如果贵公司给我这个机会,我一定能成为贵公司的栋梁!

            问题十三:"你能为我们做什么?
            思路: 1、 基本原则上"投其所好"。 2、 回答这个问题前应聘者最好能"先发制人",了解招聘单位期待这个职位所能发挥的作用。 3、 应聘者可以根据自己的了解,结合自己在专业领域的优势来回答这个问题。

            问题十四:"你是应届,缺乏经验,如何能胜任这项工作?
            思路: 1、 如果招聘单位对应届毕业生的应聘者提出这个问题,说明招聘单位并不真正在乎"经验",关键看应聘者怎样回答。 2、 对这个问题的回答最好要体现出应聘者的诚恳、机智、果敢及敬业。 3、 如"作为应届毕业生,在工作经验方面的确会有所欠缺,因此在读书期间我一直利用各种机会在这个行业里做兼职。我也发现,实际工作远比书本知识丰富、复杂。 但我有较强的责任心、适应能力和学习能力,而且比较勤奋,所以在兼职中均能圆满完成各项工作,从中获取的经验也令我受益非浅。请贵公司放心,学校所学及兼 职的工作经验使我一定能胜任这个职位。

           问题十五:"你希望与什么样的上级共事?
           思路: 1、 通过应聘者对上级的"希望"可以判断出应聘者对自我要求的意识,这既上一个陷阱,又上一次机会。 2、 最好回避对上级具体的希望,多谈对自己的要求。 3、 如"做为刚步入社会新人,我应该多要求自己尽快熟悉环境、适应环境,而不应该对环境提出什么要求,只要能发挥我的专长就可以了。
    _
           问题十六:"您在前一家公司的离职原因是什么?
           思路: 1、 最重要的是:应聘者要使找招聘单位相信,应聘者在过往的单位的"离职原因"在此家招聘单位里不存在。 2、 避免把"离职原因"说得太详细、太具体。 3、 不能掺杂主观的负面感受,如"太幸苦"、"人际关系复杂"、"管理太混乱"、"公司不重视人才"、"公司排斥我们某某的员工"等。 4、 但也不能躲闪、回避,如"想换换环境"、"个人原因"等。 5、 不能涉及自己负面的人格特征,如不诚实、懒惰、缺乏责任感、不随和等。 6、 尽量使解释的理由为应聘者个人形象添彩。 7、 如"我离职是因为这家公司倒闭。我在公司工作了三年多,有较深的感情。从去年始,由于市场形势突变,公司的局面急转直下。到眼下这一步我觉得很遗憾,但还 要面对显示,重新寻找能发挥我能力的舞台。" 同一个面试问题并非只有一个答案,而同一个答案并不是在任何面试场合都有效,关键在于应聘者掌握了规律后,对面试的具体情况进行把握,有意识地揣摩面试官 提出问题的心理背景,然后投其所好。

  • 性能测试工程师的面试题

    2007-12-05 17:45:15

    1.什么是负载测试?什么是性能测试?
     
    2.性能测试包含了哪些测试(至少举出3种)
     
    3.简述性能测试的步骤
     
    4.简述使用Loadrunner的步骤
     
    5.什么时候可以开始执行性能测试?
     
    6.LoadRunner由哪些部件组成?
     
    7.你使用LoadRunner的哪个部件来录制脚本?
     
    8.LoadRunner的哪个部件可以模拟多用户并发下回放脚本?
     
    9.什么是集合点?设置集合点有什么意义?Loadrunner中设置集合点的函数是哪个?
     
    10.什么是场景?场景的重要性有哪些?如何设置场景?
     
    11.请解释一下如何录制web脚本?
     
    12.为什么要创建参数?如何创建参数?
     
    13.什么是关联?请解释一下自动关联和手动关联的不同。
     
    14.你如何找出哪里需要关联?请给一些你所在项目的实例。
     
    15.你在哪里设置自动关联选项?
     
    16.哪个函数是用来截取虚拟用户脚本中的动态值?(手工管联)
     
    17.你在VUGen中何时选择关闭日志?何时选择标准和扩展日志?
     
    18.你如何调试LoadRunner脚本?
     
    19你在LR中如何编写自定义函数?请给出一些你在以前进行的项目中编写的函数。
     
    20.在运行设置下你能更改那些设置?
     
    21.你在不同的环境下如何设置迭代?
     
    22.你如何在负载测试模式下执行功能测试
     
    23.什么是逐步递增?你如何来设置?
     
    24.以线程方式运行的虚拟用户有哪些优点?
     
    25.当你需要在出错时停止执行脚本,你怎么做?
     
    26.响应时间和吞吐量之间的关系是什么?
     
    27.说明一下如何在LR中配置系统计数器?
     
    28.你如何识别性能瓶颈?
     
    29.如果web服务器、数据库以及网络都正常,问题会出在哪里?
     
    30.如何发现web服务器的相关问题?
     
    31.如何发现数据库的相关问题?
     
    32.解释所有web录制配置?
     
    33.解释一下覆盖图和关联图的区别?
     
    34.你如何设计负载?标准是什么?
     
    35.Vuser_init中包括什么内容?
     
    36. Vuser_end中包括什么内容?
     
    37.什么是think time?think_time有什么用?
     
    38.标准日志和扩展日志的区别是什么?
     
    39.解释以下函数及他们的不同之处。
    Lr_debug_message
    Lr_output_message
    Lr_error_message
    Lrd_stmt
    Lrd_fetch
     
    40.什么是吞吐量?
     
    41.场景设置有哪几种方法?
  • 图片验证码性能测试解决方案(转)

    2007-12-05 17:38:22

    如何测试图片验证码功能,大家常用的有三种方法: 鄛%鳰?瑏9  
    1.设置一个万能验证码. G?沉N`i饒  
    2.取消验证码功能. 歍?c牸?  
    3.编写个专用插件,动态获取真实的验证码.  敌瘆I哽R  
    E箉睞?萌y  
    1,2两种方法实现比较容易,缺点是不能真实的模拟实际应用环境. j妻?滜? 
    3的方法技术难度较高. ;?Wq~鱺6x  
    欒d?宇ES=  
    其实我们还有第4种即简单又能够真实的模拟实际应用的方法. p#O湕?  
    cZ冬淈F螧  
    以Jsp网站为例,先来看看验证码功能的实现方法.图片验证码由以下几个步骤实现. G a7百7  
    1.生成随机数. Ud?
  • 成功的 Web 应用系统性能测试

    2007-12-05 17:36:57

      性能测试是 Web 应用系统的一项重要质量保证措施。在现实中,很多 Web 性能测试项目由于性能测试需求定义不合理或不明确,导致性能测试项目不能达到预期目标或进度超期。本文针对 Web 应用系统的技术架构和系统使用特点,探讨如何有效实施性能测试过程,并重点介绍如何分析获得合理的性能测试需求,最终对 Web 应用系统性能进行科学、准确的评估。
    1 引言
            基于Web服务器的应用系统由于提供浏览器界面而无须安装,大大降低了系统部署和升级成本,得以普遍应用。目前,很多企业的核心业务系统均是Web应用, 但当Web应用的数据量和访问用户量日益增加,系统不得不面临性能和可靠性方面的挑战。因此,无论是Web应用系统的开发商或最终用户,都要求在上线前对 系统进行性能,科学评价系统的性能,从而降低系统上线后的性能风险。
            在很多性能测试项目中,由于不能合理定义系统的性能测试需求,不能建立和真实环境相符的负载模型,不能科学分析性能测试结果,导致性能测试项目持续时间很长或不能真正评价系统性能并提出性能改进措施。
            本文在总结许多Web应用系统性能测试实践经验和教训的基础上,从与性能测试工具无关的角度介绍Web应用系统性能测试的方法和实施过程,以及如何定义合理的性能测试需求。
    1.1 术语定义
            性能测试:通过模拟大量浏览器客户端同时访问Web服务器,获得系统的性能数据。
            虚拟用户:模拟浏览器向Web服务器发送请求并接收响应的一个进程或线程。
            响应时间:浏览器向Web服务器提交一个请求到收到响应之间的间隔时间。
            思考时间:浏览器在收到响应后到提交下一个请求之间的间隔时间。
            请求成功率:Web服务器正确处理的请求数量和接收到的请求数量的比。
            吞吐量:单位时间内Web服务器成功处理的HTTP页面或HTTP请求数量。
            在线用户:用户通过浏览器访问登录Web应用系统后,并不退出该应用系统。通常一个Web应用服务器的在线用户对应Web应用服务器的一个Session。
            并发用户数:Web服务器在一段时间内为处理浏览器请求而建立的HTTP连接数或生成的处理线程数。当所有在线用户发送HTTP请求的思考时间为零时,Web服务器的并发用户数等于在线用户数。
    1.2 Web应用系统技术架构
            Web应用系统的前端为浏览器,后台为Web服务器(如Apache,Microsoft Internet Information Server),浏览器和Web服务器之间的交互基于HTTP协议。HTTP协议本身是无连接的,Web服务器通过Session机制来建立一个浏览器所 发出的先后连接之间的关联。通过实验证明,当浏览器客户端在首次访问Web服务器后,如果该浏览器客户端不发送后续请求,服务器维持该浏览器客户端的 Session变量所消耗的系统资源非常小。
    2 Web应用系统性能测试过程
            标准的Web应用系统性能测试过程包括确定性能测试需求,开发性能测试脚本,定义性能测试负载模型,执行性能测试和形成性能测试报告。本章将分别介绍上述过程,并通过举例说明如何完成每一环节。
    2.1 确定性能测试需求
            科学定义Web应用系统性能测试需求对一个成功的性能测试非常重要。通常,Web应用系统的性能测试需求有如下两种描述方法。
    2.1.1 基于在线用户的性能测试需求
            该需求描述方法主要基于Web应用系统的在线用户和响应时间来度量系统性能。当Web应用系统在上线后所支持的在线用户数以及操作习惯(包括操作和请求之 间的延迟)很容易获得,如企业的内部应用系统, 通常采用基于在线用户的方式来描述性能测试需求。以提供网上购物的Web应用系统为例,基于在线用户的性能测试需求可描述为:10个在线用户按正常操作速 度访问网上购物系统的下定单功能,下定单交易的成功率是100%,而且90%的下定单请求响应时间不大于8秒;当90%的请求响应时间不大于用户的最大容 忍时间20秒时,系统能支持50个在线用户。
    2.1.2 基于吞吐量的性能测试需求
            该需求描述方法主要基于Web应用系统的吞吐量和响应时间来度量系统性能。当Web应用在上线后所支持的在线用户无法确定,如基于Internet的网上 购物系统,可通过每天下定单的业务量直接计算其吞吐量,从而采取基于吞吐量的方式来描述性能测试需求。以网上购物系统为例,基于吞吐量的性能测试需求可描 述为:网上购物系统在每分钟内需处理10笔下定单操作,交易成功率为100%,而且90%的请求响应时间不大于8秒。
    2.2 开发性能测试脚本
            在确定Web应用系统性能测试需求后,就要根据性能测试需求中确定的功能开发性能测试脚本。比如,针对前面定义的网上购物系统的性能测试需求,将开发下定单功能的性能测试脚本。
            性能测试脚本是描述单个浏览器向Web服务器发送的HTTP请求序列。每个性能测试工具(如IBM Rational Performance Tester, LoadRunner)所提供的测试脚本语法是不同的。测试人员利用性能测试工具可从头手工编写测试脚本,也可以通过录制浏览器和Web服务器之间的网络通信数据而自动形成测试脚本。
            任何性能测试工具都不能保证录制形成的性能测试脚本的正确性,测试人员应通过在单用户下运行性能测试脚本对其正确性进行验证。测试脚本不正确的一个重要原 因就是脚本的数据关联不正确,也就是并没完全建立一个测试请求和前面的响应内容之间的关联。测试脚本HTTP请求和响应之间的数据关联是否正确的一个重要 标准是单用户运行脚本,脚本能完成期望的功能。
            在完成性能测试脚本的数据关联后,需要对脚本进行参数化,也就是把脚本中的某些请求数据替换成变量,变量的值来于一个独立的数据文件,从而保证在多虚拟用户运行脚本的情况下,每个虚拟用户所提交的数据是不同的。
            此外,为了测试Web应用的可靠性,还需要对请求所收到的响应进行验证(比如验证响应的HTTP返回码或验证响应的内容),便于性能测试完成后统计请求成功率。
    2.3 建立性能测试负载模型
            性能测试负载模型定义了测试工具如何向Web应用系统提交请求,包括向Web应用系统发送请求的虚拟用户数,每个虚拟用户发送请求的速度和频率。针对前面介绍的网上购物系统的性能测试需求,在性能测试工具中定义的性能测试负载模型应包括如下信息:
            虚拟用户数:性能测试不仅仅是执行一次,而且每次执行时虚拟用户数也不固定,因此在性能测试负载模型中定义的虚拟用户数将在测试执行时进行设置。
            虚拟用户发送请求的思考时间和迭代次数:虚拟用户发送请求的思考时间长短是决定Web应用系统负载量的重要因素之一,而迭代次数将决定性能测试的执行持续 时间。对基于在线用户的性能测试需求,将基于录制脚本时记录的思考时间,而且由于现实中不同用户访问系统的思考时间不同,可把思考时间设置为在一定范围内 的随机值。对于基于吞吐量的性能测试需求,将把思考时间设置为零,此时Web应用系统的在线用户数量将等于并发用户数。同时,为了避免性能测试压力的随机 性,将增加请求的迭代次数来增加测试执行持续时间,从而获得系统在稳定压力下的性能数据。
            虚拟用户启动模式:在现实中,Web应用系统的用户不太可能同时做相同的操作,因此为了让Web应用系统所承担的压力随时间均匀分布,建议虚拟用户依次启 动,同时也避免大量用户同时登录造成系统阻塞。以10个虚拟用户模拟下定单为例,可设置每个虚拟用户间隔30秒启动,这样10个虚拟用户可在5分钟后完成 启动,并保证10个虚拟用户不会在同一时刻下定单,从而更符合实际情况。
    2.4 执行性能测试
            执行性能测试是指通过多次运行性能测试负载模型,获得系统的性能数据。在执行过程中,需利用测试工具、操作系统、系统软件(如Web Server或DB Server)提供的资源监控手段对资源进行监控和分析,帮助发现资源瓶颈,并在系统层面进行优化。同时,还需对应用进行性能分析,帮助定位应用代码中的性能问题,切实解决系统的性能问题。
    2.5 形成性能测试报告
            性能测试项目的最后阶段就是向相关人员提交性能测试报告,汇报性能测试结果。在向相关人员汇报性能测试结果时,并不是性能测试报告越丰富、性能数据越多越好。好的性能测试报告是能准确、简单地传递性能测试结论,而不需太多的技术细节。
    针对基于在线用户数的性能测试需求,可通过下图总结性能测试结论。其中横轴是在线用户数,纵轴是响应时间,如40在线用户访问网上购物系统时,90%的下定单请求响应时间不超过10秒。

    图一:在线用户数和响应时间时间的趋势图

                                           
            针对基于吞吐量的性能测试需求,可通过下图的曲线来描述性能测试结果。以网上购物系统为例,下图描述下定单的并发用户、下定单响应时间以及吞吐量(服务器 每秒处理定单笔数)之间的关系,从而快速判断系统是否能满足性能测试需求。从下图中可看出,并发用户增加,请求的响应时间也增加。服务器的吞吐量是先随并 发用户数增加而增加,当吞吐量到达一定峰值后,再增加并发用户数,吞吐量会减少。原因在于当并发用户数少时,向Web服务器提交的请求量不大,服务器处理 能力还有富余,所以吞吐量逐步增大;但当并发用户数超过某一值时,由于向服务器提交的请求太多,造成服务器阻塞,反而导致吞吐量减少。

    图二:响应时间、吞吐量和并发用户数的趋势图

                             
    3 如何获取合理的性能测试需求
            前一章介绍了Web应用系统的性能测试过程,确定性能测试需求是整个性能测试的起点和成功的重要因素。性能测试需求定义得过高,虽然确保系统上线后能满足 性能需求,但可能会造成硬件资源的浪费;性能测试需求定义得过低,系统上线后可能会出现性能问题。如何通过分析系统上线后可能的用户访问行为,来获得合理 的性能测试需求指标呢?
            假设现有一个基于Web的办公自动化系统(简称OA系统),该系统提供公文收发和查询功能。在部署该系统前,将对该系统进行性能测试。下面将详细介绍如何分析该OA系统的使用情况,定义合理的性能测试需求。
    3.1 如何获得OA系统的在线用户数量
            在线用户数量是指在特定时间区间内,有多少用户访问Web应用系统(对应到Web服务器的Session数),根据系统可能访问用户数以及每个用户访问系统的时间长短来确定。
            对于将要部署的OA系统,通过分析获得该系统有8000个注册用户,基本上所有的用户每天(8小时工作时 间)都会访问OA系统,平均在线时间(从登录OA系统到退出OA系统之间的时间间隔,也可以是多次在线时间的合计)为12分钟,那么该OA系统的平均在线 数(也就是Web应用Session变量数)为200个(8000 * 0.2 / 8),假设峰值在线用户数是平均在线用户数的3倍(该倍数可根据实际情况调整),则性能测试需求的在线用户数为600。
    3.2 如何确定OA系统的性能测试用例
            由于时间和资源限制,不可能对Web应用系统的所有功能进行性能测试,而是从业务的角度(如某一功能操作的用户多)和技术的角度(如某一功能虽然访问用户不多,但内部处理逻辑复杂或处理数据量大)来选择Web应用系统的特定功能作为性能测试用例。
            以OA系统为例,由于所有用户都经常公文查询功能,因此确定的性能测试用例为公文查询。
    3.3 如何确定OA系统的响应时间
            响应时间的快慢直接影响了系统使用用户的满意度,采用平均响应时间来描述系统系统性能测试需求是不科学的,因为无法直接和客户的满意度挂钩。而且,在做性能测试,如果某一请求的响应时间过长或过短,将导致平均响应时间和实际情况偏离。
            以OA系统为例,定义的响应时间需求为:90%(该百分比和要求的系统用户满意度相关)的查询请求响应时间不超过8秒(该时间可根据实际情况确定)。
    3.4 如何确定OA系统的交易吞吐量
            单位时间内Web应用系统需处理多少笔特定的交易可通过统计获得。以OA系统为例,假设每个用户每天(一天按8小时计算)平均会查询公文4次,那OA应用 的Web服务器平均每分钟要能处理8000 * 4 / ( 60 * 8 ) = 66.67笔查询公文交易,考虑到峰值因素,要求每分钟能处理66.7 * 3=200笔查询公文交易。
    3.5 OA系统性能测试需求描述
            通过前面的分析,能明确定义合理的性能测试需求。OA系统性能测试需求定义如下:
    基于在线用户数的性能测试需求:600个在线用户按正常操作速度访问OA系统的查询公文功能,所有查询请求的成功率是100%,而且90%的查询请求响应时间不大于8秒。
    基于吞吐量的性能测试需求:OA系统在每分钟内需处理200笔查询公文操作,交易成功率为100%,而且90%的请求响应时间不大于8秒。
    4 总结
            Web应用性能测试项目成功的关键不在于性能测试工具,而在于有效的性能测试分析方法和实践。只有切实掌握性能测试需求分析方法,性能测试实践经验,才能保证一个Web应用性能测试的成功。

  • BEA WebLogic平台下J2EE调优攻略

    2007-12-05 17:31:41

    摘要:

      随着近来J2EE软件广泛地应用于各行各业,系统调优也越来越引起软件开发者和应用服务器提供商的重视。而对于 最终客户来说,在一个高效、稳定地实现他们的业务需求已经是他们的基本要求。所以J2EE调优显得非常重要,而BEA WebLogic Server是业界领先的应用服务器,BEA WebLogic平台下的J2EE调优也就尤为重要,她将为我们提供普遍的J2EE调优方案。最近网络、杂志上的J2EE调优文章层出不穷。本人也将自己 平时工作中的一些经验积累分享给大家,抛砖引玉。

    前 言
      随着近来J2EE软件广泛地应用于各行各业,系统调优也越来 越引起软件开发者和应用服务器提供商的重视。而对于最终客户来说,在一个高效、稳定地实现他们的业务需求已经是他们的基本要求。所以J2EE调优显得非常 重要,而BEA WebLogic Server是业界领先的应用服务器,BEA WebLogic平台下的J2EE调优也就尤为重要,她将为我们提供普遍的J2EE调优方案。最近网络、杂志上的J2EE调优文章层出不穷。本人也将自己 平时工作中的一些经验积累分享给大家,抛砖引玉。

      本文从J2EE应用架构(下图)来分别剖析系统调优,首先我们一般会从应用程序出发,去审核代码,做到代码级的优化,然后再调整应用服务器(BEA WebLogic8.1)和数据库 (Oracle9i)的参数,最后当然是调整操作系统和网络的性能(包括硬件升级)。诚然,在我遇到的很多项目中,都是出现了性能问题后才想到调优,而且一般都是先进行系统参数调整,实在解决不了才会对代码进行检查.实际上,我们应当将代码级的调优放在应用设计时来做,测试生产时修改代码将是一件极其痛苦的事情。


    WebLogic平台J2EE应用架构

    第一章 应用程序调优
    1.1.1 通用代码调优

    1.1.2 减小没有必要的操作
       对象的创建是个很昂贵的工作,所以我们应当尽量减少对象的创建,在需要的时候声明它,初始化它,不要重复初始化一个对象,尽量能做到再使用,而用完后置 null有利于垃圾收集。让类实现Cloneable接口,同时采用工厂模式,将减少类的创建,每次都是通过clone()方法来获得对象。另外使用接口 也能减少类的创建。对于成员变量的初始化也应尽量避免, 特别是在一个类派生另一个类时。

      异常抛出对性能不利。抛出异常首先要创建一 个新的对象。Throwable接口的构造函数调用名为, fillInStackTrace()的本地(Native)方法,fillInStackTrace()方法检查堆栈,收集调用跟踪信息。只要有异常被 抛出,VM就必须调整调用堆栈,因为在处理过程中创建了一个新的对象。 异常只能用于错误处理,不应该用来控制程序流程。

      此外, 建议关闭Debug输出,尽量少用串行化、同步操作和耗时昂贵的服务(如Date())。


    1.1.3 使用合适的类型

      当原始类型不能满足我们要求时,使用复杂类型。String和StringBuffer的区别自不必说了,是我们使用最多的类型,在涉及到字符运算时,强烈建议使用StringBuffer。在做String匹配时使用intern()代替equal()。

      带有final修饰符的类是不可派生的, 如果指定一个类为final,则该类所有的方法都是final。

      Java编译器会寻找机会内联所有的final方法,这将能够使性能平均提高50%。类的属性和方式使用final或者static修饰符也是有好处的。

      调用方法时传递的参数以及在调用中创建的临时变量都保存在栈(Stack)中,速度较快。所以尽量使用局部变量。

      ArrayList和Vector,HashMap和Hashtable是我们经常用到的类,前者不支持同步,后者支持同步,前者性能更好,大多数情况下选择前者。


    1.1.4 尽量使用pool,buffer和cache
      使用pool、buffer和cache能大大提高系统的性能,这在J2EE的大部分技术中都是适用的。

       在WebLogic中就大量使用了池:JDBC Connection Pool、Socket Pool、Object Pool和Thread Pool。I/O操作中,buffer是必须的,特别是对大文件的操作,不然容易造成内存溢出。字节操作最快,所以尽可能采用write(byte []),Buffered FileOutputStream比Buffered FileWriter要快,因为FileWriter需要Unicode到Byte的转换。

      而后面讲到的JDBC、JSP、EJB和JMS我们都非常建议使用buffer和cache。为HttpServletResponse设置buffersize,使用wl-cache,缓存在JNDI树上获取的对象等等。

      此外,使用JDK 1.4的非阻塞I/O对性能也有很大提高。


    1.2 JDBC代码调优
    1.2.1 严格资源使用
       JDBC代码调优最大的原则就是使用WebLogic的连接池,而不是自己直连数据库。在我接触的很多自己实现连接池的项目中,大部分遇到死锁和连接泄 漏的问题,最后得不得修改代码。而WebLogic提供了功能强大,性能良好的数据库连接池,我们要做的只是封装一个连接管理类,从JNDI树上获取数据 源并缓存,得到连接,并提供一系列关闭数据库资源的方法。

      对任何资源使用的原则是用完即关,不管是数据库资源、上下文环境,还是文 件。数据库资源的泄漏极易造成内存泄漏,乃至系统崩溃。在使用完数据库资源后依次关闭ResultSet,Statement和Connection,而 在一个数据库连接多次进行数据库操作时要特别注意ResultSet和 Statement依次关闭。

    try{
      //open connection
      pstmt =conn.prepareStatement(strSql1);
      pstmt.executeUpdate();
      pstmt.close();
      pstmt =conn.prepareStatement(strSql2);
      rs=pstmt.executeQuery();
      while (rs.next()){
      //process
     }
    rs.close();
    pstmt.close();
     }catch(Exception e){
      //close rs,psmt,con
    }finally{
      //close rs,psmt,con
    }


    1.2.2 实用技巧
       在JDBC操作中还有一些小的技巧跟大家分享:由于获取连接时默认自动提交方式,使用connection.setAutoCommit (false)关闭自动提交,使用PreparedStatement,批量更新,业务复杂或者大数据量操作时使用存储过程,尽量使用RowSet,此外 设置记录集读取缓存FetchSize和设置记录集读取方向FetchDirection对性能也有一定的提高。


    1.2.3 优化SQL语句
       SQL语句的优化牵涉到很多数据库的知识,需要与索引配合,因此需要DBA对代码中的SQL进行检查测试。常见的,select *不提倡使用,效率极差,建议显式获取列,即使是所有字段也应罗列,而取总数时使用count(*),为提高cache的命中率,尽量做到SQL重用。对 于大数据量的查询,可以充分利用Oracle数据库的特性,每次取出m-n行的数据,实现分页查询。另外,提高性能的好选择可能就是把所有的字符数据都保 存为Unicode,Java以Unicode形式处理所有数据,因此,数据库驱动程序不必再执行转换过程。


    1.3 Web代码调优
    1.3.1 HttpSession的使用
      应用服务器保存很多会话时,容易造成内存不足,所以尽量减少session的使用,放置session
    里的对象不应该是大对象,最好是简单小对象,实现串行化接口。当会话不再需要时,应当及时调用invalidate()方法清除会话。而当某个变量不需要时,及时调用removeAttribute()方法清除变量。请勿将EJB对象放置在session中。


    1.3.2 JSP代码调优
       目前,在JSP页面中引入外部资源的方法主要有两种:include指令,以及include动作。 include指令:例如<%@ include file="copyright.html" %>,该指令在编译时引入指定的资源。在编译之前,带有include指令的页面和指定的资源被合并成一个文件。被引用的外部资源在编译时就确定, 比运行时才确定资源更高效。
    include动作:例如。该动作引入指定页面执行后生成的结果。由于它在运行时完成,因此对输出结果的控制更加灵活。但是,只有当被引用的内容频繁地改变时,或者在对主页面的请求没有出现之前,被引用的页面无法确定时,使用include动作才合算。

       对于那些无需跟踪会话状态的jsp,关闭自动创建的会话可以节省一些资源。使用如下page指令: <%@ page session="false"%>;尽量不要将JSP页面定义为单线程,应设置为<%@page isThreadSafe=”true”%>;在JSP页面最好使用输出缓存功能,如: <%@page buffer="32kb"%>;尽量用wl:cache定制标记来缓存静态或相对静态的内容,缓存jsp:include操作的结果能显著提高应 用程序的运行性能。


    1.3.3 Servlet代码调优
       Servlet代码调优比较简单:在Servlet之间跳转时,forward比sendRedirect更有效;设置 HttpServletResponse 缓冲区,如:response.setBufferSize(20000);在init()方法里缓存静态数据,而在destroy()中释放它;建议在 Servlet里使用ServletOutputStream输出图片等对象;避免在Servlet和Jsp中定界事务等。


    1.4 JMS代码调优
    1.4.1 注意必要的事项,避免使用不必要的特征
       JMS提供了强有力的消息处理机制,但是为了最大限度的提高JMS系统的性能,应避免使用不需要使用的特征,同时也要注意必要的事项。比如:尽量使用接 收程序能直接使用的最简单、最小的消息类型;消息选择器要尽可能简单(最好不使用),尽量不要使用复杂的操作符,如like、in或者between 等,使用字符串数据类型的速度最慢;务必为特定的应用程序定义特定的JMS连接工厂,并且禁用默认的JMS连接工厂;不要在javax.*与 weblogic.*的名字空间中使用JNDI名称;尽量使用异步消费者,线程不必封锁以等待消息的到达;使用完JNDI树上的资源后注意关闭。


    1.4.2 消息类型的选择
       标准JMS提供了五种消息类型,而TextMessage应用最为普遍, 当发送的消息是几种原始数据类型的集合体时,最好使用MapMessage消息类型,而不要使用ObjectMessage,以便减少不同系统间的耦合。 此外消息是否使用压缩要慎重考虑,压缩未必能减少消息大小。如果生产者、消费者和目的地并置在同一WebLogic Server内部,通常不使用压缩。WebLogic特有的XMLMessage能为运行于消息主体之上的消息选择器提供内嵌式支持,而且易于数据交换。 因此,建议应用程序之间传送消息使用XML消息格式,而应用程序内部间传送消息使用二进制消息格式。


    1.4.3 确认方式的选择和JMS事务
       使用事务性会话时,尽量使用恰当的消息确认方式:如果需求允许,使用NO_ACKKNOWLEDGE;非持久的订阅者使用 DUPS_OK_ACKNOWLEDGE或者MULTICAST_NO_ACKNOWLEDGE。而使用JTA的UserTransaction,确认方 式将被忽略。在使用JMS事务时,无效的消息会导致事务的回滚,以致消息重发这样的死循环。此时,可以将无效消息发送到错误消息队列,并提交JMS事务, 这将确保消息不会再次传递。


    1.5 EJB代码调优
    1.5.1 有效使用设计模式
       GoF 的《设计模式》为我们实现高性能、易扩展的J2EE应用提供理论保障和技术支持。而EJB作为J2EE的核心组件和技术,善用设计模式对系统性能影响很 大。Service Locator 和Value Object 已为我们所熟悉,Floyd Marinescu的《EJB Design Patterns》中的Session Fa?ade、Message Fa?ade、EJB Command和Data Transfer Object等设计模式更是为我们提供设计典范:缓存对EJBHome的访问;使用门面模式,不暴露Entity Bean,用Session Bean封装Entity Bean;如果可以异步处理,则用MDB代替Session Bean;封装业务逻辑在轻量级JavaBean中;使用值对象等简单对象传递数据;不直接使用get/set方法操作Entity Bean。当然过度使用模式或者牵强套用模式也是不提倡的,总的原则就是减少网络流量,改进事务管理。


    1.5.2 使用EJB和WebLogic的特性
       使用EJB和WebLogic的新特性往往能提高性能。与EJB2.0特性相关的技巧有:一个Application中使用本地接口,对于 Entity Bean肯定使用本地接口,避免远程调用的开销;使用CMP管理关系,而不是BMP,EJB2.0中CMP的性能大大改善,性能和移植性都优于BMP;使 用ejbSelect进行内部查询;使用home方法进行外部查询和批处理; 数据库驱动级联删除等。

      与WebLogic特性相关的 技巧有:使用自动生成主键,WebLogic为Oracle和Sqlserver两种数据库的CMP提供了自动生成主键功能,节约了Entity Bean产生主键的时间,同时设key-cache-size不小于100;WebLogic管理事务性能更好,使用容器管理,而不是Bean管理事务; WebLogic提供了为CMP动态查询和批量插入功能,对性能也有很大帮助。


    1.5.3 缓存资源
       对SLSB或者MDB来说,使用setMesssageDrivenContext()或者ejbCreate()方法缓存特定资源,在 ejbRemove()方法里释放; 对SLSB或者MDB来说,使用setSessionContext()或者ejbCreate()方法缓存特定资源,在ejbRemove()方法里释 放;对Entity Bean来说,使用setEntityContext ()方法缓存特定资源,在unSetEntityContext ()方法里释放。

    1.5.4 如何选择和使用Entity Bean
      1. 在设计EJB时,要适当考虑EJB的粒度, 细粒度的EJB在事务管理和资源管理的开销太大,尽量创建粗粒度的 EJB , 不要太粗,粗到能满足实际需求就可以;

      2. Entity Bean不是唯一方式,如果只有一个很小的数据子集被经常改变,建议采用JDO;

      3. 在操作大数据量的时候,直接采用JDBC比Entity Bean更有效;

      4. 避免采用返回很大数据组的finder方法,如 FindAll() 方法,因为它的实现代价太大;

      5. 考虑设置域组field groups,减少没有必要并昂贵的属性加载,如BLOB;

      6. 对于EJB1.1或者BMP,可以设置is-modified-method-name属性,根据isModified()的值来判断是否调用ejbStore()等方法,减少没有必要运算;

      7. 避免连接多个表创建BMP,可以使用视图,存储过程或者O/R Mapping等方式。


    1.5.5 其他的一些小技巧
      1. 考虑使用 javax.ejb.SessionSynchronization 接口,提供在Rollback之后恢复数据的方法: afterBegin(), beforeCompletion(), afterCompletion();
      2. 使用完SFSB之后,调用remove()方法释放实例;
      3. 假如你不需要EJB服务的时候,建议使用普通Java类;
      4. 避免EJB之间相互调用;
      5. 使用多读模式。
    第二章 应用服务器调优
    2.1 JVM调优
    2.1.1 垃圾收集和堆大小
       垃圾收集(GC)是指JVM释放Java堆中不再使用的对象所占用的内存的过程,而Java堆(Heap)是指Java应用程序对象生存的空间。堆大小 决定了GC的频度和时间。堆越大,GC频度低,速度慢。堆越小,GC频度高,速度快。所以GC和堆大小是一组矛盾。为了获取理想的Heap堆大小,需要使 用-verbosegc参数(Sun jdk: -Xloggc:)以打开详细的GC输出。分析GC的频度和时间,结合应用最大负载所需内存情况,得出堆的大小。
    通 常情况下,我们建议使用可用内存(除操作系统和其他应用程序占用之外的内存)70-80%,为避免堆大小调整引起的开销,设置内存堆的最小值等于最大值 即:-Xms=-Xmx。而为了防止内存溢出,建议在生产环境堆大小至少为256M(Platform至少512M),实际环境中512M~1G左右性能 最佳,2G以上是不可取的,在调整内存时可能需要调整核心参数进程的允许最大内存数。对于sun和hp的jvm,永久域太小(默认4M)也可能造成内存溢 出,应增加参-XX:MaxPermSize=128m。建议设置临时域-Xmn的大小为-Xmx的1/4~1/3, SurvivorRatio为8。

       为了获得更好的性能,建议在启动文件设置WebLogic为产品模式,此时sun和hp jvm JIT引擎为-server,默认情况下打开JIT编译模式对性能也有帮助。调整Chunk Size和Chunk Pool Size也可能对系统的吞吐量有提高。此外还需关闭显示GC: -XX:+DisableExplicitGC。

      当然在Intel平台上使用jRockit(使用参数-jrockit)无疑大大提高WebLogic性能。

    2.1.2 jRockit调优
      jRockit支持四种垃圾收集器:分代复制收集器、单空间并发收集器、分代并发收集器和并行收集器。默认状态下,JRockit使用分代并发收集器。要改变收集器,可使用-Xgc:, 对应四个收集器分其他为gencopy, singlecom, gencon以及parallel。为得到更好的响应性能,应该使用并发垃圾回收器:-Xgc:gencon,可使用-Xms和-Xmx设置堆栈的初始大 小和最大值,要设置护理域-Xns为-Xmx的10%。而如果要得到更好的性能,应该选用并行垃圾回收器:-Xgc: parallel,由于并行垃圾回收器不使用nursery,不必设置-Xns。

      如果你的线程大于100或者在linux平台下,可以尝试使用瘦线程模式:-Xthinthread,同时关闭Native IO:-Xallocationtype:global。

      jRockit 还提供了强大的图形化监控工具Jrockit Management Console。欲详细了解JRockit可访问:
    http://edocs.bea.com/wljrockit/docs81/index.html


    2.2 Server调优
       WebLogic Server的核心组件由监听线程,套接字复用器和可执行线程的执行队列组成。当服务器由监听线程接收到连接请求后,将对它的连接控制权交给等待接收请求 的套接字复用器。然后套接字复用器读取离开套接字的请求,并将此请求及相关安全信息或事务处理环境一起置入适当的执行队列中(一般为默认的执行队列)。当 有一个请求出现在执行队列中时,就会有一个空闲的执行线程从该队列中取走发来的该
    请求,并返回应答,然后等待下一次请求。因此要提高WebLogic的性能,就必须从调整核心组件性能出发。

    2.2.1 尽量使用本地I/O库
    WebLogic Server有两套套接字复用器:Java版和本地库。采用小型本地库更有效,尽量激活Enable Native IO(默认),此时UNIX默认使用CPUs+1个线程,Window下为双倍CPU。如果系统不能加载本地库,将会抛出 java.lang.UnsatisfiedLinkException,此时只能使用Java套接字复用器,可以调整socket readers 百分比,默认为33%。该参数可以在Console Server Tuning Configuration配置栏里设置。


    2.2.2 调整默认执行线程数
       理想的默认执行线程数是由多方面的因素决定的,比如机器CPU性能、总线体系架构、I/O、操作系统的进程调度机制、JVM的线程调度机制。 WebLogic生产环境下默认的线程为25个,随着CPU个数的增加,WebLogic可以近乎线性地提高线程数。线程数越多,花费在线程切换的时间也 就越多,线程数越小,CPU可能无法得到充分利用。为获取一个理想的线程数,需要经过反复的测试。在测试中,可以以25*CPUs为基准进行调整。当空闲 线程较少,CPU利用率比较低时,可以适当增加线程数的大小(每五个递增)。对于PC Server 和Window 2000,则最好每个CPU小于50个线程, 以CPU利用率为90%左右为佳。由于目前WebLogic执行线程没有缩小线程数的功能,所以应将参数Threads Increase设置为0,同时不应改变优先级的大小。


    2.2.3 调整连接参数
       WebLogic Server用Accept Backlog参数规定服务器向操作系统请求的队列大小,默认值为50。当系统重载负荷时,这个值可能过小,日志中报Connection Refused,导致有效连接请求遭到拒绝,此时可以提高Accept Backlog 25%直到连接拒绝错误消失。对于Portal类型的应用,默认值往往是不够的。Login Timeout和SSL Login Timeout参数表示普通连接和SSL连接的超时时间,如果客户连接被服务器中断或者SSL容量大,可以尝试增加该值。这些参数可以在Console Server Tuning Configration配置栏里找到。


    2.2.4 创建新的执行队列
       创建新的执行队列有助于解决核心业务优先、避免交叉阻塞、死锁和长时间处理的业务等问题。通常会将自己的执行队列和默认的执行队列设置不同的优先级, 这里优先级不应设为9或者10。 定义一个新的执行队列很容易,利用View Excute Queue选项中的Configure a new Excute Queue链接即可定制新的执行队列。创建新的执行队列后,用户需要为应用程序的J2EE组件配置分配策略,以便它可以找到新的队列。举个例子:要将 servlet或jsp捆绑到一个特定的执行队列,必须替换web.xml文件项,将wl-dispatch-policy初始化参数设置为自己的执行队 列名。


    servletname
    /directoryname/deployment.jsp

    wl-dispatch-policy
    NewExecuteQueueName



      我们可以为一个jsp或者servlet乃至一个WEB应用设置自己的执行队列。同时也可以为EJB设置自己的执行队列。对于执行时间比较长的MDB,建议使用自己的执行队列。


    2.3 JDBC调优
    2.3.1 调整连接池配置

       JDBC Connection Pool的调优受制于WebLogic Server线程数的设置和数据库进程数,游标的大小。通常我们在一个线程中使用一个连接,所以连接数并不是越多越好,为避免两边的资源消耗,建议设置连 接池的最大值等于或者略小于线程数。同时为了减少新建连接的开销,将最小值和最大值设为一致。

      增加Statement Cache Size对于大量使用PreparedStatement对象的应用程序很有帮助,WebLogic能够为每一个连接缓存这些对象,此值默认为10。在保 证数据库游标大小足够的前提下,可以根据需要提高Statement Cache Size。比如当你设置连接数为25,Cache Size为10时,数据库可能需要打开25*10=250个游标。不幸的是,当遇到与PreparedStatement Cache有关的应用程序错误时,你需要将Cache Size设置为0。

      尽管JDBC Connection Pool提供了很多高级参数,在开发模式下比较有用,但大部分在生产环境下不需调整。这里建议最好不要设置测试表, 同时Test Reserved Connections和Test Released Connections也无需勾上。 当然如果你的数据库不稳定,时断时续,你就可能需要上述的参数打开。

      最后提一下驱动程序类型的选择,以Oracle为例, Oracle提供thin驱动和oci驱动,从性能上来讲,oci驱动强于thin驱动,特别是大数据量的操作。但在简单的数据库操作中,性能相差不大, 随着thin驱动的不断改进,这一弱势将得到弥补。而thin驱动的移植性明显强于oci驱动。所以在通常情况下建议使用thin驱动。而最新驱动器由于 WebLogic server/bin目录下的类包可能不是最新的,请以Oracle网站为准:
    http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs/jdbc9201.html

    2.4 WEB调优
    2.4.1 调整WEB应用描述符

       WEB应用除代码之外的调优比较简单,仅仅是对一些WEB应用描述符的调整。首先关闭Session Monitoring Enabled,仅仅在Cluster环境下设置Session复制(优先使用内存复制),在保证应用正常运行的情况下,设置较短的Session超时时 间。 同时生产环境下无需检查Jsp和servlet:JSPPage Check Secs和Servlet Reload Check Secs均设为-1,关闭JSPKeep Generated 和JSPVerbose对性能也有帮助。此外,还可以对jsp进行预编译,有两种方法:激活precompile选项;使用weblogic.appc事 先编译,建议采用后者。

    2.5 JMS调优
      1. 增加-Dweblogic.JMSThreadPoolSize=n(至少为5),以提高处理JMS的线程数,在jRockit上增加-XXenablefatspin以减少加锁冲突;
      2. 采用文件存储策略,将同步写策略设置为Direct-Write,同时在windows平台上启用磁盘写入缓存;
      3. 使用分布式目的地时,激活连接工厂Load Balancing Enabled ,Server Affinity Enabled;
       4. 为减少服务器不必要的JMS请求路由,如果多个目的地之间存在事务,则部署在同一JMS服务器上,尽量将连接工厂部署到JMS服务器所在的 WebLogic实例上,集群环境下,则最好将连接工厂部署到集群中的所有服务器上,而集群中每个JMS服务器和目的地成员尽量使用类似的设置;
      5. 启用消息分页存储功能,以释放内存,可以为JMS服务器和目的地设置, 激活Messages Paging Enabled和Bytes Paging Enabled,同时使用限额防止服务器耗尽接收消息的所有可用内存空间;
      6. 在运行WebLogic Server进程之外的生产者务必使用流控制, 并增大Send Timeout;
      7. 将JMS Server Expiration Scan Interval设很大的值,能禁止主动扫描过期消息;
      8. 使用FIFO或者LIFO方式处理目的地消息;
      9. MDB的max-beans-in-free-pool不应大于最大MDB线程数(默认线程数/2+1)。


    2.6 EJB调优
    2.6.1 调整pool和cache

       initial-beans-in-free-pool定义SLSB启动时实例的个数,默认为0,可以调大到正常并发数的大小,以减少初始响应时间。 max-beans-in-free-pool为最大个数,默认1000对SLSB来说,在频繁创建和删除实例的情况下很有帮助,一般不用调整,至少设为 默认线程数,过大容易造成内存溢出。而对Entity Bean来说,由于是匿名的,所以当频繁使用finder、home和create方法时可以调大。

      对SFSB来说,尽量将max- beans-in-cache参数设置得足够的大,以满足Bean实例对最大并发用户数的要求,可以避免有状态会话 Bean过多的钝化行为。而idle-timeout-seconds尽量设置小,如果SFSB不用于存储Web应用会话状态可以设置为0。

      对于Entity Bean来说, max-beans-in-cache同样可以首先采用默认值1000,监控实例缓存和钝化的情况,再做适当调整。

       并行策略concurrency-strategy定义了实体Bean如何管理锁,有四种策略: Exclusive、Databse、ReadOnly、Optimistic。效率依次提高,可靠性依次降低,尽量避免使用互斥策略,如果Bean无需 更新操作,使用只读策略,更甚的是,如果Bean的内容不会改变,可设置read-timeout-seconds为0,乐观并行策略时采用事务间缓存策 略,在entity-cache描述符中将cache-between-transactions元素设为true。


    2.6.2 优化事务隔离级别和事务属性
      对EJB组件来说,有四种事务隔离水平:

    • TRANSACTION-SERIALIZABLE:在处理完成之前拒绝其他处理的读入、可扩展性或插入数据操作;
    • TRANSACTION-REPEATABLE-READ:防止处理修改正在被其他处理调用的数据;
    • TRANSACTOIN-READ-COMMITTED:防止对正在被其他处理修改的数据执行写锁定;
    • TRANSACTION-READ-UNCOMMITTED:允许处理读入未受权的数据以及允许在向结果中添加记录时可以忽略处理。

       以上隔离水平依次降低,效率和性能依次提高。因此,建议选用满足在业务数据完整性要求前提下水平最低的隔离级别。

      对于事务属性的设置也是如此,对于删除、修改和插入操作设置为Required,而对于只读操作设置为Supports或者NotSupports。


    2.6.3 其他一些小技巧
      1. 利用finders-load-bean的默认值true,既可以避免“n+1”的查询问题,又可以提高系统的性能;
      2. 使用delay-updates-until-end-of-tx参数的默认值true,除非应用程序对某些变化有特别的要求;
      3. 应用程序在每个业务方法调用后不需要进行存在性检查,将check-exists-on-method设定为false,以提高程序的性能;
      4. 同一应用内, 将enable-call-by-reference设置为 true;
      5. reentrant设置为false,避免事先加载子数据。


    第三章 数据库调优
    3.1.1 Oracle性能优化
      Oracle9i的性能优化除了调整kernal之外就是主要对Oracle启动文件的调整,即调整SGA的参数。注意,不同操作系统不同位数的机器最优的参数不是一样的,这里主要有windows和unix之分,32位和64位之分。
    首先需要调大进程数和游标数,一般默认的值对实际应用来说都比较小,比如说,进程数可以调到300,游标数可以调到500。

       其次,看一个经验公式: OS 使用内存+ SGA + session*(sort_area_size + hash_area_size +2M)<0.7RAM,通常认为此时的SGA比较合理。这里sort_area_size为64k, hash_area_size为128k(当排序多的时候需要增大sort_area_size,按调整后的值计算),session表示最大并发进程 数,假设100个。假如1G内存的机器,OS占用200M,PGA占用200M左右,那么SGA可以设为400-500M,如果2G内存可以1G给 SGA,8G可以5G给SGA。不过对于32位数据库来说,通常最多只能使用1.7G内存。

      然后,SGA内参数设置的基本原则是: data buffer 通常可以尽可能的大,shared_pool_size 要适度,log_buffer 通常大到几百K到1M就差不多。具体的:data buffer 1G内存可以设置500M,2G设为1.2G,8G可设为5G 。shared_pool_size不易过大,通常应该控制在200M--300M,如果使用了大量的存储过程,可以根据SGA的值增大到500M,如果 增大后命中率得不到提高,则增加是无益的。具体的:1G内存可以设置100M,2G设为150M,8G可设为300M。如不使用Java, java_pool_size 10-20M即可。large_pool_size如果不设置MTS,在20M -30M 即可,假如设置 MTS,可以考虑为 session * (sort_area_size + 2M)。

      最后,关于内存的设置可根据statspack信息和v$system_event,v$sysstat,v$sesstat,v$latch 等view信息来考虑微调。


    3.1.2 Oracle的其他调整
      为了Oracle高效率的运行,除了上面提到的内存因素之外,还有就是需要良好的数据库设计:表、视图、索引和日志的合理规划和建立。I/O的性能也是重要因素,应尽量减少页交换和页分配。此外,就是改善检查点的效率。

    前面我们曾谈到测试执行中一种有效性策略,实际就是一个典型例子,显示了有效性和风险性之间的矛盾和统一。测试方法有效性和风险性的这种关系,实际表现在整个测试周期,存在整个开发周期。

    1. 有效性和风险性, 首先体现在一种测试理念的较量上。虽然,当我们问一个测试工程师,测试是什么?她/他可能会毫不犹豫地说,测试是发现缺陷。当她/他管理一个测试项目或进 行测试时,总是想证明所有功能是正常的,而大大降低测试的效率。至少,在心里进行不断的斗争,结果可能会去冒一些风险,可能会牺牲一些效率。

    2. 在制定测试策略、测试计划时,有效性和风险性的矛盾可能更突出,即确定测试的质量标准、测试范围和测试重点。“如何减少测试范围、抓住测试重点”是具有技 巧性和经验性,技巧和经验提高测试有效性,有时也往往引起一些容易忽视的风险。质量标准(产品特性的具体要求)也具有策略性,是市场(marketing requirements) 和工程 (Engineering ) 的一种斗争的结果,也极具平衡的艺术。

    3. 设计测试用例时,我们也常常为测试用例的“颗粒度”而伤神。如果把测试用例设计得很细,照顾到每一个数据输入、每一个条件、每一个环境、每一个路径,那么 测试用例的数量将是巨大的,虽然风险很小很小,但是测试效率会很低,并且测试执行没有思考的空间,可能使测试执行人员变得呆板(除非全部测试自动化),不 需要创造力、思考。测试用例设计很粗,测试效率可能比较高,测试人员有一个发挥的空间,使测试更有趣,但这依赖于个人的责任感和能力,风险大得多。


561/3123>
Open Toolbar