BlackHole開發日記-幾種緩存方式性能測試

早上作了ehcache的benchmark,set和get一個40k的字符串(壓縮到19k)到ehcache。10000次set和get操做,每次都使用不一樣的key。緩存

ehcache的測試結果(10000次):網絡

<table> <tr> <td width="100">Operation</td> <td width="100">Total(ms)</td> <td>Average(ms)</td> </tr> <tr> <td>set</td> <td>34</td> <td>0.0034</td> </tr> <tr> <td>get</td> <td>6</td> <td>0.00065</td> </tr> </table>dom

結果至關使人滿意。memcached

做爲對比,使用JDK提供的簡單Cache類型WeakHashMap作一個測試(10000次):測試

<table> <tr> <td width="100">Operation</td> <td width="100">Total(ms)</td> <td>Average(ms)</td> </tr> <tr> <td>set</td> <td>4</td> <td>4e-4</td> </tr> <tr> <td>get</td> <td>5</td> <td>5e-4</td> </tr> </table>網站

能夠看到,ehcache的set比WeakHashMap耗時提高了10倍,可是get的效率是差很少的。由於cache的使用場景,通常都是讀遠大於寫,因此ehcache是一個勝任的進程內緩存。回去須要調研一下昨天失敗的緣由。編碼

出於興趣,又使用memcached作了一個測試。spy的客戶端彷佛會將字符串作壓縮,最後將40k的字符串壓縮到19k,可是結果仍然是毫秒級的,這也證實了涉及到網絡IO的操做,會慢上幾個數量級。代理

memcached的測試結果(1000次):進程

<table> <tr> <td width="100">Operation</td> <td width="100">Total(ms)</td> <td>Average(ms)</td> </tr> <tr> <td>set</td> <td>4796</td> <td>4.796</td> </tr> <tr> <td>get</td> <td>1726</td> <td>1.726</td> </tr> </table>字符串

開始調研DNS協議。嘗試輸出DNS query的UDP包內容,發現不是文本編碼,看來得研究一下了。

晚上到家,嘗試將MX記錄也僞造一下,方法是在domain前面加上mail.,而且把mail.domain記錄到A記錄列表,下次將這個mail.domain直接指向配置好的IP地址。queryperf真是個好東西。

晚上使用dig查看了一些知名網站的TTL,發現都在幾百到幾千之間。後來嘗試了一下MacOX下對TTL的應對策略,發現不會又TTL設置那麼長,可是絕對跟TTL有關係。

忽然有個想法,能夠將BlackHole內置緩存,而且能夠主動刷新!這樣子就很方便了,由於若是是本地搭建BlackHole,實際上本地作緩存和使用BlackHole緩存效率是相近的。

明天的任務是解析代理的響應,並作緩存。

相關文章
相關標籤/搜索