今天循环测试从 Memcached 中取数据的性能问题、发现到3000多次就报空指针错误了(Linux 下更惨不到200次就错了)、
搜索了一下这个错误、再结合源码和本地的代码看了下、是因为取数据的时候 连接池的 Socket 连不上了、现在把改过前和改过后的代码贴出、希望大家用的上、
一、改过前:
public static String getMemcachedByKey(String key,String Server,int ind) {
String tmpContentStr = null;
String[] servers = {Server};
Integer[] weights = {3};
Calendar calendar = Calendar.getInstance();//当前日期
calendar.setTime(new Date());
calendar.add(Calendar.HOUR, 8);//1个小时后
// 获取socke连接池的实例对象
SockIOPool pool = SockIOPool.getInstance("Server"+ind);
// 设置服务器信息
pool.setServers( servers );
pool.setWeights( weights );
// 设置初始连接数、最小和最大连接数以及最大处理时间
pool.setInitConn( 5 );
pool.setMinConn( 5 );
pool.setMaxConn( 250 );
pool.setMaxIdle( 1000 * 60 * 60 * 6 );<