Log4j與磁碟性能優化

火星人 @ 2014-03-09 , reply:0


最近在系統優化的過程中發現了這麼一個情況和大家分享一下.在我公司中間件伺服器(Borland BES)上Log4j是這樣配置的.

<param name="ImmediateFlush" value="true"/>
<param name="BufferedIO" value="false"/>
<param name="BufferSize" value="8192"/>
<param name="MaxBackupIndex" value="50"/>
<param name="MaxFileSize" value="10MB"/>

然後在系統監控的過程中用發現磁碟IO等待的比較厲害(Linux AS 4.0 for AMD64)的系統,用vmstat 2 20監控如下.


procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 160 165024 216328 2698016 0 0 0 19 0 0 1 0 97 2
1 0 160 164816 216328 2698016 0 0 0 64 1280 859 2 0 91 6
0 0 160 164824 216328 2698084 0 0 0 182 1395 961 3 1 84 12
0 1 160 164760 216332 2698148 0 0 0 132 1413 1164 3 1 86 10
0 0 160 164768 216332 2698148 0 0 0 162 1337 842 2 1 88 10
0 1 160 164776 216332 2698148 0 0 0 96 1324 715 2 0 93 5
0 0 160 164784 216332 2698216 0 0 0 804 1218 686 1 1 74 24

其中有幾個採樣上wa (CPU等待IO的時間)達到了24(一般建議小於10).這說明頻繁的寫日誌(1小時30M左右),導致CPU等待IO時間過長.這樣頻繁的寫日誌,磁碟也很容易搞壞.

於是對Log4j的配置文件進行了調整,改成了Buffered IO 模式.

<param name="Append" value="true"/>
<param name="ImmediateFlush" value="false"/>
<param name="BufferedIO" value="true"/>
<param name="BufferSize" value="8192"/>

再用vmstat 2 20監控,發現IO明細下降下來了(cs 沒有再大於 200過,wa也沒有大於20過)


procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 160 47016 226124 2790764 0 0 0 20 1 0 1 0 97 2
0 0 160 47032 226124 2790764 0 0 0 194 1377 828 2 1 80 17
0 0 160 47024 226124 2790764 0 0 0 102 1221 1047 3 1 89 8
0 0 160 46952 226124 2790764 0 0 0 84 1269 793 2 1 90 7
0 0 160 46432 226124 2790832 0 0 0 146 1392 1033 4 1 84 10
0 0 160 46432 226124 2790832 0 0 0 110 1346 1189 3 1 86 10
0 0 160 46376 226124 2790832 0 0 0 168 1299 705 2 0 88 10
0 0 160 46320 226124 2790832 0 0 0 36 1413 668 2 0 95 3

對於日誌量比較小的應用來說,採用Buffered模式的,對於系統監控和系統管理來說不太方便(特別是用 tail -f 查看的時候),對於日誌量比較大的應用來說就需要考慮一下,採用Buffered模式所能夠節約的IO了.


in the same way they are named here: 'imfeeling' (livejournal.com style), 'listening' and 'new_field'


:
?

本文出自 「oracle認證」 博客,請務必保留此出處http://tkchw2.blog.51cto.com/2576896/460207




[火星人 via ] Log4j與磁碟性能優化已經有113次圍觀

http://www.coctec.com/docs/linux/show-post-49880.html