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

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

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

    2008年11月18日 #

    語(yǔ)錄一

    某天,停車,圖方便隨便停在路邊,抱怨了兩句,ld隨即頂回一句:“只要有邊就能停”

    posted @ 2008-11-18 23:32 tacy lee 閱讀(242) | 評(píng)論 (0)編輯 收藏

    2008年6月24日 #

    oracle 的lob & long

    一直認(rèn)為lob類型的性能要好過long,但是之前只了解到long的種種限制,oracle也是不推薦使用long類型,這幾天由于一個(gè)項(xiàng)目問題,產(chǎn)品里面一個(gè)表字段用了long類型,分析下來操作long的時(shí)候,性能有所影響,想把它改成lob,就簡(jiǎn)單驗(yàn)證了一下

    首先創(chuàng)建兩個(gè)測(cè)試表:

    create table test_long (a int primary key,b long);
    create table test_clob (a int primary key,b clob);

    用附件java代碼,往兩個(gè)表里面各插入100條數(shù)據(jù),保證插入數(shù)據(jù)是一樣的,lob字段長(zhǎng)度為10k(如果小于4k,oracle可以把它保存到到表內(nèi),不會(huì)存儲(chǔ)在表外,性能沒有問題,這個(gè)我基本確定,而且我們應(yīng)用中這個(gè)字段經(jīng)常會(huì)超過4k)。

    做一個(gè)簡(jiǎn)單查詢對(duì)比一下:

    SQL> set autotrace traceonly;
    SQL> select * from test_clob where a=1;

    統(tǒng)計(jì)信息
    ----------------------------------------------------------
            331  recursive calls
              0  db block gets
             69  consistent gets
              4  physical reads
              0  redo size
           1278  bytes sent via SQL*Net to client
            837  bytes received via SQL*Net from client
              5  SQL*Net roundtrips to/from client
             12  sorts (memory)
              0  sorts (disk)
              1  rows processed

    SQL> select * from test_long where a=1;

    統(tǒng)計(jì)信息
    ----------------------------------------------------------
            236  recursive calls
              0  db block gets
             43  consistent gets
              0  physical reads
              0  redo size
            675  bytes sent via SQL*Net to client
            531  bytes received via SQL*Net from client
              3  SQL*Net roundtrips to/from client
              5  sorts (memory)
              0  sorts (disk)
              1  rows processed

    對(duì)比一下,long開銷比lob小,當(dāng)然你可以把lob字段啟用緩存,把4次物理讀去掉,但還是多了(73-43)次邏輯讀,update也試了一下,lob產(chǎn)生的redo比long大,就不列出來了,有興趣的可以自己試試

    測(cè)試下來,看來之前的認(rèn)識(shí)不對(duì),不確定的東西最好還是動(dòng)手試試,當(dāng)然對(duì)于新應(yīng)用,還是不建議用long,畢竟oracle已經(jīng)廢棄它了。

    testClobLong.java

    posted @ 2008-06-24 01:18 tacy lee 閱讀(453) | 評(píng)論 (0)編輯 收藏

    2008年6月22日 #

    殺掉服務(wù)器上的遠(yuǎn)程桌面連接

    用遠(yuǎn)程桌面連接登入服務(wù)器的時(shí)候,你可能會(huì)經(jīng)常碰到下面的情況:

    mstsc-exceed-456x114

     

    也就是說,服務(wù)器的連接數(shù)已經(jīng)滿了,很多時(shí)候,可能是別人異常斷開連接,導(dǎo)致連接沒有釋放,一般這時(shí)候你需要去機(jī)房登入服務(wù)器斷開連接,其實(shí)windows提供了tsdiscon命令來做這事情

    posted @ 2008-06-22 17:12 tacy lee 閱讀(464) | 評(píng)論 (0)編輯 收藏

    2008年5月28日 #

    通過保存錯(cuò)誤頁(yè)面到日志中解決一些后臺(tái)看不到異常的錯(cuò)誤

    有時(shí)候,我們可能希望看到lr的出錯(cuò)頁(yè)面:比如lr出錯(cuò),但是后臺(tái)服務(wù)器沒有錯(cuò)誤日志,這時(shí)候,我們希望能看到錯(cuò)誤頁(yè)面的內(nèi)容來判斷問題出在什么地方,但是lr沒有提供類似的功能

    我們可以通過一種變通的辦法來實(shí)現(xiàn):

    首先找到你出錯(cuò)的頁(yè)面,保存該頁(yè)面到參數(shù)里面:

    web_set_max_html_param_len(“2048”);

    web_reg_save_param(“FILED”,”LB=”,”RB=”,”Search=Body”,LAST);

    然后輸出到日志里面: lr_output_message(”#######################################%s”,lr_eval_string(”{FILED}”));

    修改lr run-time的幾個(gè)設(shè)置:

    1、Always send messages

    2、continue on error (這樣才能保證運(yùn)行l(wèi)r_output_message)

    這樣lr會(huì)把所有的lr_output_message輸出保存到日志文件

    當(dāng)然你不要下載資源文件,否則保存到的就不是html頁(yè)面了,可能是一個(gè)gif :(

    最后,結(jié)合lr controller的錯(cuò)誤信息,定位到出錯(cuò)的vuser id,查看該vuser的log文件就能看到錯(cuò)誤頁(yè)面了

    非常有效的一個(gè)小技巧,用它解決了一個(gè)難纏的問題。

    posted @ 2008-05-28 23:05 tacy lee 閱讀(832) | 評(píng)論 (3)編輯 收藏

    2008年5月18日 #

    捐款

    慢慢變味了,一群無(wú)聊的人整天盯著別人捐了多少,很奇怪

    posted @ 2008-05-18 19:45 tacy lee 閱讀(245) | 評(píng)論 (0)編輯 收藏

    2008年5月14日 #

    地震

    最近一段時(shí)間特別忙,以至于發(fā)生地震這么大的事情都沒注意到,首都人民不斷告訴我被震了也沒當(dāng)回事,昨晚回家打開電視,新聞?lì)l道,懵了,坐下來一直看,到晚上2點(diǎn),滿目蒼痍,真為處于震中的人揪心,中間鼻子酸了N次,也憤怒了N次(那些惡心人的地方官,難道就不能說點(diǎn)實(shí)際的東西嗎?)

    1、政府反映非常迅速
    2、子弟兵真好
    2、有一個(gè)好總理
    3、地方政府不作為,官話套話(被采訪的那個(gè)什么何彪,真想抽丫的)
    4、為什么總是學(xué)校?處于地址多發(fā)地帶的學(xué)校和其他公共設(shè)施為什么都是豆腐渣

    為所有受難的人祈禱!為我們飽受磨難的祖國(guó)祈禱!

    公司員工捐款20W,盡點(diǎn)綿力

    posted @ 2008-05-14 10:17 tacy lee 閱讀(240) | 評(píng)論 (0)編輯 收藏

    2008年4月14日 #

    ibm jdk 1.5缺省用的gc策略性能很差

         摘要: 這幾天測(cè)試一個(gè)引擎的性能,用一個(gè)單表查詢的case,測(cè)試出來的結(jié)果是210tps,cpu也正常,在85%左右,也沒懷疑。

    后面再重新測(cè)試的時(shí)候,加上了gc log,用gc分析工具分析了一下gc的吞吐量,發(fā)現(xiàn)吞吐量奇低,竟然只有77%左右,很是奇怪,看了一下gc日志,所有都是global gc, 懷疑gc策略有問題,查了一下資料,參考了下面一篇文章:  閱讀全文

    posted @ 2008-04-14 20:38 tacy lee 閱讀(4452) | 評(píng)論 (2)編輯 收藏

    2008年4月1日 #

    Sybase 鎖模式

    Sybase ASE有三種鎖模式:AllPages,DataPages,DataRows

    Sybase的數(shù)據(jù)有table pages和index pages,最小分配單位為pages,不同的鎖模式對(duì)于table pages和index pages有不同的表現(xiàn),具體如下:

    Locking Schema

    Locks on Index

    Locks on Data

    All Pages

    Page

    Page

    DataPages

    Not locked

    Page

    DataRows

    Not locked

    Row

    如上表所示:
    1、AllPages鎖模式對(duì)于并發(fā)的限制最高,他對(duì)index pages和table pages都加頁(yè)鎖(當(dāng)頁(yè)被鎖住的時(shí)候,頁(yè)上的所有rows都不能被其他session訪問)
    2、DataPages對(duì)table pages加頁(yè)鎖
    3、DataRows:強(qiáng)烈建議用這個(gè)鎖模式,對(duì)于oltp應(yīng)用,如果用前兩種鎖模式會(huì)導(dǎo)致頻繁死鎖

    另外,DataPages和DataRows對(duì)于index pages的控制采用latch方式,一種輕量級(jí)的鎖機(jī)制(熟悉oracle會(huì)比較清楚)

    對(duì)于Sybase ASE來說,鎖是非常寶貴的資源,不要長(zhǎng)時(shí)間持有鎖,所以一般我們?cè)趯憫?yīng)用的時(shí)候盡量減少長(zhǎng)事務(wù)

     

    另:Sybase ASE缺省的事務(wù)隔離級(jí)別:Read Committed

    posted @ 2008-04-01 10:50 tacy lee 閱讀(924) | 評(píng)論 (0)編輯 收藏

    2008年3月18日 #

    并發(fā)是啥

    一個(gè)用戶點(diǎn)擊就是一個(gè)用戶請(qǐng)求,一個(gè)webservice類似的調(diào)用也算一個(gè)請(qǐng)求,等等


    一個(gè)用戶在某個(gè)時(shí)間點(diǎn)上當(dāng)然只能發(fā)起一個(gè)用戶請(qǐng)求,一個(gè)用戶請(qǐng)求就是一個(gè)并發(fā)

    我們一般糾纏在同一事物并發(fā)還是不同事務(wù)并發(fā)。

    可能在一個(gè)時(shí)間點(diǎn)上,有100個(gè)用戶在發(fā)送瀏覽,查詢動(dòng)作,10個(gè)用戶在下訂單,5個(gè)用戶在做付款動(dòng)作,你說這個(gè)時(shí)間點(diǎn)上有多少個(gè)并發(fā)請(qǐng)求,當(dāng)然是115個(gè)了

    衡量一個(gè)系統(tǒng)性能主要靠的就是這個(gè)吞吐量(tps)

    當(dāng)然我們也非常關(guān)心同時(shí)100個(gè)用戶并發(fā)下訂單的時(shí)候系統(tǒng)是否能支撐(這是通常我們大部分人理解的并發(fā)),我們會(huì)說這是核心業(yè)務(wù),我們要得出數(shù)據(jù)(是否要考慮背景業(yè)務(wù)呢,呵呵,很難說的清楚,我一般就不考慮)

    posted @ 2008-03-18 15:33 tacy lee 閱讀(288) | 評(píng)論 (0)編輯 收藏

    2008年3月16日 #

    工作日志-OOM事件

    某項(xiàng)目,年前開始報(bào)OOM,頻率保持在一月一次,發(fā)生OOM的時(shí)候,heap free size還有7~800M,比較奇怪,年后系統(tǒng)上集群,系統(tǒng)發(fā)生OOM的頻率開始變得頻繁,基本在4-5天,由于用的是sun jdk 1.4.2_08,無(wú)法獲取到heap dump,建議用戶升級(jí)到1.4.2_14(該版本以后sun添加了HeapDumpOnOutOfMemoryError參數(shù),便于獲取dump幫助診斷該類問題),4天之后,我們獲取到了heapdump文件,通過對(duì)dump的分析,基本上排除了對(duì)象泄漏。

    根據(jù)環(huán)境(64bit Solaris + 32bit JDK),客戶把Heap最大設(shè)置為2G,開始懷疑32bit JDK無(wú)法分配這么大的Heap,經(jīng)過驗(yàn)證,不存在這樣的問題(sun網(wǎng)站也有相關(guān)說明,在solaris 64bit系統(tǒng)上,32bit jdk最大可以設(shè)置到4G)

    但是從dump看到application classes loader大小已經(jīng)到了60M以上,有點(diǎn)懷疑Perm區(qū)設(shè)置太小導(dǎo)致,查了一下sun的文檔,Perm區(qū)缺省大小為64M,估計(jì)是應(yīng)用加載太多classes導(dǎo)致Perm區(qū)溢出,

    我們也簡(jiǎn)單模擬了一下Perm溢出,強(qiáng)制設(shè)置max perm大小為32M,并對(duì)GC進(jìn)行了監(jiān)控,結(jié)果和我們預(yù)想的一致,看下面的gc log:

    151.836: [Full GC 151.836: [Tenured: 25735K->25736K(1048576K), 0.8380858 secs] 25911K->25736K(1557568K), [Perm : 32767K->32767K(32768K)], 0.8382804 secs]
    152.676: [Full GC 152.676: [Tenured: 25736K->25722K(1048576K), 0.8464782 secs] 25752K->25722K(1557568K), [Perm : 32767K->32766K(32768K)], 0.8466638 secs]
    153.525: [Full GC 153.525: [Tenured: 25722K->25724K(1048576K), 0.8419056 secs] 25738K->25724K(1557568K), [Perm : 32767K->32767K(32768K)], 0.8420986 secs]
    154.368: [Full GC 154.368: [Tenured: 25724K->25724K(1048576K), 0.8398816 secs] 25724K->25724K(1557568K), [Perm : 32767K->32767K(32768K)], 0.8400498 secs]
    155.212: [Full GC 155.212: [Tenured: 25724K->25725K(1048576K), 0.8365448 secs] 25788K->25725K(1557568K), [Perm : 32767K->32767K(32768K)], 0.8367370 secs]
    156.050: [Full GC 156.050: [Tenured: 25725K->25722K(1048576K), 0.8422488 secs] 25725K->25722K(1557568K), [Perm : 32767K->32766K(32768K)], 0.8424328 secs]
    156.895: [Full GC 156.895: [Tenured: 25722K->25724K(1048576K), 0.8443532 secs] 25738K->25724K(1557568K), [Perm : 32767K->32767K(32768K)], 0.8445450 secs]
    157.740: [Full GC 157.741: [Tenured: 25724K->25724K(1048576K), 0.8427754 secs] 25740K->25724K(1557568K), [Perm : 32767K->32767K(32768K)], 0.8429634 secs]
    158.587: [Full GC 158.588: [Tenured: 25724K->25726K(1048576K), 0.8352290 secs] 25820K->25726K(1557568K), [Perm : 32767K->32767K(32768K)], 0.8354212 secs]
    159.424: [Full GC 159.424: [Tenured: 25726K->25723K(1048576K), 0.8435336 secs] 25726K->25723K(1557568K), [Perm : 32767K->32766K(32768K)], 0.8437092 secs]
    160.270: [Full GC 160.270: [Tenured: 25723K->25725K(1048576K), 0.8477722 secs] 25739K->25725K(1557568K), [Perm : 32767K->32767K(32768K)], 0.8479596 secs]
    161.119: [Full GC 161.119: [Tenured: 25725K->25725K(1048576K), 0.8543338 secs] 25725K->25725K(1557568K), [Perm : 32767K->32767K(32768K)], 0.8545040 secs

    從日志看,和我們現(xiàn)場(chǎng)的狀況非常相似,heap空間充足,但是perm已經(jīng)到了32M,無(wú)法再進(jìn)一步分配空間,直接導(dǎo)致jvm頻繁做Full GC,控制臺(tái)也開始拋出OOM(Perm引起的回收都是full gc),這樣看基本我們判斷是Perm太小,導(dǎo)致無(wú)法加載classes導(dǎo)致的

    和客戶溝通之后,我們本來打算進(jìn)一步驗(yàn)證(在生產(chǎn)環(huán)節(jié)打開PrintGCDetail,獲取詳細(xì)的GC log),后面仔細(xì)檢查nohup.out,發(fā)現(xiàn)里面已經(jīng)拋出了 OutOfMemoryError:PermGen Space,至此我們確定是Perm設(shè)置不合理導(dǎo)致了本次事故,和客戶確認(rèn)之后,我們?cè)趩?dòng)參數(shù)中加上了MaxPermSize

    后面想到中間上了集群之后,eos加載了大量的jboss cache class,這也直接解釋了為什么這段時(shí)間OOM出現(xiàn)的頻率比之前更頻繁的原因

    這里總結(jié)一下,希望對(duì)碰到類似問題的tx有借鑒意義,強(qiáng)烈建議用sun jdk 1.4.2的同學(xué)升級(jí)到>=1.4.2_12,便于對(duì)OOM問題的診斷,并加上GC log協(xié)助驗(yàn)證。

    這里再介紹一下JVM發(fā)生OOM的幾種情況:

    1、java.lang.OutOfMemoryError: Java heap space

    這是我們平常理解的OOM,是由于heap space確實(shí)沒有空間分配,這種一般是由于內(nèi)存泄漏導(dǎo)致,也有可能是heap space設(shè)置太小。需要具體分析

    2、java.lang.OutOfMemoryError: PermGen space

    jvm規(guī)范里面有定義一個(gè)method space,這里主要放classes和method list和一個(gè)string pool,string有一個(gè)intern方法,通過這個(gè)方法定義的string都放在這里(好像不常用),這里設(shè)置不太小會(huì)導(dǎo)致OOM,缺省64M,主要由于現(xiàn)在應(yīng)用依賴的第三方類越來越多,導(dǎo)致這類問題頻繁發(fā)生,需要引起重視

    3、Requested array size exceeds VM limit
    這種是由于申請(qǐng)的array size超出了heap space大小,比如在一個(gè)256M的heap space中申請(qǐng)一個(gè)512M的array,這種基本都是應(yīng)用bug導(dǎo)致

    4、request <size> bytes for <reason>. Out of swap space?
    這種是由于heap size設(shè)置相對(duì)于系統(tǒng)物理內(nèi)存太大,導(dǎo)致系統(tǒng)swap space不足,這種的解決辦法就是減小heap size大小

    5、<reason> <stack trace> (Native method)
    這種估計(jì)是最麻煩的了,也是最少碰到的,是由于jni或native method導(dǎo)致,如果自己沒有寫這類的東西,基本可以說是jdk問題

    posted @ 2008-03-16 22:38 tacy lee 閱讀(2734) | 評(píng)論 (2)編輯 收藏

    僅列出標(biāo)題  下一頁(yè)
    主站蜘蛛池模板: 亚洲美女视频网址| 亚洲精品亚洲人成在线麻豆| 亚洲色大成网站www永久网站| 91成年人免费视频| 亚洲精品免费在线视频| 少妇太爽了在线观看免费视频 | 亚洲AV无码不卡无码| 暖暖免费日本在线中文| 18gay台湾男同亚洲男同| 69天堂人成无码麻豆免费视频| 亚洲人成网站在线观看播放青青| 久久综合AV免费观看| 亚洲精品国产摄像头| 亚洲AⅤ优女AV综合久久久| 一二三区免费视频| 国产成人亚洲综合无码精品| 97在线视频免费| 亚洲一本一道一区二区三区| 国产公开免费人成视频| 一个人免费观看视频在线中文| 亚洲日韩精品射精日| 永久在线观看www免费视频| 亚洲日韩AV无码一区二区三区人| 又粗又硬又黄又爽的免费视频 | 亚洲视频在线观看免费| 亚洲人xxx日本人18| 免费在线观看毛片| 国产精品区免费视频| 亚洲色大网站WWW永久网站| 亚洲男人天堂2020| 亚洲一区二区三区免费视频| 亚洲欧美日韩中文字幕在线一区| 亚洲精品乱码久久久久久蜜桃| 久爱免费观看在线网站| 亚洲精品色播一区二区| 亚洲AV无码专区国产乱码4SE | 亚洲Av无码乱码在线znlu| 午夜免费啪视频在线观看| 综合偷自拍亚洲乱中文字幕| 亚洲AV无码久久寂寞少妇| 国产精品深夜福利免费观看|