<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    #

    db2診斷系列之---捕獲sql執(zhí)行情況

    作者:tacy lee

    在應(yīng)用使用過(guò)程中,我們經(jīng)常會(huì)碰到應(yīng)用響應(yīng)時(shí)間很慢,甚至沒(méi)有響應(yīng),但是應(yīng)用服務(wù)器可能并不是很繁忙,cpu利用率也非常低,引起這種狀況的原因有很多種,比如環(huán)境問(wèn)題,應(yīng)用資源泄漏,數(shù)據(jù)庫(kù)原因等等,本文主要是從一次應(yīng)用性能診斷過(guò)程來(lái)談?wù)勅绾瓮ㄟ^(guò)數(shù)據(jù)庫(kù)診斷應(yīng)用性能問(wèn)題。

    問(wèn)題:

    測(cè)試過(guò)程中發(fā)現(xiàn)應(yīng)用中某個(gè)跳轉(zhuǎn)頁(yè)面執(zhí)行時(shí)間比較長(zhǎng),系統(tǒng)壓力不大,cpu利用很低,該頁(yè)面需要從cache中取數(shù)據(jù),第一次的時(shí)候加載cache(從數(shù)據(jù)庫(kù)中查詢回?cái)?shù)據(jù)并cache)。

    診斷:

    頁(yè)面邏輯比較簡(jiǎn)單,我們先用loadrunner模擬并發(fā)測(cè)試一下這個(gè)頁(yè)面,然后再數(shù)據(jù)庫(kù)端捕獲sql執(zhí)行情況。

    1、打開db2監(jiān)控開關(guān)

    #db2 connect to eos
    #db2 update monitor switches using statement on
    #db2 reset monitor all

    2、幾分鐘之后,我們收集sql統(tǒng)計(jì)快照

    #db2 get snapshot for dynamic sql on eos > dysqlstatus.out

    現(xiàn)在統(tǒng)計(jì)信息已經(jīng)存放在dysqlstatus.out中,你可以使用任意方便的文本處理工具查看,我一般用windows上的gvim來(lái)處理,打開dysqlstatus.out

    Number of executions = 1

    Number of compilations = 1
    Worst preparation time (ms) = 2
    Best preparation time (ms) = 2
    Internal rows deleted = 0
    Internal rows inserted = 0
    Rows read = 2
    Internal rows updated = 0
    Rows written = 0
    Statement sorts = 0
    Statement sort overflows = 0
    Total sort time = 0
    Buffer pool data logical reads = Not Collected
    Buffer pool data physical reads = Not Collected
    Buffer pool temporary data logical reads = Not Collected
    Buffer pool temporary data physical reads = Not Collected
    Buffer pool index logical reads = Not Collected
    Buffer pool index physical reads = Not Collected
    Buffer pool temporary index logical reads = Not Collected
    Buffer pool temporary index physical reads = Not Collected
    Total execution time (sec.ms) = 0.000377
    Total user cpu time (sec.ms) = 0.010000
    Total system cpu time (sec.ms) = 0.000000
    Statement text = select ACTIVITYDEFID,ACTIVITYINSTID from wfworkitem where

    PROCESSINSTID=104199 and CURRENTSTATE = 4

    ......

    簡(jiǎn)單說(shuō)一下vi中的處理

    :g!/Total execution time/d
    只保留文本中的sql執(zhí)行時(shí)間,我們要按照?qǐng)?zhí)行時(shí)間來(lái)排序

    通過(guò)vim的visual功能選擇執(zhí)行時(shí)間塊(等號(hào)后面的數(shù)字),然后排序
    Total execution time (sec.ms) = 0.050590
    Total execution time (sec.ms) = 0.000170
    Total execution time (sec.ms) = 0.000247
    Total execution time (sec.ms) = 0.000292
    Total execution time (sec.ms) = 0.000474
    Total execution time (sec.ms) = 0.000330
    Total execution time (sec.ms) = 0.000348
    Total execution time (sec.ms) = 0.000279
    Total execution time (sec.ms) = 0.000385
    Total execution time (sec.ms) = 0.000296
    Total execution time (sec.ms) = 0.000261
    Total execution time (sec.ms) = 0.000195
    Total execution time (sec.ms) = 0.000226
    Total execution time (sec.ms) = 0.000227
    Total execution time (sec.ms) = 0.000193
    ......
    :'<,'>!sort

    排序后的結(jié)果(部分)
    Total execution time (sec.ms) = 2.027776
    Total execution time (sec.ms) = 2.203624
    Total execution time (sec.ms) = 2.504677
    Total execution time (sec.ms) = 2.951256
    Total execution time (sec.ms) = 3.119875
    Total execution time (sec.ms) = 3.303277
    Total execution time (sec.ms) = 3.303517
    Total execution time (sec.ms) = 4.017133
    Total execution time (sec.ms) = 4.043329
    Total execution time (sec.ms) = 4.252125
    Total execution time (sec.ms) = 4.400952
    Total execution time (sec.ms) = 4.606765
    Total execution time (sec.ms) = 5.208087
    Total execution time (sec.ms) = 5.778598
    Total execution time (sec.ms) = 8.117470
    Total execution time (sec.ms)      = 9797.905136

    可以看到最長(zhǎng)時(shí)間的sql total執(zhí)行時(shí)間耗費(fèi)了3797.905123s.

    現(xiàn)在我們到dysqlstatus.out中去找這條語(yǔ)句

    Number of executions               = 4602
    Number of compilations = 4294967295
    Worst preparation time (ms) = 2
    Best preparation time (ms) = 2
    Internal rows deleted = 0
    Internal rows inserted = 0
    Rows read = 2963688
    Internal rows updated = 0
    Rows written = 0
    Statement sorts = 0
    Statement sort overflows = 0
    Total sort time = 0
    Buffer pool data logical reads = Not Collected
    Buffer pool data physical reads = Not Collected
    Buffer pool temporary data logical reads = Not Collected
    Buffer pool temporary data physical reads = Not Collected
    Buffer pool index logical reads = Not Collected
    Buffer pool index physical reads = Not Collected
    Buffer pool temporary index logical reads = Not Collected
    Buffer pool temporary index physical reads = Not Collected
    Total execution time (sec.ms) = 9797.905136
    Total user cpu time (sec.ms) = 9.290000
    Total system cpu time (sec.ms) = 1.230000
    Statement text = select * from XXXX_T_CNFACTIVITYDEF

    這條語(yǔ)句總共執(zhí)行了4602次,平均每次的執(zhí)行時(shí)間2S,而且這些數(shù)據(jù)應(yīng)該是被cache起來(lái)的   ;)

    總結(jié):

    上面的方法簡(jiǎn)單總結(jié)了從數(shù)據(jù)庫(kù)層面對(duì)應(yīng)用的性能問(wèn)題診斷,希望對(duì)大家有所幫助,對(duì)于數(shù)據(jù)庫(kù)快照診斷問(wèn)題的思路對(duì)于任意數(shù)據(jù)庫(kù)通用

     

    補(bǔ)充一個(gè)unix上腳本處理方式:

    sqlsort.sh

    awk 'BEGIN{RS="";FS="\n";ORS="\n"};/Statement text/{print $1, $21, $24}' $1 | awk '$5 > 0 {print "AvgTime:", $11/$5, "\t", $0}'| sort -n | head -n $2|awk '{print $0, "\n"}'
     
    使用:#sqlsort.sh dysqlstate.out 10(顯示Top ten)
     
    del.icio.us Tags: ,,,

    posted @ 2007-11-25 14:51 tacy lee 閱讀(636) | 評(píng)論 (0)編輯 收藏

    db2診斷系列之---定位鎖等待問(wèn)題

    作者:tacy lee

    在應(yīng)用中,我們經(jīng)常會(huì)碰到sql執(zhí)行很慢,但是數(shù)據(jù)庫(kù)cpu和內(nèi)存使用率又不高的情況,類似的問(wèn)題基本上由于鎖,排序等原因造成,本文主要描述如何去定位鎖等待問(wèn)題,誰(shuí)在鎖等待?等待誰(shuí)持有的鎖?鎖在那個(gè)表?

    一、測(cè)試準(zhǔn)備

    1、先在session1執(zhí)行如下操作,創(chuàng)建測(cè)試表

    #db2 connect to eos
    #export DB2OPTIONS=+C
    #db2 "create table tacy_test (a int not null primary key,b varchar(10))"
    #db2 "insert into tacy_test values(1,'a')"
    #db2 "insert into tacy_test values(2,'a')"
    #db2 "insert into tacy_test values(3,'a')"
    #db2 "insert into tacy_test values(4,'a')"
    #db2 commit

    2、在session2執(zhí)行如下操作

    #db2 connect to eos
    #export DB2OPTIONS=+C

    二、產(chǎn)生一個(gè)lock wait

    在session1做一個(gè)表更新:

    #db2 "update tacy_test set b='b' where a=4"
    sql執(zhí)行成功
    在session2做同樣更新操作:
    #db2 "update tacy_test set b='c' where a=4"

    進(jìn)程被掛起等待

    三、定位鎖等待

    1、先來(lái)看看應(yīng)用的情況:

    #db2pd -db eos -applications
    
    Database Partition 0 -- Database EOS -- Active -- Up 0 days 07:37:37
    
    Applications:
    Address    AppHandl [nod-index] NumAgents  CoorPid    Status                  C-AnchID C-StmtUID  L-AnchID L-StmtUID  Appid                           
    0x10140040 8        [000-00008] 1          8425       Lock-wait               80       2          66       1          *LOCAL.db2inst1.071124043739    
    0x100CE540 7        [000-00007] 1          8358       UOW-Waiting             0        0          80       2          *LOCAL.db2inst1.071124043708    

    可以看到有一個(gè)應(yīng)用的狀態(tài)處于Lock-wait

    2、現(xiàn)在我們來(lái)看看應(yīng)用在等什么

    #db2pd -db eos -locks showlock wait
    
    Database Partition 0 -- Database EOS -- Active -- Up 0 days 07:42:56
    
    Locks:
    Address    TranHdl    Lockname                   Type       Mode Sts Owner      Dur HldCnt     Att Rlse
    0x2C8E0760 3          02001806078066020000000052 Row        ..X  W   2          1   0          0   0x0  TbspaceID 2 TableID 1560 RecordID 0x2668007

    鎖的類型為Row(行鎖),X鎖(排他鎖),下面是我們最關(guān)心的鎖的位置

    TbspaceID 2 TableID 1560 RecordID 0x2668007

    其中TbspaceID為表空間ID,TableID為表的ID,RecordID代表具體位置,全部應(yīng)該是0x0266807,其中前面三個(gè)字節(jié)為page number,為0x02668,后面一個(gè)字節(jié)代表solt identifier,為0x07

    3、找到相應(yīng)的表

    #db2 "select tbspace,tabschema,tabname,tableid,tbspaceid from syscat.tables where tbspaceid=2 and tableid=1560"
    
    TBSPACE       TABSCHEMA   TABNAME    TABLEID TBSPACEID
    ------------  ----------- ---------- ------- ---------
    USERSPACE1    DB2INST1    TACY_TEST     1560         2
    
      1 record(s) selected.
    

    4、根據(jù)RecordID找到鎖在哪行

    db2提供了一個(gè)強(qiáng)大的數(shù)據(jù)分析工具db2dart,可以dump出相應(yīng)的page數(shù)據(jù)

    #db2dart eos /dd /tsi 2 /oi 1560 /ps 157312p /np 1 /v y
    
    Warning: The database state is not consistent.
    
    Warning: Reorg rows MAY be due to the inconsistent state of the database.
                      DB2DART Processing completed with warning(s)!
                            Complete DB2DART report found in:
    /home/db2inst1/sqllib/db2dump/DART0000/EOS.RPT

    其中tsi為表空間id(2),oi為表id(1560),ps為page number(0x0266807),需要轉(zhuǎn)換為十進(jìn)制,在結(jié)尾必須加p,np代表你要獲取的頁(yè)數(shù),v為是否詳細(xì)輸出

    現(xiàn)在我們來(lái)看看EOS.RPT

    ______________________________________________________________________________
    
            _______                    DART                   _______ 
    
       D a t a b a s e   A n a l y s i s   a n d   R e p o r t i n g   T o o l
    
                               IBM    DB2    6000
    ______________________________________________________________________________
    
    DART (V8.1.0)  Report:
    2007-11-24-20.59.51.355893
    
                Database Name: EOS
                Report name: EOS.RPT
                Old report back-up: EOS.BAK
                Database Subdirectory: /opt/db2/db2inst1/NODE0000/SQL00001
                Operational Mode: Database Inspection Only (INSPECT)
    
    ______________________________________________________________________________
    ------------------------------------------------------------------------------
    
    
    Action option: DD 
    Table-object-ID: 1560; Tablespace-ID: 2; First-page: 157312p; Number-pages: 1; Verbose: y
    
    Warning: The database state is not consistent.
    
    Warning: Reorg rows MAY be due to the inconsistent state of the database.
    Connecting to Buffer Pool Services...
    
       Table object report phase start.
       Dump format is verbose.
    
                               ______________________________________
    
             Page 0 of object 1560 from table space 2.
    
             BPS Page Header:
    
                         Page Data Offset = 48
                         Page Data Length = 4048
                                 Page LSN = 0000 AE97 AE41
                       Object Page Number = 0
                         Pool Page Number = 157312
                                Object ID = 1560
                              Object Type = Data Object
    
                   Data Page Header:
    
                               Slot Count = 8
                         Total Free Space = 2784
                      Total Reserve Space = 0
                   Youngest Reserve Space = n/a
                             Youngest TID = n/a
                        Free Space Offset = 2799
                      Maximum Record Size = 23
    
                   Data Records:
    
    
                Slot 0:
    
                   Offset Location = 3996  (xF9C)
                   Record Length = 32  (x20)
    
                   Record Type = Data Object Header Control Record
    
                      Page count = 1
             Object Creation LSN = 0000 AE97 800C
                    Object State = x0000
              UDI Since Runstats = 0
                      DART Field = x00000000
    
                Slot 1:
    
                   Offset Location = 2992  (xBB0)
                   Record Length = 1004  (x3EC)
    
                   Record Type = Free Space Control Record
    
                   Free space entries:
                     0:  2884 (x0B44),  4028 (x0FBC),  4028 (x0FBC),  4028 (x0FBC)
                     4:  4028 (x0FBC),  4028 (x0FBC),  4028 (x0FBC),  4028 (x0FBC)
                     8:  4028 (x0FBC),  4028 (x0FBC),  4028 (x0FBC),  4028 (x0FBC)
                   省略。。。
                      492:  4028 (x0FBC),  4028 (x0FBC),  4028 (x0FBC),  4028 (x0FBC)
                      496:  4028 (x0FBC),  4028 (x0FBC),  4028 (x0FBC),  4028 (x0FBC)
    
                Slot 2:
    
                   Offset Location = 2916  (xB64)
                   Record Length = 76  (x4C)
    
                   Record Type = Table Directory Record
    
                      MetaIndex Root Page = 157377
                      Index Type = 2
                      Table Descriptor Pointer  --  Page 157312  Slot 3
                      Max Insert Search = 0
                      Flags = x02000200
                         bit representation = 00000010 00000000 00000010 00000000
                      Check pending info:
                         Constraint status    = x00
                         Constraint RID       = Page 0 Slot 0
                         last BID          = x00000000
    
                Slot 3:
    
                   Offset Location = 2892  (xB4C)
                   Record Length = 24  (x18)
    
                   Record Type = Table Description Record
    
                      Number of Columns = 2
    
    
                      Column 1:
                      Type is Long Integer
                      Length = 4
                      Prohibits NULLs
                      Prohibits Default
                Fixed offset: 0
    
                      Column 2:
                      Type is Fixed Length Character String
                      Length = 10
                      Allows NULLs
                      Prohibits Default
                Fixed offset: 4
    
                Slot 4:
    
                   Offset Location = 2869  (xB35)
                   Record Length = 23  (x17)
    
                   Record Type = Table Data Record (FIXEDVAR)
    
                   Fixed part length value = 15
    
                      Column 1:
                Fixed offset: 0
                      Type is Long Integer
                      Value = 1
    
                      Column 2:
                Fixed offset: 4
                      Type is Fixed Length Character String
                          61202020 20202020 2020                 a               
    
    
                Slot 5:
    
                   Offset Location = 2846  (xB1E)
                   Record Length = 23  (x17)
    
                   Record Type = Table Data Record (FIXEDVAR)
    
                   Fixed part length value = 15
    
                      Column 1:
                Fixed offset: 0
                      Type is Long Integer
                      Value = 2
    
                      Column 2:
                Fixed offset: 4
                      Type is Fixed Length Character String
                          61202020 20202020 2020                 a               
    
    
                Slot 6:
    
                   Offset Location = 2823  (xB07)
                   Record Length = 23  (x17)
    
                   Record Type = Table Data Record (FIXEDVAR)
    
                   Fixed part length value = 15
    
                      Column 1:
                Fixed offset: 0
                      Type is Long Integer
                      Value = 3
    
                      Column 2:
                Fixed offset: 4
                      Type is Fixed Length Character String
                          61202020 20202020 2020                 a               
    
    
                Slot 7:
    
                   Offset Location = 2800  (xAF0)
                   Record Length = 23  (x17)
    
                   Record Type = Table Data Record (FIXEDVAR)
    
                   Fixed part length value = 15
    
                      Column 1:
                Fixed offset: 0
                      Type is Long Integer
                      Value = 4
    
                      Column 2:
                Fixed offset: 4
                      Type is Fixed Length Character String
                          61202020 20202020 2020                 a               
    
    
             Slots Summary:  Total=8,  In-use=8,  Deleted=0.
    
          
       Table object report phase end.
                         ______________________________________
    
                      DB2DART Processing completed with warning(s)!
                         Warning(s) detected during processing.
                         ______________________________________
    
                            Complete DB2DART report found in:
    /home/db2inst1/sqllib/db2dump/DART0000/EOS.RPT
        _______    D A R T    P R O C E S S I N G    C O M P L E T E    _______

    找到Solt 7 (0x07),ok,你現(xiàn)在可以清楚的知道應(yīng)用等待的Row為(4,a)

     

    總結(jié)

    通過(guò)上面的方法,我們簡(jiǎn)單描述了一個(gè)db2鎖問(wèn)題的定位方法,希望能給大家在分析和定位應(yīng)用性能問(wèn)題的時(shí)候起到一定的幫助

    del.icio.us Tags: ,,,

    posted @ 2007-11-24 21:18 tacy lee 閱讀(3060) | 評(píng)論 (2)編輯 收藏

    深入理解Loadrunner中的Browser Emulation

    作者:tacy lee

    一:基本介紹

    在Loadrunner的使用中,對(duì)于Run-time Settings下的browser emulation設(shè)置是比較容易讓人產(chǎn)生困惑的地方。下面我們結(jié)合sniffer來(lái)具體看看每個(gè)選項(xiàng)的用途,以及對(duì)測(cè)試的影響。

    clip_image002

                                                   Browser Emulation 圖

    二:案例和工具

    1. 測(cè)試案例:

    打開網(wǎng)站首頁(yè)兩次,對(duì)比不同Browser Emulation設(shè)置下loadrunner的行為,腳本如下。

    Action()
    {
        web_url("www.primeton.com", 
            "URL=http://www.primeton.com/", 
            "Resource=0", 
            "RecContentType=text/html", 
            "Referer=", 
            "Snapshot=t2.inf", 
            "Mode=HTML", 
            LAST);
    
        web_url("www.primeton.com", 
            "URL=http://www.primeton.com/", 
            "Resource=0", 
            "RecContentType=text/html", 
            "Referer=", 
            "Snapshot=t2.inf", 
            "Mode=HTML", 
            LAST);
    
        return 0;
    }
    

    2. sniffer工具

    開源工具:Wireshark(前身是ethereal)(www.wireshark.org)

    三:測(cè)試過(guò)程

    為了方便描述,我們約定用:

    A代表Simulate browser cache

    B代表Cache URLs requiring content(HTMLs)

    C代表Check for newer versions of stored pages every visit to the page

    D代表Download non-HTML resources

    E代表Simulate a new user on each iteratioin

    F代表Clear cache on each iteration

    首先設(shè)置Run Logic中的iteration為2。讓Action運(yùn)行兩次,看看循環(huán)運(yùn)行腳本兩次,數(shù)據(jù)包和連接數(shù)的變化。

    1. 去掉所有選項(xiàng)

    結(jié)果:共獲取數(shù)據(jù)包95個(gè),建立連接1個(gè)(紅色標(biāo)識(shí)),斷開連接1個(gè)(藍(lán)色標(biāo)識(shí))

    No.     Time        Source            Destination       Protocol Info
          1 0.000000    192.168.1.61      203.81.29.137     TCP      13835 > http [SYN] Seq=0 Len=0 MSS=1460 WS=2
          2 0.036053    203.81.29.137     192.168.1.61      TCP      http > 13835 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
         92 1.415887    192.168.1.61      203.81.29.137     TCP      13835 > http [FIN, ACK] Seq=817 Ack=71762 Win=257760 Len=0
         94 1.449960    203.81.29.137     192.168.1.61      TCP      http > 13835 [FIN, ACK] Seq=71762 Ack=818 Win=16464 Len=0
    

    在這種情況下,數(shù)據(jù)包非常少(沒(méi)有選擇下載資源文件入css,js,gif等),而且你可以看到,打開4次首頁(yè),只建立了一個(gè)tcp連接。

    這時(shí),你即使選擇A,發(fā)現(xiàn)數(shù)據(jù)包的數(shù)量量頁(yè)沒(méi)有變化,因?yàn)閏ache主要還是針對(duì)資源文件

    2. 選擇E(F)

    結(jié)果:共獲取數(shù)據(jù)包102個(gè),建立連接2個(gè)(紅色標(biāo)識(shí)),斷開連接2個(gè)(藍(lán)色標(biāo)識(shí))

    No.     Time        Source            Destination       Protocol Info
          1 0.000000    192.168.1.61      203.81.29.137     TCP      13886 > http [SYN] Seq=0 Len=0 MSS=1460 WS=2
          2 0.037013    203.81.29.137     192.168.1.61      TCP      http > 13886 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
         48 0.618117    192.168.1.61      203.81.29.137     TCP      13886 > http [FIN, ACK] Seq=409 Ack=35882 Win=257760 Len=0
         49 0.644106    192.168.1.61      203.81.29.137     TCP      13887 > http [SYN] Seq=0 Len=0 MSS=1460 WS=2
         51 0.651919    203.81.29.137     192.168.1.61      TCP      http > 13886 [FIN, ACK] Seq=35882 Ack=410 Win=16872 Len=0
         53 0.676377    203.81.29.137     192.168.1.61      TCP      http > 13887 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
         99 1.310379    192.168.1.61      203.81.29.137     TCP      13887 > http [FIN, ACK] Seq=409 Ack=35882 Win=257760 Len=0
    101 1.347949    203.81.29.137     192.168.1.61      TCP      http > 13887 [FIN, ACK] Seq=35882 Ack=410 Win=16872 Len=0
    

    在這種情況下,數(shù)據(jù)包非常少(沒(méi)有選擇下載資源文件入css,js,gif等),對(duì)比第一種情況,你會(huì)發(fā)現(xiàn)它建立了兩個(gè)連接,這就是E的作用,它對(duì)于每次迭代都當(dāng)成一個(gè)新的用戶,需要重新建立連接。

    3. 選擇DE(F)

    結(jié)果:共獲取數(shù)據(jù)包1782個(gè),建立連接6個(gè)(紅色標(biāo)識(shí)),斷開連接6個(gè)(藍(lán)色標(biāo)識(shí))

    No.     Time        Source            Destination       Protocol Info
          1 0.000000    192.168.1.61      203.81.29.137     TCP      14016 > http [SYN] Seq=0 Len=0 MSS=1460 WS=2
          2 0.037911    203.81.29.137     192.168.1.61      TCP      http > 14016 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
          6 0.107432    192.168.1.61      203.81.29.137     TCP      14017 > http [SYN] Seq=0 Len=0 MSS=1460 WS=2
          9 0.141816    203.81.29.137     192.168.1.61      TCP      http > 14017 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
        426 3.334889    192.168.1.61      203.81.29.137     TCP      14017 > http [FIN, ACK] Seq=1852 Ack=150284 Win=257484 Len=0
        428 3.372253    203.81.29.137     192.168.1.61      TCP      http > 14017 [FIN, ACK] Seq=150284 Ack=1853 Win=16998 Len=0
        448 4.395488    192.168.1.61      203.81.29.137     TCP      14020 > http [SYN] Seq=0 Len=0 MSS=1460 WS=2
        457 4.439604    203.81.29.137     192.168.1.61      TCP      http > 14020 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
        859 7.593610    192.168.1.61      203.81.29.137     TCP      14016 > http [FIN, ACK] Seq=2849 Ack=377404 Win=257484 Len=0
        870 7.659680    203.81.29.137     192.168.1.61      TCP      http > 14016 [FIN, ACK] Seq=377404 Ack=2850 Win=15935 Len=0
        888 8.511308    192.168.1.61      203.81.29.137     TCP      14020 > http [FIN, ACK] Seq=1602 Ack=208150 Win=257760 Len=0
        890 8.549451    203.81.29.137     192.168.1.61      TCP      http > 14020 [FIN, ACK] Seq=208150 Ack=1603 Win=17280 Len=0
        892 8.566246    192.168.1.61      203.81.29.137     TCP      14022 > http [SYN] Seq=0 Len=0 MSS=1460 WS=2
        893 8.601893    203.81.29.137     192.168.1.61      TCP      http > 14022 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
        899 8.702628    192.168.1.61      203.81.29.137     TCP      14023 > http [SYN] Seq=0 Len=0 MSS=1460 WS=2
        904 8.741807    203.81.29.137     192.168.1.61      TCP      http > 14023 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
       1298 11.809456   192.168.1.61      203.81.29.137     TCP      14022 > http [FIN, ACK] Seq=1550 Ack=159770 Win=257484 Len=0
       1310 11.878665   203.81.29.137     192.168.1.61      TCP      http > 14022 [FIN, ACK] Seq=159770 Ack=1551 Win=17280 Len=0
       1341 12.771707   192.168.1.61      203.81.29.137     TCP      14026 > http [SYN] Seq=0 Len=0 MSS=1460 WS=2
       1348 12.813950   203.81.29.137     192.168.1.61      TCP      http > 14026 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
       1759 16.032952   192.168.1.61      203.81.29.137     TCP      14023 > http [FIN, ACK] Seq=3151 Ack=367918 Win=257484 Len=0
       1761 16.068296   203.81.29.137     192.168.1.61      TCP      http > 14023 [FIN, ACK] Seq=367918 Ack=3152 Win=17280 Len=0
       1779 16.983042   192.168.1.61      203.81.29.137     TCP      14026 > http [FIN, ACK] Seq=1602 Ack=208150 Win=257760 Len=0
       1781 17.016836   203.81.29.137     192.168.1.61      TCP      http > 14026 [FIN, ACK] Seq=208150 Ack=1603 Win=17280 Len=0
    

    在這種情況下,數(shù)據(jù)包的數(shù)量非常大,連接也很多,由于沒(méi)有cache功能,每次打開頁(yè)面都需要重新下載所有的資源文件。

    4. 選擇ADE

    結(jié)果:共獲取數(shù)據(jù)包525個(gè),建立連接3個(gè),斷開連接3個(gè)(不再標(biāo)識(shí)了,syn即為連接請(qǐng)求,fin即為斷開請(qǐng)求)

    No.     Time        Source            Destination       Protocol Info
          1 0.000000    192.168.1.61      203.81.29.137     TCP      14189 > http [SYN] Seq=0 Len=0 MSS=1460 WS=2
          2 0.033657    203.81.29.137     192.168.1.61      TCP      http > 14189 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
          6 0.100636    192.168.1.61      203.81.29.137     TCP      14190 > http [SYN] Seq=0 Len=0 MSS=1460 WS=2
          9 0.133703    203.81.29.137     192.168.1.61      TCP      http > 14190 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
        429 3.383748    192.168.1.61      203.81.29.137     TCP      14190 > http [FIN, ACK] Seq=1852 Ack=150284 Win=257484 Len=0
        431 3.418556    203.81.29.137     192.168.1.61      TCP      http > 14190 [FIN, ACK] Seq=150284 Ack=1853 Win=16998 Len=0
        471 4.352071    192.168.1.61      203.81.29.137     TCP      14189 > http [FIN, ACK] Seq=1504 Ack=235576 Win=257760 Len=0
        472 4.380312    192.168.1.61      203.81.29.137     TCP      14192 > http [SYN] Seq=0 Len=0 MSS=1460 WS=2
        474 4.389778    203.81.29.137     192.168.1.61      TCP      http > 14189 [FIN, ACK] Seq=235576 Ack=1505 Win=17280 Len=0
        476 4.413220    203.81.29.137     192.168.1.61      TCP      http > 14192 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
        522 5.078068    192.168.1.61      203.81.29.137     TCP      14192 > http [FIN, ACK] Seq=409 Ack=35882 Win=257760 Len=0
    524 5.115099    203.81.29.137     192.168.1.61      TCP      http > 14192 [FIN, ACK] Seq=35882 Ack=410 Win=16872 Len=0
    

    在這種情況下,cache發(fā)揮作用,數(shù)據(jù)包對(duì)比第三種情況大大減少,幾乎等于打開一次首頁(yè)的數(shù)據(jù)量(449個(gè)數(shù)據(jù)包),只有第一次打開頁(yè)面需要完整下載頁(yè)面(包括資源文件),后面的三次打開頁(yè)面都只要下載HTML頁(yè)面(不包括資源文件)。

    5. 選擇ADEF

    選擇F之后我們看看結(jié)果:共獲取數(shù)據(jù)包942個(gè),建立連接4個(gè),斷開連接4個(gè)

    No.     Time        Source            Destination       Protocol Info
          1 0.000000    192.168.1.61      203.81.29.137     TCP      14292 > http [SYN] Seq=0 Len=0 MSS=1460 WS=2
          2 0.034524    203.81.29.137     192.168.1.61      TCP      http > 14292 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
          6 0.102314    192.168.1.61      203.81.29.137     TCP      14294 > http [SYN] Seq=0 Len=0 MSS=1460 WS=2
          9 0.139752    203.81.29.137     192.168.1.61      TCP      http > 14294 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
        426 3.791111    192.168.1.61      203.81.29.137     TCP      14294 > http [FIN, ACK] Seq=1852 Ack=150284 Win=257484 Len=0
        428 3.824970    203.81.29.137     192.168.1.61      TCP      http > 14294 [FIN, ACK] Seq=150284 Ack=1853 Win=16998 Len=0
        468 6.213276    192.168.1.61      203.81.29.137     TCP      14292 > http [FIN, ACK] Seq=1504 Ack=235576 Win=257760 Len=0
        469 6.244052    192.168.1.61      203.81.29.137     TCP      14297 > http [SYN] Seq=0 Len=0 MSS=1460 WS=2
        471 6.249564    203.81.29.137     192.168.1.61      TCP      http > 14292 [FIN, ACK] Seq=235576 Ack=1505 Win=17280 Len=0
        473 6.279647    203.81.29.137     192.168.1.61      TCP      http > 14297 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
        479 6.374967    192.168.1.61      203.81.29.137     TCP      14298 > http [SYN] Seq=0 Len=0 MSS=1460 WS=2
        484 6.419597    203.81.29.137     192.168.1.61      TCP      http > 14298 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
        897 9.858493    192.168.1.61      203.81.29.137     TCP      14297 > http [FIN, ACK] Seq=1550 Ack=159770 Win=257484 Len=0
        899 9.895188    203.81.29.137     192.168.1.61      TCP      http > 14297 [FIN, ACK] Seq=159770 Ack=1551 Win=17280 Len=0
        939 12.840029   192.168.1.61      203.81.29.137     TCP      14298 > http [FIN, ACK] Seq=1806 Ack=226090 Win=257760 Len=0
        941 12.876120   203.81.29.137     192.168.1.61      TCP      http > 14298 [FIN, ACK] Seq=226090 Ack=1807 Win=17076 Len=0
    

    在這種情況下,由于選擇了F,在迭代的時(shí)候清除了cache,所以每次迭代都需要重新下載資源文件。數(shù)據(jù)包差不多等于第三種情況的一半,約等于打開兩次首頁(yè)的數(shù)據(jù)量(449×2個(gè)數(shù)據(jù)包)。

    6. 關(guān)于BC選項(xiàng)

    C的解釋(Check for newer versions of stored pages every visit to the page

    C比較容易理解,類似IE設(shè)置中的每次檢查,如果不設(shè)置C,LR對(duì)于已經(jīng)cache的文件就不會(huì)重新向服務(wù)器請(qǐng)求,如果選擇C,你就可以在數(shù)據(jù)包中發(fā)現(xiàn)很多304信息。

    B的解釋(Cache URLs requiring content(HTMLs)

    LR對(duì)于資源文件的cache并不會(huì)真正cache在內(nèi)存中或者在磁盤上,這個(gè)選項(xiàng)表示:對(duì)于一些需要用到的關(guān)聯(lián),校驗(yàn),頁(yè)面解析內(nèi)容真正cache在內(nèi)存中,減少客戶端的重復(fù)工作。

    當(dāng)然如果你想把GIF也cache到內(nèi)存中,你可以在Advanced中設(shè)置,選擇Specify URL requiring content in addition to HTML pages,加入條目image/gif,并勾選。當(dāng)Vuser運(yùn)行的時(shí)候,你可以對(duì)比一下mmdrv.exe進(jìn)程的內(nèi)存消耗(內(nèi)存占用會(huì)更多)。

    四: 結(jié)論

    通過(guò)上面的測(cè)試分析,我們大概知道了每個(gè)選項(xiàng)的真正含義,你需要根據(jù)你的測(cè)試目的來(lái)選擇合適的設(shè)置:

    1、 對(duì)于一個(gè)具體的應(yīng)用測(cè)試,對(duì)于前端Web Server不可忽略,缺省設(shè)置非常合適,不需要調(diào)整(有時(shí)候需要考慮把C選上)

    注意:很多人在錄制腳本的時(shí)候,習(xí)慣把登入操作放到vuser_init中,這時(shí)候缺省設(shè)置可能會(huì)拋錯(cuò),建議把這類的操作都放入到action中

    2、 如果你更關(guān)注后端應(yīng)用服務(wù)器的性能或者說(shuō)做一些架構(gòu)的驗(yàn)證分析,那你缺省設(shè)置對(duì)于你來(lái)說(shuō)就不合適了,你需要選擇取消所有的設(shè)置項(xiàng)。

    當(dāng)然你也可以根據(jù)自己的具體情況做不同調(diào)整,但是一定要真正理解這些選項(xiàng)的具體含義才能做到不犯錯(cuò)誤

    del.icio.us Tags: , ,

    posted @ 2007-11-06 00:19 tacy lee 閱讀(1352) | 評(píng)論 (0)編輯 收藏

    java 編譯異常解決一則

    編譯的時(shí)候出現(xiàn)java拋如下異常:

    java.nio.BufferOverflowException
    at java.nio.Buffer.nextPutIndex(Buffer.java:419)
    at java.nio.HeapCharBuffer.put(HeapCharBuffer.java:145)
    at com.sun.tools.javac.parser.Scanner.decode(Scanner.java:405)
    at com.sun.tools.javac.parser.Scanner.<init>(Scanner.java:304)
    at com.sun.tools.javac.parser.Scanner.<init>(Scanner.java:238)
    at com.sun.tools.javac.parser.Scanner$Factory.newScanner(Scanner.java:72)
    at com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:254)
    at com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:281)
    at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:399)
    at com.sun.tools.javac.main.Main.compile(Main.java:592)
    at com.sun.tools.javac.main.Main.compile(Main.java:544)
    at com.sun.tools.javac.Main.compile(Main.java:67)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.apache.tools.ant.taskdefs.compilers.Javac13.execute(Javac13.java:55)
    at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:936)
    at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:758)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
    at org.apache.tools.ant.Task.perform(Task.java:364)
    at org.apache.tools.ant.Target.execute(Target.java:341)
    at org.apache.tools.ant.Target.performTasks(Target.java:369)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1214)
    at com.primeton.studio.compile.java.bizlets.BizletProcessor.startAnt(BizletProcessor.java:327)
    at com.primeton.studio.compile.java.bizlets.BizletProcessor.prepareclass(BizletProcessor.java:419)
    at com.primeton.studio.compile.java.bizlets.BizletProcessor.init(BizletProcessor.java:374)
    at com.primeton.studio.compile.java.bizlets.BizletProcessor.build(BizletProcessor.java:130)
    at com.primeton.studio.compile.frame.ProjectProcessor.buildBizlets(ProjectProcessor.java:161)
    at com.primeton.studio.compile.frame.ProjectProcessor.build(ProjectProcessor.java:115)
    at com.primeton.studio.compile.frame.SimpleBuilder.build(SimpleBuilder.java:195)
    at com.primeton.studio.compile.frame.SimpleBuilder.build(SimpleBuilder.java:182)
    at com.primeton.studio.compile.frame.SimpleBuilder.main(SimpleBuilder.java:265)

    查了一下,估計(jì)是java采用gbk字符集(缺省windows的中文字符集),導(dǎo)致stack區(qū)溢出(明顯沒(méi)對(duì)國(guó)際化測(cè)試不足嘛)

    解決問(wèn)題的方法就是修改系統(tǒng)的缺省區(qū)域設(shè)置為English既可。

    del.icio.us Tags: , , ,

    posted @ 2007-11-05 22:37 tacy lee 閱讀(1221) | 評(píng)論 (0)編輯 收藏

    一次支持日志

    故障現(xiàn)象:

    測(cè)試一段時(shí)間后應(yīng)用無(wú)響應(yīng),連接池不能放大,jvm crash,日志報(bào)對(duì)象分配失敗

     

    問(wèn)題診斷:

    第一個(gè)階段是websphere問(wèn)題

    到現(xiàn)場(chǎng)之后,回放腳本測(cè)試幾分鐘,應(yīng)用開始無(wú)法響應(yīng),后臺(tái)也沒(méi)有異常,update jdk之后,系統(tǒng)能正常響應(yīng)了,但是發(fā)現(xiàn)新的問(wèn)題,db2連接池始終無(wú)法放大,最大只能到30,而且系統(tǒng)也會(huì)拋OOM,導(dǎo)致系統(tǒng)異常推出,從系統(tǒng)日志看,是因?yàn)閼?yīng)用中的大對(duì)象分配導(dǎo)致的(2M大小)

    期間,關(guān)于連接池?zé)o法放大問(wèn)題想了很多辦法,包括修改db2 maxappls,maxagents這些參數(shù),更新數(shù)據(jù)庫(kù)驅(qū)動(dòng),而且確定不是db2的問(wèn)題(在創(chuàng)建30之后,我們依然可以通過(guò)其他方式連接到db2,說(shuō)明db2的連接限制確實(shí)放大了),當(dāng)然我們productdatasource這個(gè)池子大小我已經(jīng)放大到100了。

    中間還發(fā)現(xiàn)測(cè)試腳本沒(méi)有正常啟動(dòng)流程,排查后發(fā)現(xiàn)是loadrunner的問(wèn)題,用我機(jī)器上的lr錄制正常(錯(cuò)誤代碼提示是字段長(zhǎng)度限制,莫名其妙)。

    關(guān)于jvm crach我們也調(diào)整了heap設(shè)置:-xms256m,-xmx1536m

    但是問(wèn)題依然存在。后面我們重新安裝了應(yīng)用,所有的設(shè)置采用缺省配置,沒(méi)有打任何補(bǔ)丁,系統(tǒng)這個(gè)時(shí)候竟然可以正常跑了,只是響應(yīng)很慢,而且時(shí)間曲線一直往上拋(測(cè)試一段時(shí)間系統(tǒng)無(wú)響應(yīng))

    查了一下配置,發(fā)現(xiàn)productdatasource的缺省設(shè)置竟然就是30,這個(gè)時(shí)候基本判斷是之前的websphere的設(shè)置修改沒(méi)有生效

    重新修改jvm和連接池配置,這時(shí)候系統(tǒng)正常,數(shù)據(jù)連接也達(dá)到83個(gè),然后開始測(cè)試大并發(fā)量

     

    階段二就是調(diào)整數(shù)據(jù)庫(kù)配置

    1、第一個(gè)是db2 default buffer pool,缺省配置buffer才4m,這個(gè)一定要注意修改

    2、第二個(gè)是db2的lock數(shù)量,在缺省基礎(chǔ)上好像放大了100倍

    3、sort heap,排序區(qū)(防止排序溢出)

    這些調(diào)整都要通過(guò)db2的狀態(tài)來(lái)調(diào)整,可以通過(guò)get snapshot指令來(lái)獲得數(shù)據(jù)庫(kù)狀態(tài),buffer不夠會(huì)出現(xiàn)大量的邏輯讀,lock不夠會(huì)拋lock溢出(會(huì)導(dǎo)致鎖升級(jí)),sort heap不夠會(huì)提示排序溢出(這時(shí)候排序會(huì)在硬盤做)

     

    回頭看看這次支持:

    1、websphere配置修改不生效,我后面仔細(xì)想了想,這個(gè)websphere很多公司用可能大家都亂改了一通,另一問(wèn)題是我們的使用習(xí)慣,websphere強(qiáng)烈不建議用kill直接殺進(jìn)程方式停服務(wù)器,websphere不但是一個(gè)java進(jìn)程,還有很多的附屬進(jìn)程,直接kill也很容易導(dǎo)致websphere不正常

    2、jvm crach問(wèn)題,這個(gè)我建議大家看看這篇文檔http://www-1.ibm.com/support/docview.wss?rs=180&context=SSEQTP&q1=fragmentation

    &uid=swg21176363&loc=en_US&cs=utf-8&lang=en

    如何去定位jvm問(wèn)題,首先看nativerr.log日志,如果出現(xiàn)OOM,這里會(huì)有記錄,當(dāng)發(fā)現(xiàn)OOM的時(shí)候,可以打開jvm的verbosegc,分析verbosegc和jvm dump file,上面文檔里提到一個(gè)很重要的東西就是pinned對(duì)象,這也是ibm為啥不建議設(shè)置ms=mx的原因。

    posted @ 2007-10-30 13:09 tacy lee 閱讀(371) | 評(píng)論 (0)編輯 收藏

    捕獲DB2 sql的執(zhí)行快照

    先建立一個(gè)監(jiān)控器

    db2 "create event monitor SQLCOST for statements write to file '/home/db2inst1'"

    再設(shè)置事務(wù)狀態(tài)為打開

    db2 "set event monitor SQLCOST state=1"

    注:1為打開,0為關(guān)閉,收集數(shù)據(jù)之后,記得關(guān)閉你的監(jiān)控器,否則。。。

    跑你的測(cè)試后,在你的/home/db2inst1目錄下會(huì)生成一些evm文件

    用下面指令獲取診斷信息:

    db2evmon -db eos51 -evm SQLCOST>sqlcost1.txt

    完成之后刪除你的監(jiān)控器

    db2 "drop event monitor SQLCOST"

    生成的采樣例子,從下面的例子中,你可以清除的看到SQL執(zhí)行的時(shí)間,CPU消耗情況,排序是否溢出,BufferPool的使用情況,根據(jù)這些信息,SQL的執(zhí)行效率一目了然:

    26) Statement Event ...

    Appl Handle: 336

    Appl Id: C0A80421.O905.0ABDA5065446

    Appl Seq number: 0657

    Record is the result of a flush: FALSE

    -------------------------------------------

    Type : Dynamic

    Operation: Execute

    Section : 7

    Creator : NULLID

    Package : SYSSN300

    Consistency Token : SYSLVL01

    Package Version ID :

    Cursor : SQL_CURSN300C7

    Cursor was blocking: FALSE

    Text : update WFProcessInst set relateData=? where processInstID= ?

    -------------------------------------------

    Start Time: 04/25/2007 14:57:19.402248

    Stop Time: 04/25/2007 14:57:19.409622

    Exec Time: 0.007374 seconds

    Number of Agents created: 1

    User CPU: 0.000000 seconds

    System CPU: 0.000000 seconds    [licl1]

    Fetch Count: 0

    Sorts: 0

    Total sort time: 0

    Sort overflows: 0    [licl2]

    Rows read: 1

    Rows written: 1

    Internal rows deleted: 0

    Internal rows updated: 0

    Internal rows inserted: 0

    Bufferpool data logical reads: 9

    Bufferpool data physical reads: 0

    Bufferpool temporary data logical reads: 0

    Bufferpool temporary data physical reads: 0

    Bufferpool index logical reads: 3

    Bufferpool index physical reads: 0

    Bufferpool temporary index logical reads: 0

    Bufferpool temporary index physical reads: 0    [licl3]

    SQLCA:

    sqlcode: 0

    sqlstate: 00000


    [licl1]SQL執(zhí)行時(shí)間和CPU消耗情況

    [licl2]SQL的排序情況,可以看到這個(gè)SQL沒(méi)有排序,當(dāng)然也沒(méi)有排序溢出

    [licl3]Bufferpool的使用情況,邏輯讀和物理讀的對(duì)比

    del.icio.us Tags: , ,

    posted @ 2007-10-30 12:59 tacy lee 閱讀(550) | 評(píng)論 (0)編輯 收藏

    Loadrunner Analysis之Web Page Diagnostics

    作者:tacy lee

    簡(jiǎn)單介紹一下Loadrunner Analysis中的Web Page Diagnostics模塊的使用,很多人對(duì)于測(cè)試之后的結(jié)果數(shù)據(jù)分析摸不著頭腦,其實(shí)loadrunner Analysis給你提供了很好的文檔,大家沒(méi)事可以多翻翻,多翻幾遍對(duì)于性能測(cè)試你就入門了 ;)

    Web Page Diagnostics (以下簡(jiǎn)稱WPD),這是LR Analysis中非常重要的一塊,搞清楚這部分的內(nèi)容會(huì)讓你少走很多彎路,很多環(huán)境問(wèn)題都可以通過(guò)它來(lái)定位,比如客戶端,網(wǎng)絡(luò)。通過(guò)它可以你可以比較好的來(lái)定位是環(huán)境的問(wèn)題還是應(yīng)用本身的問(wèn)題,當(dāng)然更重要的是Web頁(yè)面本身的問(wèn)題。

    WPD包括下面幾個(gè)圖表:

    Web Page Diagnostics     這是張總圖,包括下面幾張Over Time圖的內(nèi)容

    Page Component Breakdown     頁(yè)面中每個(gè)元素的平均響應(yīng)時(shí)間占整個(gè)頁(yè)面響應(yīng)時(shí)間的百分比

    Page Component Breakdown(Over Time)     在整個(gè)測(cè)試過(guò)程中,任意一秒內(nèi)頁(yè)面中每個(gè)元素的響應(yīng)時(shí)間(例如在runtime中設(shè)置了browser cache,頁(yè)面中的資源文件就只會(huì)在第一次下載,后面的頁(yè)面響應(yīng)時(shí)間也就不包括這些元素的時(shí)間,這在Page Component Breakdown中是看不出來(lái)的,因?yàn)镻age Component Breakdown是整個(gè)測(cè)試期間內(nèi)的平均時(shí)間。當(dāng)然,是否啟用了cache,通過(guò)over time圖就能看出來(lái))

    Page Download Time Breakdown    頁(yè)面中每個(gè)元素的響應(yīng)時(shí)間分割圖,響應(yīng)時(shí)間被分割為以下幾個(gè)部分:DNS Resolution,Connection,First Buffer,SSL Handshaking,Receive,FTP Authentication,Client,Error

    Page Download Time Breakdown(Over Time)      在整個(gè)測(cè)試過(guò)程中,任意一秒內(nèi)頁(yè)面中每個(gè)元素的響應(yīng)時(shí)間分割圖

    Time to First Buffer Breakdown      First Buffer Time時(shí)間分割為Network Time和Server Time,客戶端http請(qǐng)求發(fā)送到接收到服務(wù)器端的應(yīng)答包(ACK)為Network Time,從接收到ACK到完成First Buffer接受為Server Time

    Time to First Buffer Breakdown(Over Time)      基本同上,任意一秒內(nèi)的

    Downloaded Component Size(KB)      頁(yè)面中每個(gè)元素的大小(KB)

    介紹了這么多,具體如何分析呢?

    首先打開Web Page Diagnostics圖,來(lái)看看下面一個(gè)例子Download Time圖:

    Web-Page-Diagnostics-DownloadTime

    上圖存在兩個(gè)問(wèn)題:

    1、receive時(shí)間很長(zhǎng)

    這個(gè)一般是網(wǎng)絡(luò)問(wèn)題,當(dāng)然如果你確認(rèn)網(wǎng)絡(luò)不存在問(wèn)題,那么你就要看看是不是客戶端的問(wèn)題(客戶端也可能會(huì)造成Receive過(guò)長(zhǎng),這個(gè)千萬(wàn)要注意)

    2、頁(yè)面問(wèn)題

    頁(yè)面上包括了非常多的圖片,而且圖片似乎都沒(méi)有優(yōu)化,最大的竟然有163K,記下來(lái),這可是罪證哦 ;)

    很多時(shí)候,你可以根據(jù)DNS,Connection,Receive來(lái)看出是否存在網(wǎng)絡(luò)問(wèn)題,根據(jù)Client來(lái)判斷是否存在客戶端問(wèn)題。

    看看,挺簡(jiǎn)單的吧! ^_^

    換個(gè)圖看看,Page Component Breakdown(Over Time)

    Web-Page-Diagnostics-PCB

    很清楚吧,頁(yè)面元素都被cache了,說(shuō)明場(chǎng)景啟用了browser cache,頁(yè)面的響應(yīng)時(shí)間只包括紅線和藍(lán)線。

    Time to First Buffer Breakdown(Over Time)  ,圖就不貼了,這個(gè)圖非常重要,也最復(fù)雜,這里的值不絕對(duì),當(dāng)網(wǎng)絡(luò)狀況不好的時(shí)候,server time很可能包括網(wǎng)絡(luò)時(shí)間,因?yàn)楹芏囗?yè)面元素比較小(小于4k的樣子),在First Buffer就完成傳輸,所以一定要注意分析。

    就嘮叨到這里吧,歡迎拍磚

    del.icio.us Tags: , ,

    posted @ 2007-10-23 19:04 tacy lee 閱讀(2265) | 評(píng)論 (1)編輯 收藏

    死亡證據(jù)

    昆汀.塔倫蒂諾,血漿愛(ài)好者

    劇情簡(jiǎn)單,卻能讓你血脈賁張,當(dāng)然你要先忍受昆汀的一貫喋喋不休,聽得我昏昏欲睡,打算回頭再過(guò)一遍

    懷舊風(fēng)格的影像處理,火辣的大腿舞,血腥的撞車鏡頭(喜歡kill bill的tx應(yīng)該是見怪不怪了),極速飚車,拳頭,極度亢奮的表?yè)P(yáng)和精彩的配樂(lè)(原聲大碟不要錯(cuò)過(guò)),如果你喜歡這些,so...

    羅伯特.羅德里格斯的恐怖星球俺不太喜歡,和他之前拍的罪惡之城沒(méi)法比,如果你是cult愛(ài)好者,看看吧,斷腿機(jī)槍比較牛叉

    刑房GRINDHOUSE:是指專門放映exploitation films的小影院,exploitation films也被稱作grindhouse films,昆汀和羅伯特的這部片子也是一部懷舊的exploitation film,熟悉他們兩個(gè)經(jīng)歷的可能知道,他們都是在這類電影的熏陶下長(zhǎng)大的,并且是狂熱的愛(ài)好者,從他們之前拍攝的電影就可以看出

    Exploitation film is a type of film that eschews the expense of "quality" productions in favor of making films on-the-cheap, attracting the public by exciting their more prurient interests. "Exploitation" is the show business term for promotion, and an exploitation film is one which relies heavily on the lurid advertising of its contents, rather than the intrinsic quality of the film.

    Exploitation films feature forbidden sex, wanton violence, drug use, nudity, freaks, gore, monsters, destruction, rebellion and mayhem. Such films have existed since the earliest days of moviemaking, but they were popularized in the 1960s with the general relaxing of cinematic taboos in the U.S. and Europe. Since the 1990s, this genre has also received attention from academic circles, where it is sometimes called paracinema.

    Ephraim Katz, author of The Film Encyclopedia, has defined exploitation as:

    Films made with little or no attention to quality or artistic merit but with an eye to a quick profit, usually via high-pressure sales and promotion techniques emphasizing some sensational aspect of the product

    del.icio.us Tags: ,

    posted @ 2007-10-21 12:30 tacy lee 閱讀(279) | 評(píng)論 (0)編輯 收藏

    weblogic 性能相關(guān)的幾個(gè)配置

    作者:tacy lee

    weblogic.xml

    <container-descriptor>

    servlet-reload-check-secs

    The <servlet-reload-check-secs> element defines whether a WebLogic Server will check to see if a servlet has been modified, and if it has been modified, reloads it.

    • The value -1 means never check the servlets. This is the default value in a production environment.

    • The value 0 means always check the servlets.

    • The value 1 means check the servlets every second. This is the default value in a development environment.

    A value specified in the console will always take precedence over a manually specified value.

    resource-reload-check-secs

    The <resource-reload-check-secs> element is used to perform metadata caching for cached resources that are found in the resource path in the Web application scope. This parameter identifies how often WebLogic Server checks whether a resource has been modified and if so, it reloads it.

    • The value -1 means metadata is cached but never checked against the disk for changes. In a production environment, this value is recommended for better performance.

    • The value 0 indicates not to do any metadata caching. Customers who keep changing their files must set this parameter to a value greater than or equal to 0.

    • The value 1 means reload every second. This is the default value in a development environment.

    Values specified for this parameter using the Admin Console are given precedence.

    native-io-enabled

    To use native I/O while serving static files with weblogic.servlet.FileServlet, which is implicitly registered as the default servlet, set native-io-enabled to true. (The default value is false.) native-io-enabled element applies only on Windows.

    <jsp-descriptor>

    page-check-seconds

    Sets the interval, in seconds, at which WebLogic Server checks to see if JSP files have changed and need recompiling. Dependencies are also checked and recursively reloaded if changed.

    • The value -1 means never check the pages. This is the default value in a production environment.

    • The value 0 means always check the pages.

    • The value 1 means check the pages every second. This is the default value in a development environment.

    In a production environment where changes to a JSP are rare, consider changing the value of pageCheckSeconds to 60 or greater, according to your tuning requirements.

    JDBC

    • 設(shè)置Initial Capacity等于Maximum Capacity

    • 設(shè)置Statement cache(注意,對(duì)于每個(gè)打開的statement,DBMS都會(huì)維護(hù)一個(gè)cursor,這個(gè)值設(shè)置過(guò)大會(huì)導(dǎo)致 java.sql.SQLException: ORA-01000: maximum open cursors exceeded類似的錯(cuò)誤。當(dāng)然,你要清楚,statement cache的大小是指每個(gè)連接能cache的statement數(shù),例如你設(shè)置connection pool size = 100 ,設(shè)置Statement Cache = 10,那系統(tǒng)最大維持的cursor為100*10)

    Network connection

    • Enable Native IO (注意,不是java的NIO,采用Java muxer方式處理連接,對(duì)于大并發(fā)的系統(tǒng)影響巨大,java需要為每個(gè)連接請(qǐng)求起一個(gè)線程來(lái)處理)

    • 修改Accept Backlog,當(dāng)應(yīng)用服務(wù)器出現(xiàn)拒絕連接的時(shí)候

    啟動(dòng)腳本

    • 使用productmode啟動(dòng)weblogic

    • 設(shè)置-xms等于-xmx

    • 盡量使用jrockit

    work manager

    • 從9版本以后,weblogic用work manager取代了thread queue,默認(rèn)情況下,weblogic有一個(gè)default work manager,采用fair share方式平均共享線程

    • 一般你不需要自己創(chuàng)建work manager,除非你有如下需求:

      • 你的應(yīng)用有優(yōu)先級(jí)

      • 你需要滿足SLA定義的響應(yīng)時(shí)間

      • 需要指定最小線程約束來(lái)避免服務(wù)器死鎖

     

    del.icio.us Tags: , ,

    posted @ 2007-10-19 16:22 tacy lee 閱讀(1769) | 評(píng)論 (0)編輯 收藏

    簡(jiǎn)單的java io測(cè)試

         摘要: 作者:tacy.lee

    一個(gè)簡(jiǎn)單的java io測(cè)試,不同的實(shí)現(xiàn)對(duì)比看一個(gè)zip包的解壓速度  閱讀全文

    posted @ 2007-09-20 14:27 tacy lee 閱讀(1564) | 評(píng)論 (4)編輯 收藏

    僅列出標(biāo)題
    共4頁(yè): 上一頁(yè) 1 2 3 4 下一頁(yè) 
    主站蜘蛛池模板: 亚洲成色在线影院| 最近最新中文字幕完整版免费高清 | 久久青青草原亚洲av无码app| 亚洲综合图色40p| 在线精品亚洲一区二区小说| 久久久久亚洲av成人无码电影 | 国产猛烈高潮尖叫视频免费| 在线a毛片免费视频观看| 成人黄动漫画免费网站视频| 一个人看www在线高清免费看| 亚洲高清中文字幕免费| 99久久综合国产精品免费| 在线不卡免费视频| 日本免费电影一区| 亚洲精品麻豆av| 亚洲成av人片天堂网| 亚洲五月六月丁香激情| 亚洲中文字幕久久精品无码2021 | 国产精品亚洲视频| 亚洲中文字幕无码久久2017| 亚洲av无码专区在线播放| 亚洲欧洲日韩国产综合在线二区| 久久久无码精品亚洲日韩京东传媒| 亚洲成无码人在线观看| 亚洲精华液一二三产区| 免费人成大片在线观看播放电影 | 国产黄在线播放免费观看| 日韩电影免费观看| 一二三四视频在线观看中文版免费 | 中文字幕免费观看视频| 日韩电影免费在线观看| 成人免费一级毛片在线播放视频| 国产精品无码素人福利免费| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 中文字幕免费在线看电影大全| 全部免费毛片在线播放| 成人免费网站在线观看| 亚洲中文字幕无码一区| 亚洲最新中文字幕| 三级片免费观看久久| 无码人妻精品中文字幕免费|