ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>中文字幕日韩欧美精品高清在线,天堂中文在线8,国产精品一区在线看http://www.aygfsteel.com/DLevin/category/54907.htmlIn general the OO style is to use a lot of little objects with a lot of little methods that give us a lot of plug points for overriding and variation.
To do is to be -Nietzsche, To bei is to do -Kant, Do be do be do -Sinatrazh-cnThu, 13 Aug 2015 08:47:19 GMTThu, 13 Aug 2015 08:47:19 GMT60- Log4J引è“v的程åºâ€œè£…æ Z€?/title><link>http://www.aygfsteel.com/DLevin/archive/2015/08/13/426751.html</link><dc:creator>DLevin</dc:creator><author>DLevin</author><pubDate>Thu, 13 Aug 2015 08:28:00 GMT</pubDate><guid>http://www.aygfsteel.com/DLevin/archive/2015/08/13/426751.html</guid><wfw:comment>http://www.aygfsteel.com/DLevin/comments/426751.html</wfw:comment><comments>http://www.aygfsteel.com/DLevin/archive/2015/08/13/426751.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/DLevin/comments/commentRss/426751.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/DLevin/services/trackbacks/426751.html</trackback:ping><description><![CDATA[<h2>é—®é¢˜èµ·å› </h2>
ä¾ç„¶æ˜¯åœ¨ä½¿ç”¨GemFire的集¾Ÿ¤ä¸åQŒæˆ‘们å‘现嶞®?d¨¡ng)ä¼?x¨¬)出现一些GemFireçš„Function执行特别慢,òq¶ä¸”‘…过了两分钟åQˆäØ“(f¨´)了ä¿è¯æ•°æ®çš„一致性,我们在写之å‰éœ€è¦å…ˆæ‹¿ä¸€ä¸ªLockåQŒå› ä¸ÞZ¸èƒ½æ¯ä¸ªKey都对应一个LockåQŒå› 而我们ä‹É用了Guavaçš„Stripe LockåQˆå…³äºŽStripe Lockå¯ä»¥å‚è€?a href="http://www.aygfsteel.com/DLevin/archive/2013/12/25/407990.html">˜q™é‡Œ</a>åQ‰ï¼Œè€Œä¸”˜q™ä¸ªLock本èín我们指定äº?分钟的超时时é—ß_(d¨¢)¼Œå› 而如果写‘…过两分钟,我们ž®×ƒ¼š(x¨¬)收到ExceptionåQ‰ã€‚这个问题其实已¾lå›°æ‰îCº†æˆ‘ä»¬å¥½å‡ òq´äº†åQŒåˆšå‰æ®µæ—‰™—´åQŒæˆ‘们å‘现长旉™—´çš„Stop-The-World GCä¼?x¨¬)引赯‚¿™ä¸ªé—®é¢˜ï¼Œè€Œä¸”˜q™ç§æ—¶å€™å¾ˆå¤šæ—¶å€™ä¼š(x¨¬)引è“v那个节点从集¾Ÿ¤ä¸é€€å‡ºï¼Œòq¶ä¸æ˜¯æ‰€æœ‰çš„˜q™ç§é”™è¯¯éƒ½æœ‰GC的问题,我特地查了GC的日志,有些˜q™ç§å†™è¶…˜q‡ä¸¤åˆ†é’Ÿçš„æƒ…况下åQŒGC一直处于éžå¸¸å¥åºïL(f¨¥ng)š„状æ€ï¼Œè€Œä¸”查了GemFire的日志和我们自己的日志,也没有å‘çŽîC“Q何异常。由于我们æ¯ä¸ªæ•°æ®ä¿ç•™ä¸¤åˆ†ä†¾æ‹¯‚´åQŒä¹Ÿž®±æ˜¯è¯´æ¯‹Æ¡æ•°æ®å†™éƒ½è¦å†™ä¸¤ä¸ªèŠ‚ç‚¹ï¼Œä¸¤åˆ†é’Ÿå¯¹CPUæ¥è¯´å¯ä»¥åšå¤ªå¤šçš„事情åQŒå› è€Œåªæœ‰IOæ‰èƒ½åœ¨æŸäº›æ—¶å€™äñ”生这¿U问题,在问题å‘生的时候也没有ä»ÖM½•overflowæ•°æ®åQŒè€Œä¸”本地æ“作åQŒå³ä½¿å¯¹IOæ¥è¯´2分钟也是一个éžå¸”R•¿çš„æ—¶é—´äº†åQŒå› 而我们åªèƒ½æ€€ç–‘这是写å¦ä¸€ä¸ªèŠ‚ç‚¹å¼•èµïL(f¨¥ng)š„åQŒå¯¹å¦ä¸€ä¸ªèŠ‚ç‚¹ï¼Œå®ƒæ˜¯åœ¨åŒä¸€ä¸ªData Centerä¸ï¼Œè€Œä¸”基本是在åŒä¸€ä¸ªChasis内部åQŒå› 而它们之间å°äº?M的数æ®é‡é€šä¿¡ä¹Ÿä¸å¤ªå¯èƒ½èбåŽ?分钟的时é—ß_(d¨¢)¼Œæ‰€ä»¥å‰©ä¸‹çš„æˆ‘们ž®±åªèƒ½æ€€ç–‘网¾lœçš„问题了,比如数æ®ä¸¢åŒ…ã€ç½‘¾lœæŠ–动ã€ç½‘¾lœæµé‡å¤ªå¤§ä¸€èµ·ä¼ è¾“å˜æ…¢ç‰åQŒä½†æ˜¯æˆ‘们没有找åˆîC“Q何相关的问题。所以我们很长一ŒD‰|—¶é—´ç´ æ‰‹æ— ½{–,åªèƒ½æ€ªGemFireé—æºåQŒæˆ‘们ä¸çŸ¥é“˜q™ä¸¤åˆ†é’Ÿæ˜¯ä¸æ˜¯GemFire自己内部在åšä¸€äº›ä¸ä¸ÞZh知的事情åQŒå› è€Œå¤ªå¿™äº†è€Œæ¯æ¥å¾—å?qi¨¢ng)å¤„ç†æˆ‘ä»¬çš„å†™è¯·æ±‚ã€‚è™½ç„¶æˆ‘ä¸€ç›´è§‰å¾—ä¸½Ž¡åœ¨å¤„ç†ä»€ä¹ˆç‚’作,两分钟都没有å“应æ ÒŽ(gu¨©)œ¬æ— 法解释的通,更何况GemFire节点之间òq¶æ²¡æœ‰æŠ¥å‘Šæœ‰ä»ÖM½•异常åQŒæˆ–者åƒä»¥å‰å‘现的一个节点å‘Locator举报å¦ä¸€ä¸ªèŠ‚ç‚ÒŽ(gu¨©)²¡æœ‰å“应的问题åQŒLocator自己也能很æ£å¸¸çš„å‘那个节点å‘逿–°çš„æˆå‘˜ä¿¡æ¯ï¼ˆViewåQ‰ï¼Œå› 而看èµäh¥å‘是˜q™ä¸ªèŠ‚ç‚¹è™½ç„¶èŠ×ƒº†ä¸¤åˆ†é’Ÿå¤šæ¥å†™ä¸€ä¸ªæ•°æ®ï¼Œä½†æ˜¯å®ƒè¿˜æ˜¯æœ‰å“应的,有点“凿»”的赶脚ã€?br />
<br />
<h2>问题å‘现</h2>
˜q™ä¸ªé—®é¢˜˜q™ä¹ˆå‡ å¹´ä»¥æ¥æ—¶ä¸æ—¶çš„ž®×ƒ¼š(x¨¬)å‘生åQŒè€Œä¸”å› äØ“(f¨´)以å‰èŠÞqš„æ—‰™—´å¤ªå¤šäº†ï¼Œè€Œä¸”也没有找åˆîC“Q何出错的地方åQŒçŽ°åœ¨çƒ¦æ€§ä¸åŽ»èŠ±å¤ªå¤šæ—‰™—´åœ¨ä¸Šé¢äº†åQŒæ›´ä½•况˜q™ä¸ªå®ƒå¾ˆé•¿æ—¶é—´æ‰å‘生一‹Æ¡ï¼Œòq¶ä¸”今年以楞®×ƒ¸€ç›´æ²¡å‘生˜q‡ï¼Œç›´åˆ°å‰å‡ 周出çŽîC¸€‹Æ¡ï¼Œæˆ‘有点ä¸ä¿¡é‚ªçš„釿–°åŽ»çœ‹è¿™ä¸ªé—®é¢˜ï¼Œä¾ç„¶æ²¡æœ‰æ‰‘Öˆ°ä»ÖM½•å¯ç–‘的地方,GC日志ã€åº”ç”¨ç¨‹åºæ—¥å¿—ã€GemFire自己的日志ã€ç½‘¾lœã€CPU使用情况½{‰æ‰€æœ‰çš„都是æ£å¸¸çš„,除了问题å‘生的那个时刻,应用½E‹åºæ²¡æœ‰ä»ÖM½•日志åQŒå¦å¤–在问题å‘生之å‰å‡ºçް˜q‡Log4J日志文äšgçš„RollingåQˆæˆ‘们ä‹É用RollingFileAppenderåQŒåƈ且åªä¿ç•™20个日志文ä»Óž¼‰åQŒä½†æ˜¯Log4J日志文äšgRoll的日志出çŽîCº†æ–结åQŒåœ¨å¼€å§‹è¦Roll到真æ£å®ŒæˆRollä¸é—´˜q˜æœ‰å‡ 行GemFire自èínçš„æ—¥å¿—ï¼Œæ¤æ—¶æˆ‘åÆˆæ²¡æœ‰è§‰å¾—˜q™ä¸ªæ˜¯æœ‰å¾ˆå¤§é—®é¢˜çš„ï¼Œå› äØ“(f¨´)我始¾lˆè§‰å¾—Log4J除了它自己æåˆ°åã^å‡å¯¹æ€§èƒ½æœ?0%的媄å“以外,它就是一个简å•的把日志写到文件的˜q‡ç¨‹åQŒä¸ä¼?x¨¬)媄å“的整个应用½E‹åºæœ¬èínåQŒå› 为它太简å•了åQŒç›´åˆîC»Šå¤©è¿™ä¸ªé—®é¢˜å†‹Æ¡å‡ºçŽŽÍ¼Œä¾ç„¶æ²¡æœ‰ä»ÖM½•å…¶ä»–æ–šw¢çš„æ”¶èŽøP¼Œæ‰€æœ‰çš„地方都显½Cºæ£å¸¸çжæ€ï¼Œç”šè‡³æˆ‘们之å‰å‘现的网å¡é—®é¢˜ä»Šå¤©ä¹Ÿæ²¡æœ‰å‘生åQŒç„¶è€ŒåŒæ äh˜¯å‡ºé—®é¢˜çš„ä¸¤åˆ†é’Ÿæ²¡æœ‰å‡ºçŽ°åº”ç”¨ç¨‹åºæ—¥å¿—,日志文äšgRoll的日志和上次¾cÖM¼¼åQŒå¼€å§‹Roll到结æŸå‡ºçްGemFire日志的交å‰ã€?
<div><fieldset><legend>最˜q‘一‹Æ¡å‘生的日志</legend>
<div>[info 2015/08/12 01:56:07.736 BST …] ClientHealthMonitor: Registering client with member id …</div>
<div>log4j: rolling over count=20971801</div>
<div>log4j: maxBackupIndex=20</div>
<div>[info 2015/08/12 01:56:12.265 BST …] ClientHealthMonitor: Unregistering client with member id …</div>
<div>……</div>
<div>[info 2015/08/12 01:56:23.773 BST …] ClientHealthMonitor: Registering client with member id …</div>
<div>log4j: Renaming file logs/….log.19 to logs/….log.20</div>
</fieldset></div>
<div><fieldset><legend>一周å‰å‘生的日å¿?/legend>
<div>[info 2015/08/04 01:43:45.761 BST …] ClientHealthMonitor: Registering client with member id …</div>
<div>log4j: rolling over count=20971665</div>
<div>log4j: maxBackupIndex=20</div>
<div>……</div>
<div>[info 2015/08/04 01:45:25.506 BST …] ClientHealthMonitor: Registering client with member id …</div>
<div>log4j: Renaming file logs/….log.19 to logs/….log.20</div>
</fieldset></div>
<div>看似˜q™ä¸ªæ˜¯ä¸€ä¸ªè§„律(套用åŒäº‹çš„一å¥è¯åQšä¸€‹Æ¡å‘生时å¶ç„¶åQŒä¸¤‹Æ¡å‘生就是科å¦äº†åQ‰ã€‚ç„¶è€Œæ¤æ—¶æˆ‘其实ä¾ç„¶ä¸å¤ªç›æ€¿¡Log4Jæ˜?#8220;凶手”åQŒå› 为我一直觉得Log4J是一个简å•的日志输出框架åQŒå®ƒè¦æ˜¯å‡ºé—®é¢˜ä¹Ÿåªæ˜¯å®ƒè‡ªå·Þqš„问题åQŒæ˜¯å±€éƒ¨çš„åQŒè€Œè¿™ä¸ªé—®é¢˜çš„出现明显是全局的,直到我çªç„¶è„‘å一闪而过åQ?strong>日志打å°çš„æ“ä½œæ˜¯synchronizedåQŒä¹Ÿž®±æ˜¯è¯´åœ¨æ—¥å¿—æ–‡äšgRollçš„æ—¶å€™ï¼Œæ‰€æœ‰å…¶å®ƒéœ€è¦æ‰“日志的线½E‹éƒ½è¦ç‰å¾…直到Roll完æˆåQŒå¦‚果这个Roll˜q‡ç¨‹‘…过äº?分钟åQŒé‚£ä¹ˆå°±ä¼?x¨¬)å‘生我们看到的Stripe Lock‘…æ—¶åQŒä¹Ÿž®±æ˜¯å‘生了程åº?#8220;凿»”的状æ€ã€?/strong>釿–°æŸ¥çœ‹Log4Jæ‰“å°æ—¥å¿—çš„æ–¹æ³•è°ƒç”¨æ ˆåQŒå®ƒä¼?x¨¬)在两个地方用synchronizedåQŒå³åŒä¸€ä¸ªCategoryåQˆLoggeråQ‰ç±»å®žä¾‹åQ?br />
<div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; background-color: #eeeeee;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--> <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">void</span> callAppenders(LoggingEvent event) {<br />
<span style="color: #0000FF; ">int</span> writes = 0;<br />
<span style="color: #0000FF; ">for</span>(Category c = <span style="color: #0000FF; ">this</span>; c != <span style="color: #0000FF; ">null</span>; c=c.parent) {<br />
<span style="color: #008000; ">//</span><span style="color: #008000;"> Protected against simultaneous call to addAppender, removeAppender,<img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span style="color: #008000; "><br />
</span> <span style="color: #0000FF; ">synchronized</span>(c) {<br />
<span style="color: #0000FF; ">if</span>(c.aai != <span style="color: #0000FF; ">null</span>) {<br />
writes += c.aai.appendLoopOnAppenders(event);<br />
}<br />
<span style="color: #0000FF; ">if</span>(!c.additive) {<br />
<span style="color: #0000FF; ">break</span>;<br />
}<br />
}<br />
}<br />
。。�br />
}</div>
</div>以åŠ(qi¨¢ng)åŒä¸€ä¸ªAppender在doApppendæ—Óž¼š(x¨¬)<br /><div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; background-color: #eeeeee;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">synchronized</span> <span style="color: #0000FF; ">void</span> doAppend(LoggingEvent event) {<br /> 。。ã€?br /> <span style="color: #0000FF; ">this</span>.append(event);<br /> }</div><div>而Roll的过½E‹å°±æ˜¯åœ¨appendæ–ÒŽ(gu¨©)³•ä¸ï¼Œ˜q›ä¸€æ¥åˆ†æžï¼Œåœ¨ä¸‹é¢ä¸¤å¥è¯ä¹‹é—´åQŒä»–们分别花费了‘…过100s和超˜q?1s的时é—ß_(d¨¢)¼š(x¨¬)</div><div>log4j: maxBackupIndex=20<br />。。ã€?/div><div>log4j: Renaming file logs/….log.19 to logs/….log.20</div><div>而这两å¥ä¹‹é—´åªåŒ…å«äº†ä¸¤ä¸ªFile.exists()åQŒä¸€ä¸ªFile.delete()åQŒä¸€ä¸ªFile.rename()æ“作åQ?/div><div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; background-color: #eeeeee;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">void</span> rollOver() {<br /> 。。ã€?br /> <span style="color: #0000FF; ">if</span>(maxBackupIndex > 0) {<br /> <span style="color: #008000; ">//</span><span style="color: #008000;"> Delete the oldest file, to keep Windows happy.</span><span style="color: #008000; "><br /></span> file = <span style="color: #0000FF; ">new</span> File(fileName + '.' + maxBackupIndex);<br /> <span style="color: #0000FF; ">if</span> (file.exists())<br /> renameSucceeded = file.delete();<br /> <span style="color: #0000FF; ">for</span> (<span style="color: #0000FF; ">int</span> i = maxBackupIndex - 1; i >= 1 && renameSucceeded; i--) {<br /> file = <span style="color: #0000FF; ">new</span> File(fileName + "." + i);<br /> <span style="color: #0000FF; ">if</span> (file.exists()) {<br /> target = <span style="color: #0000FF; ">new</span> File(fileName + '.' + (i + 1));<br /> LogLog.debug("Renaming file " + file + " to " + target);<br /> renameSucceeded = file.renameTo(target);<br /> }<br /> }<br /> 。。ã€?br /> }<br /> }</div><div><h2>NFS½Ž€å•性能‹¹‹è¯•和分æž?/h2>å› è€Œæˆ‘å¯¹NFSçš„æ€§èƒ½ä½œäº†ä¸€äº›ç®€å•æµ‹è¯•:(x¨¬)</div><div>åªæœ‰ä¸€ä¸ªçº¿½E‹æ—¶åQŒåœ¨NFS下rename性能åQ?/div><div>1 file: 3ms</div><div>10 files: 48ms</div><div>20 files: 114ms</div><div>相比较,在本地ç£ç›˜rename的性能åQ?/div><div>1 file: 1ms</div><div>3 files: 1ms</div><div>10 files: 3ms</div><div>对NFS和本地ç£ç›˜å†™çš„æ€§èƒ½åQˆæ¨¡æ‹Ÿæ—¥å¿—,æ¯è¡Œéƒ½ä¼š(x¨¬)flushåQ‰ï¼š(x¨¬)</div><table border="0" cellspacing="0" cellpadding="0" style="border-collapse:collapse;"> <tbody><tr style="height:13.4pt"> <td width="139" valign="top" style="width: 1.45in; border: 1pt solid windowtext; padding: 0in 5.4pt; height: 13.4pt;"> <p> </p> </td> <td width="78" valign="top" style="width: 58.5pt; border-style: solid solid solid none; border-top-color: windowtext; border-right-color: windowtext; border-bottom-color: windowtext; border-top-width: 1pt; border-right-width: 1pt; border-bottom-width: 1pt; padding: 0in 5.4pt; height: 13.4pt;"> <p><span style="color:#1F497D">NFS</span></p> </td> <td width="78" valign="top" style="width: 58.5pt; border-style: solid solid solid none; border-top-color: windowtext; border-right-color: windowtext; border-bottom-color: windowtext; border-top-width: 1pt; border-right-width: 1pt; border-bottom-width: 1pt; padding: 0in 5.4pt; height: 13.4pt;"> <p><span style="color:#1F497D">LOCAL</span></p> </td> </tr> <tr> <td width="139" valign="top" style="width: 1.45in; border-style: none solid solid; border-right-color: windowtext; border-bottom-color: windowtext; border-left-color: windowtext; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; padding: 0in 5.4pt;"> <p><span style="color:#1F497D">1 writer, 11M</span></p> </td> <td width="78" valign="top" style="width:58.5pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt; padding:0in 5.4pt 0in 5.4pt"> <p><span style="color:#1F497D">443ms</span></p> </td> <td width="78" valign="top" style="width:58.5pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt; padding:0in 5.4pt 0in 5.4pt"> <p><span style="color:#1F497D">238ms</span></p> </td> </tr> <tr> <td width="139" valign="top" style="width: 1.45in; border-style: none solid solid; border-right-color: windowtext; border-bottom-color: windowtext; border-left-color: windowtext; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; padding: 0in 5.4pt;"> <p><span style="color:#1F497D">1 writer, 101M</span></p> </td> <td width="78" valign="top" style="width:58.5pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt; padding:0in 5.4pt 0in 5.4pt"> <p><span style="color:#1F497D">2793ms</span></p> </td> <td width="78" valign="top" style="width:58.5pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt; padding:0in 5.4pt 0in 5.4pt"> <p><span style="color:#1F497D">992ms</span></p> </td> </tr> <tr> <td width="139" valign="top" style="width: 1.45in; border-style: none solid solid; border-right-color: windowtext; border-bottom-color: windowtext; border-left-color: windowtext; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; padding: 0in 5.4pt;"> <p><span style="color:#1F497D">10 writers, 11M</span></p> </td> <td width="78" valign="top" style="width:58.5pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt; padding:0in 5.4pt 0in 5.4pt"> <p><span style="color:#1F497D">~4400ms</span></p> </td> <td width="78" valign="top" style="width:58.5pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt; padding:0in 5.4pt 0in 5.4pt"> <p><span style="color:#1F497D">~950ms</span></p> </td> </tr> <tr> <td width="139" valign="top" style="width: 1.45in; border-style: none solid solid; border-right-color: windowtext; border-bottom-color: windowtext; border-left-color: windowtext; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; padding: 0in 5.4pt;"> <p><span style="color:#1F497D">10 writers, 101M</span></p> </td> <td width="78" valign="top" style="width:58.5pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt; padding:0in 5.4pt 0in 5.4pt"> <p><span style="color:#1F497D">~30157ms</span></p> </td> <td width="78" valign="top" style="width:58.5pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt; padding:0in 5.4pt 0in 5.4pt"> <p><span style="color:#1F497D">~5500ms</span></p> </td> </tr></tbody></table><div><br />一些其他的¾lŸè®¡åQ?/div><div><strong>100åŒæ—¶å†?</strong></div><div>Create 20 files spend: 301ms</div><div>Renaming 20 files spends: 333ms</div><div>Delete 20 files spends: 329ms</div><div></div><div><strong>1000åŒæ—¶å†?</strong></div><div>Create 20 files spend: 40145ms</div><div>Renaming 20 files spends: 39273ms<br /></div><div><strong>而在1000ä¸ªåŒæ—¶å†™çš„过½E‹ä¸åQŒé‡å‘½ååQ?/strong></div><div>Rename file: LogTest1.50 take: <strong>36434ms</strong></div><div>Rename file: LogTest1.51 take: <strong>39ms</strong></div><div>Rename file: LogTest1.52 take: <strong>34ms</strong><br /></div><div>也就是说在这个模拟过½E‹ä¸åQŒä¸€ä¸ªæ–‡ä»¶çš„rename‘…过36såQŒè€Œå‘我们有åå‡ å°æœºå™¨åŒæ—¶ä½¿ç”¨ç›¸åŒçš„NFSåQŒåƈ且æ¯å°æœºå™¨ä¸Šéƒ½è·‘二三å个½E‹åºåQŒå¦‚果那ŒD‰|—¶é—´åŒæ—¶æœ‰ä¸Šä¸‡ä¸ªçš„æ—¥å¿—写,å¯ä»¥é¢„计辑ֈ°100s情况是å¯èƒ½å‘生的ã€?/div><div>关于NFS性能的问题,在《构建高性能WEB站点》的书(330™åµï¼‰ä¸ä¹Ÿæœ‰æ¶‰å?qi¨¢ng)。简å•的介ç»åQŒNFSç”±Sunåœ?984òq´å¼€å‘,是主‹¹å¼‚æž„åã^å°å®žçŽ°æ–‡ä»¶å…±äº«çš„é¦–é€‰æ–¹æ¡ˆã€‚å®ƒòq¶æ²¡æœ‰è‡ªå·Þqš„ä¼ è¾“åè®®åQŒè€Œæ˜¯ä½¿ç”¨RPCåQˆRemote Procedure CallåQ‰å议(应用层)åQŒRPCå议默认底层åŸÞZºŽUDPä¼ è¾“åQŒä½†æ˜¯è‡ªå·±å®žçŽ°åœ¨ä¸¢åŒ…æ—¶çš„é‡ä¼ 机制åQŒè€Œä¸”NFSæœåŠ¡å™¨é‡‡ç”¨å¤š˜q›ç¨‹æ¨¡åž‹åQŒé»˜è®¤è¿›½E‹äØ“(f¨´)4åQŒä½†æ˜¯ä¸€èˆ¬éƒ½ä¼?x¨¬)è°ƒä¼˜å¢žåŠ æœåŠ¡è¿›½E‹æ•°åQŒç„¶è€?#8220;ä¸ç®¡æ€Žä¹ˆå¯¹NFS˜q›è¡Œæ€§èƒ½ä¼˜åŒ–åQŒNFS注定ä¸é€‚åˆä½œäØ“(f¨´)I/O密集型文件共享方案,但å¯ä»¥ä½œä¸ÞZ¸€èˆ¬ç”¨é€”,比如æä¾›ç«™ç‚¹å†…部的资æºå…±äº«ï¼Œå®ƒçš„优势在于å®ÒŽ(gu¨©)˜“æå¾åQŒè€Œä¸”å¯ä»¥å‡å°‘ä¸å¿…è¦çš„æ•°æ®å†—ä½™ã€?#8221;</div><div>å¯ä»¥ä½¿ç”¨å‘½ä×o(h¨´)åQ?#8220;nfsstat -c”获å–对NFSæœåŠ¡å™¨çš„æ“作的简å•统计,具体å¯ä»¥å‚考《构建高性能WEBç«™ç‚¹ã€‹çš„ç›¸å…³ç« èŠ‚åQŒé‡Œé¢è¿˜æœ‰æ›´è¯¦ç»†çš„对NFSæœåŠ¡å™¨æ€§èƒ½çš„æµ‹è¯•ã€?/div><div><br /><h2>æ€È»“</h2><strong>从这个事件我æ€È»“了两件事情:(x¨¬)</strong></div><div>1. 日志的媄å“å¯èƒ½æ˜¯å…¨å±€æ€§çš„åQŒå› 而è¦éžå¸¸ž®å¿ƒåQŒä¸€ä¸ªè€—æ—¶çš„æ“作å¯èƒ½å¼•èµïL(f¨¥ng)¨‹åºçš„“凿»”åQŒå› 而è¦éžå¸¸ž®å¿ƒã€?/div><div>2. 虽然把日志打å°åœ¨NFS上,对大é‡çš„æ—¥å¿—æ–‡äšg查找ä¼?x¨¬)方便很多,但是˜q™æ˜¯ä¸€ä¸ªå¾ˆè€—性能的设计,特别是当大é‡çš„程åºå…±äº«è¿™ä¸ªNFSçš„æ—¶å€™ï¼Œå› è€Œè¦ž®½é‡é¿å…ã€?/div><img src ="http://www.aygfsteel.com/DLevin/aggbug/426751.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/DLevin/" target="_blank">DLevin</a> 2015-08-13 16:28 <a href="http://www.aygfsteel.com/DLevin/archive/2015/08/13/426751.html#Feedback" target="_blank" style="text-decoration:none;">å‘表评论</a></div>]]></description></item><item><title>Commons Loggingå˜åœ¨çš„ClassLoader问题详解http://www.aygfsteel.com/DLevin/archive/2012/11/10/391122.htmlDLevinDLevinFri, 09 Nov 2012 16:51:00 GMThttp://www.aygfsteel.com/DLevin/archive/2012/11/10/391122.htmlhttp://www.aygfsteel.com/DLevin/comments/391122.htmlhttp://www.aygfsteel.com/DLevin/archive/2012/11/10/391122.html#Feedback2http://www.aygfsteel.com/DLevin/comments/commentRss/391122.htmlhttp://www.aygfsteel.com/DLevin/services/trackbacks/391122.html阅读全文

]]> - 深入æºç 之JDK Logginghttp://www.aygfsteel.com/DLevin/archive/2012/11/08/390992.htmlDLevinDLevinWed, 07 Nov 2012 16:49:00 GMThttp://www.aygfsteel.com/DLevin/archive/2012/11/08/390992.htmlhttp://www.aygfsteel.com/DLevin/comments/390992.htmlhttp://www.aygfsteel.com/DLevin/archive/2012/11/08/390992.html#Feedback0http://www.aygfsteel.com/DLevin/comments/commentRss/390992.htmlhttp://www.aygfsteel.com/DLevin/services/trackbacks/390992.html阅读全文

]]> - 深入æºç 之SLF4Jhttp://www.aygfsteel.com/DLevin/archive/2012/11/08/390991.htmlDLevinDLevinWed, 07 Nov 2012 16:44:00 GMThttp://www.aygfsteel.com/DLevin/archive/2012/11/08/390991.htmlhttp://www.aygfsteel.com/DLevin/comments/390991.htmlhttp://www.aygfsteel.com/DLevin/archive/2012/11/08/390991.html#Feedback4http://www.aygfsteel.com/DLevin/comments/commentRss/390991.htmlhttp://www.aygfsteel.com/DLevin/services/trackbacks/390991.html阅读全文

]]> - 深入æºç 之Commons Logging http://www.aygfsteel.com/DLevin/archive/2012/11/04/390755.htmlDLevinDLevinSat, 03 Nov 2012 17:20:00 GMThttp://www.aygfsteel.com/DLevin/archive/2012/11/04/390755.htmlhttp://www.aygfsteel.com/DLevin/comments/390755.htmlhttp://www.aygfsteel.com/DLevin/archive/2012/11/04/390755.html#Feedback0http://www.aygfsteel.com/DLevin/comments/commentRss/390755.htmlhttp://www.aygfsteel.com/DLevin/services/trackbacks/390755.html阅读全文

]]> - ã€è{】Log4j/common log和儿UæœåС噍集æˆçš„é—®é¢?/title><link>http://www.aygfsteel.com/DLevin/archive/2012/11/02/390639.html</link><dc:creator>DLevin</dc:creator><author>DLevin</author><pubDate>Thu, 01 Nov 2012 18:08:00 GMT</pubDate><guid>http://www.aygfsteel.com/DLevin/archive/2012/11/02/390639.html</guid><wfw:comment>http://www.aygfsteel.com/DLevin/comments/390639.html</wfw:comment><comments>http://www.aygfsteel.com/DLevin/archive/2012/11/02/390639.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/DLevin/comments/commentRss/390639.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/DLevin/services/trackbacks/390639.html</trackback:ping><description><![CDATA[转自åQ?a >http://xinyanfei.blog.sohu.com/72361504.html</a><br />我从转到Javaå¼€å‘åŽåQŒä¸€ç›´åœ¨å¼€å‘Application ServeråQŒæ‰€ä»¥åŸºæœ¬æ²¡æœ‰å’Œå¤§åž‹çš„Web Server打过交é“åQŒæ‰€ä»¥å…³äºŽcommon logging在这些server上部¾|²æ—¶é‡åˆ°çš„问题也åªèƒ½æ˜¯ä»Žç†è®ºä¸ŠåŽ»è§£é‡Šã€‚æ„Ÿè§‰è¿™½‹‡æ–‡ç« 介¾lçš„ä¸é”™åQŒæ‰€ä»¥è{载过æ¥ã€?br /><br /><span id="wmqeeuq" class="Apple-style-span" style="color: #62613b; font-family: Verdana, Arial, Helvetica, 宋体, sans-serif; line-height: 25px; "> ç›®å‰çš„很多商业和éžå•†ä¸šçš„æœåŠ¡å™¨ä¸é—´äšg都默认集æˆäº†common-log甚至是log4j.å› æ¤å½“我门把我们的应用å‘布在上é¢çš„æ—¶å€?都会(x¨¬)é‡åˆ°å…³äºŽlogæ–šw¢çš„é—®é¢?<br style="line-height: 25px; " /> 1.webshpere下é¢é›†æˆlog4j.<br style="line-height: 25px; " /> "WebSphereçš„ç±»è£…å…¥å™¨æ–¹å¼æœ‰ä¸¤ç§æ–¹å¼åQšPARENT_FIRSTå’ŒPARENT_LAST。默认值是PARENT_FIRSTåQŒè¿™¿Uæ–¹å¼åœ¨è½½å…¥å½“å‰classpath的类之å‰å…ˆè²å…¥å…¶ä¸Šä¸€¾U§classloaderèƒ½å¤Ÿè£…å…¥çš„ç±»ã€‚è¿™æ˜¯æ ‡å‡†çš„JVM classloader的默认ç–略。如果采用PARENT_LASTåQŒåˆ™˜q‡ç¨‹æ£å¥½ç›¸ååQŒå³å…ˆè²å…¥å½“å‰classpath的类åQŒå†è½½å…¥å…¶ä¸Šä¸€¾U§classloader能够装入的类åQŒè¿™æ ·å¯ä»¥ç”¨å½“å‰classpath䏿›´æ–°çš„¾c»è¦†ç›–其上一¾U§classloader的相åŒç±»ã€‚å—¾c»è£…入器方å¼å½±å“çš„classloader包括application classloaderã€WAR classloader以åŠ(qi¨¢ng)å…׃ín¾cÕdº“çš„classloaderã€?<br style="line-height: 25px; " /> å› äØ“(f¨´)websphere在共享类库的classloader䏿œ‰ä¸€å¥—common logging,但是¼‹®æ²¡æœ‰åˆé€‚é…¾|®æ–‡ä»?如果我们把酾|®æ£¼‹®çš„log4j.propertiesæ–‡äšg攑֜¨å…׃ín¾cÕdº“ä¸?我们ä¼?x¨¬)å‘现l(f¨¡)og4jå¯ä»¥˜q行.但还有å¦å¤–一个很通用的方å¼?-改å˜webshpereçš„ç±»åº“åŠ è½½é¡ºåº?æˆ‘ä»¬è®©ä»–å…ˆåŠ è½½æˆ‘ä»¬web应用所需的类åº?åÏxˆ‘们把webåº”ç”¨çš„åŠ æ ½æ–¹å¼æ”¹ä¸ºPARENT_LAST.<br style="line-height: 25px; " /> å“?ž®½ç®¡æˆ‘å°å¿ƒçš„æé˜²,今天˜q˜æ˜¯ä¸æ‹›äº?在我的酾|®é‡Œ,log4j的酾|®æ–‡ä»¶åªèƒ½è¯»å–一‹Æ?ä¸èƒ½ä¸€ä¸ªåº”用一个酾|®æ–‡ä»?ä¸ÞZº†è®©å®ƒåŠ è²è‡ªå·±çš„é…¾|?å¯ä»¥è‡ªå·±å†?或者用springçš?servlet/listeneråŽÀL‰‹åŠ¨åŠ è½½è¿™ä¸ªé…¾|®æ–‡ä»?<br style="line-height: 25px; " /> 2.jboss下é¢çš„集æˆlog4j<br style="line-height: 25px; " /> 大家å¯èƒ½éƒ½æ›¾åœ¨äØ“(f¨´)jboss下é¢é…ç½®log4jéƒé—·˜q?jboss比webshpereèµ°çš„˜q˜è¿œ.æ— è®ºä½ çš„™å¹ç›®æ˜¯å¦ä½¿ç”¨äº†log4j,jboss在自己å¯åŠ¨çš„æ—¶å€™å°±å·²ç»˜q行他了.也就是说在jbossåŠ è²è‡ªå·±å…׃ín¾cÕdº“的时å€?å·²ç»è¯Õd–了自己log4j.xmlæ–‡äšgé…ç½®.˜q™ä¸ªæ–‡äšg在confä¸å¯ä»¥æ‰¾åˆ?å¦‚æžœä½ éœ€è¦äØ“(f¨´)ä½ çš„åº”ç”¨å•独é…置一个catagory,ä½ éœ€è¦ç›´æŽ¥åœ¨˜q™é‡Œé…ç½®åQ?br style="line-height: 25px; " /> 在webloader装è²åº”用的时å€?å¦‚æžœåº”ç”¨ä¸æœ‰log4j的包,ä¼ég¹Žæ€Õd‡ºçްappender已被å 用的问é¢?½W”者把log4j的包˜qžå¸¦åº”用ä¸çš„log4jé…置文äšg一òq¶ç§»åŽ?世界清净äº?<br style="line-height: 25px; " />关于ä¸ÞZº†è®©åº”用自带的log4jé…置文äšg生效,有äh廸™®®ä¿®æ”¹<br style="line-height: 25px; " /> <attribute name="Java2ClassLoadingCompliance">false</attribute><br style="line-height: 25px; " />å’?br style="line-height: 25px; " /> <attribute name="UseJBossWebLoader">false</attribute><br style="line-height: 25px; " />˜q™ä¸¤ä¸ªå±žæ€§ï¼Ž<br style="line-height: 25px; " /> åQ“.sunone下é¢é›†æˆlog4j<br style="line-height: 25px; " /> è·ç¦»ä¸Šæ¬¡ç”¨SunOneæœåС噍已¾l好长时间了,ä¼ég¹ŽsunOneçš„log有些¾cÖM¼¼jboss,也是一个æœåŠ¡å™¨çš„log集䏽ޡç†.ç”׃ºŽä½¿ç”¨çš„䏿˜¯å¾ˆå¤?暂且在这里站个ä½å?<br style="line-height: 25px; " />éšæ‰‹è´´ç‚¹å…³äºŽlog的信æ?<br style="line-height: 25px; " /><a style="line-height: 21px; color: #62613b; font: normal normal normal 12px/normal Verdana, Arial, Helvetica, 宋体, sans-serif; text-decoration: underline; ">http://wiki.apache.org/jakarta-commons/Logging/FrequentlyAskedQuestions</a><br style="line-height: 25px; " /><a style="line-height: 21px; color: #62613b; font: normal normal normal 12px/normal Verdana, Arial, Helvetica, 宋体, sans-serif; text-decoration: underline; ">http://www-128.ibm.com/developerworks/cn/websphere/library/techarticles/0408_baigang/part3.html</a></span><br /><img src ="http://www.aygfsteel.com/DLevin/aggbug/390639.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/DLevin/" target="_blank">DLevin</a> 2012-11-02 02:08 <a href="http://www.aygfsteel.com/DLevin/archive/2012/11/02/390639.html#Feedback" target="_blank" style="text-decoration:none;">å‘表评论</a></div>]]></description></item><item><title>深入Log4Jæºç 之LoggerRepositoryå’ŒConfiguratorhttp://www.aygfsteel.com/DLevin/archive/2012/07/10/382678.htmlDLevinDLevinMon, 09 Jul 2012 18:38:00 GMThttp://www.aygfsteel.com/DLevin/archive/2012/07/10/382678.htmlhttp://www.aygfsteel.com/DLevin/comments/382678.htmlhttp://www.aygfsteel.com/DLevin/archive/2012/07/10/382678.html#Feedback0http://www.aygfsteel.com/DLevin/comments/commentRss/382678.htmlhttp://www.aygfsteel.com/DLevin/services/trackbacks/382678.html阅读全文

]]> - 深入Log4Jæºç 之Appenderhttp://www.aygfsteel.com/DLevin/archive/2012/07/10/382676.htmlDLevinDLevinMon, 09 Jul 2012 18:23:00 GMThttp://www.aygfsteel.com/DLevin/archive/2012/07/10/382676.htmlhttp://www.aygfsteel.com/DLevin/comments/382676.htmlhttp://www.aygfsteel.com/DLevin/archive/2012/07/10/382676.html#Feedback0http://www.aygfsteel.com/DLevin/comments/commentRss/382676.htmlhttp://www.aygfsteel.com/DLevin/services/trackbacks/382676.html阅读全文

]]> - 深入Log4Jæºç 之Layouthttp://www.aygfsteel.com/DLevin/archive/2012/07/04/382131.htmlDLevinDLevinTue, 03 Jul 2012 17:05:00 GMThttp://www.aygfsteel.com/DLevin/archive/2012/07/04/382131.htmlhttp://www.aygfsteel.com/DLevin/comments/382131.htmlhttp://www.aygfsteel.com/DLevin/archive/2012/07/04/382131.html#Feedback1http://www.aygfsteel.com/DLevin/comments/commentRss/382131.htmlhttp://www.aygfsteel.com/DLevin/services/trackbacks/382131.html阅读全文

]]> - 深入Log4Jæºç 之Log4J Corehttp://www.aygfsteel.com/DLevin/archive/2012/06/28/381667.htmlDLevinDLevinWed, 27 Jun 2012 18:09:00 GMThttp://www.aygfsteel.com/DLevin/archive/2012/06/28/381667.htmlhttp://www.aygfsteel.com/DLevin/comments/381667.htmlhttp://www.aygfsteel.com/DLevin/archive/2012/06/28/381667.html#Feedback4http://www.aygfsteel.com/DLevin/comments/commentRss/381667.htmlhttp://www.aygfsteel.com/DLevin/services/trackbacks/381667.html阅读全文

]]> - 深入Log4Jæºç 之SimpleLoghttp://www.aygfsteel.com/DLevin/archive/2012/06/12/380647.htmlDLevinDLevinTue, 12 Jun 2012 15:38:00 GMThttp://www.aygfsteel.com/DLevin/archive/2012/06/12/380647.htmlhttp://www.aygfsteel.com/DLevin/comments/380647.htmlhttp://www.aygfsteel.com/DLevin/archive/2012/06/12/380647.html#Feedback3http://www.aygfsteel.com/DLevin/comments/commentRss/380647.htmlhttp://www.aygfsteel.com/DLevin/services/trackbacks/380647.html阅读全文

]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º
ÌÒ½ÏØ|
³çÎÄÇø|
ÂúÖÞÀïÊÐ|
ÀÖÆ½ÊÐ|
ÑôË·ÏØ|
·Ê¶«ÏØ|
½ÁêÏØ|
ÆÖ½ÏØ|
̨ÖÝÊÐ|
×ñÒåÊÐ|
ÓÀ°²ÊÐ|
°¢ÀÉÆÓÒÆì|
ÍÍÁôÏØ|
´ó¹ØÏØ|
´óÀíÊÐ|
ÌïÑôÏØ|
ÎÚÉóÆì|
ÌìÌ¨ÏØ|
èë´¨ÏØ|
¸¡É½ÏØ|
ƽ½ÏØ|
ÄÚ»ÆÏØ|
ËÄ×ÓÍõÆì|
ÉØ¹ØÊÐ|
ÀÉÏªÏØ|
ÄϹ¬ÊÐ|
Âé³ÇÊÐ|
ÂÞ¶¨ÊÐ|
ȪÖÝÊÐ|
ÕØ¶«ÊÐ|
ÐðÓÀÏØ|
¶ÑÁúµÂÇìÏØ|
ÓÀÐËÏØ|
¿ÀïÊÐ|
Ì¨Ç°ÏØ|
ÓÀºÍÏØ|
Çø¡£|
±±Æ±ÊÐ|
É«´ïÏØ|
µÂÇìÏØ|
±£¿µÏØ|