早上作了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缓存效率是相近的。
明天的任务是解析代理的响应,并作缓存。