为了知道memcached的get操作一次性能够获取多少对象、我做了如下测试:
从两台memcached服务端中存储了10000用户对象、对象的平均大小是773字节
使用get(final Collection<String> keyCollections)方法获取对象、获取对象的数量每次递增5个
测试环境:
2个Memcached部署在两台普通的PC上
PC:2G内存、CPU: 2.8G *2
网络:100M的宽带局域网
memcached的客户端是:XMemcached
测试结果如下:
注:size为get的数量 执行时间是get完10000个对象耗费的时间
size:1 执行时间:5703 size:6 执行时间:4656 size:11 执行时间:2297 size:16 执行时间:2047 size:21 执行时间:1891 size:26 执行时间:1797 size:31 执行时间:1687 size:36 执行时间:1718 size:41 执行时间:1750 size:46 执行时间:1625 size:51 执行时间:1641 size:56 执行时间:1641 size:61 执行时间:1625 size:66 执行时间:1656 size:71 执行时间:1640 size:76 执行时间:1625 size:81 执行时间:1625 size:86 执行时间:1625 size:91 执行时间:1625 size:96 执行时间:1625 size:101 执行时间:1594 size:106 执行时间:1625 size:111 执行时间:1640 size:116 执行时间:1625 size:121 执行时间:1609 size:126 执行时间:1609 size:131 执行时间:1594 size:136 执行时间:1610 size:141 执行时间:1625 size:146 执行时间:1578 size:151 执行时间:1594 size:156 执行时间:1547 size:161 执行时间:1578 size:166 执行时间:1563 size:171 执行时间:1516 size:176 执行时间:1578 size:181 执行时间:1562 size:186 执行时间:1563 size:191 执行时间:1562 size:196 执行时间:1547 size:201 执行时间:1563 size:206 执行时间:1578 size:211 执行时间:1546 size:216 执行时间:1593 size:221 执行时间:1547 size:226 执行时间:1500 size:231 执行时间:1515 size:236 执行时间:1579 size:241 执行时间:1625 size:246 执行时间:1594 size:251 执行时间:1516 size:256 执行时间:1515 size:261 执行时间:1515 size:266 执行时间:1515 size:271 执行时间:1579 size:276 执行时间:1562 size:281 执行时间:1579 size:286 执行时间:1547 size:291 执行时间:1563 size:296 执行时间:1625 size:301 执行时间:1578 size:306 执行时间:1609 size:311 执行时间:1547 size:316 执行时间:1578 size:321 执行时间:1500 size:326 执行时间:1579 size:331 执行时间:1500 size:336 执行时间:1515 size:341 执行时间:1485 size:346 执行时间:1563 size:351 执行时间:1594 size:356 执行时间:1531 size:361 执行时间:1532 size:366 执行时间:1500 size:371 执行时间:1531 size:376 执行时间:1469 size:381 执行时间:1516 size:386 执行时间:1516 size:391 执行时间:1562 size:396 执行时间:1531 size:401 执行时间:1531 size:406 执行时间:1516 size:411 执行时间:1516 size:416 执行时间:1515 size:421 执行时间:1531 size:426 执行时间:1500 size:431 执行时间:1437 size:436 执行时间:1750 size:441 执行时间:1843 size:446 执行时间:2250 size:451 执行时间:1984 size:456 执行时间:3343 size:461 执行时间:3547 size:466 执行时间:2796 size:471 执行时间:3187 size:476 执行时间:3485 size:481 执行时间:3109 size:486 执行时间:4437 size:491 执行时间:4250 size:496 执行时间:3125
结果分析:
当一次获取一个对象的时候获取10000个对象需要5.7秒
当一次获取50对象的时候获取10000个对象只需要1.6秒
当一次获取450个对象的时候获取10000个对象则需要3秒多
由此可以得出结论:memcached批量获取对象随着数量的递增性能也有所提升、当批量获取的数量递增到一定的范围的时候性能达到最佳水平无法再提升、超过这个范围则会随着数量的递增性能逐渐降低。
所以合适的设置批量获取memcached对象对memcached有很大的性能提升(官方给出的数字是可以提升5倍)