解决 Memcached 的 failed to get SockIO obj for...错误

本文介绍了在遇到Memcached获取数据时出现的'failed to get SockIO obj for...'错误,分析了原因并提供了优化方案。通过创建全局的连接池对象,减少对象实例化,以及调整相关配置,不仅解决了错误,还提升了性能。
摘要由CSDN通过智能技术生成

今天循环测试从 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 );<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值