waterye

          memcached java client

          1. http://www.whalin.com/memcached/ v2.0.1
          2. http://code.google.com/p/spymemcached/ v2.2

          a. 使用whalin版會導致File Descriptor leak,而使用spy版則不會,原因是whalin版沒有使用selector管理socketchannel.
                 Thread.sleep(1000 * 30);
                  System.out.println(
          "begin");

                  Selector selector 
          = null;
                  SocketChannel channel 
          = null;
                  
          try {
                      String host 
          = "192.168.0.74";
                      
          int port = 11211;
                      
          int timeout = 1000 * 60;

                      selector 
          = Selector.open();
                      channel 
          = SocketChannel.open();
                      channel.configureBlocking(
          false);

                      channel.connect(
          new InetSocketAddress(host, port));
                      channel.register(selector, channel.validOps());

                      
          try {
                          selector.select();
                      } 
          catch (IOException e) {
                          e.printStackTrace();
                      }

                      Iterator it 
          = selector.selectedKeys().iterator();
                      
          int i = 0;
                      
          while (it.hasNext()) {
                          i
          ++;
                          System.out.println(i);
                          SelectionKey selKey 
          = (SelectionKey) it.next();
                          it.remove();

                          
          try {
                              processSelectionKey(selKey);
                          } 
          catch (IOException e) {
                              e.printStackTrace();
                              selKey.cancel();
                          }
                      }

                      System.out.println(
          "unclose");
                      Thread.sleep(
          1000 * 30);
                  } 
          catch (Exception e) {
                      e.printStackTrace();
                  } 
          finally {
                      
          if (channel != null && channel.isOpen()) {
                          
          try {
                              channel.close();
                          } 
          catch (Exception e) {
                              e.printStackTrace();
                          }
                      }
                      
          if (selector!=null) {
                          selector.close();      
          // not fd leak
                      }
                  }

                  System.out.println(
          "end");
                  Thread.sleep(
          1000 * 30 * 1);
          通過lsof -p pid | grep pipe可以觀察是否有fd leak.

          b. w版set 1000000 object 需要600s左右,s版只需150s左右

          posted on 2008-10-31 19:55 waterye 閱讀(1551) 評論(2)  編輯  收藏 所屬分類: Java

          Feedback

          # re: memcached java client 2009-12-26 23:08 laurence

          與用不用selector來管理無關,倒是close沒調是真的!  回復  更多評論   

          # re: memcached java client[未登錄] 2009-12-27 01:12 waterye

          @laurence 用s版很久了,系統很穩定,沒有去理w版了
            回復  更多評論   

          My Links

          Blog Stats

          News

          留言簿(7)

          隨筆檔案(175)

          最新隨筆

          搜索

          最新評論

          主站蜘蛛池模板: 姚安县| 团风县| 八宿县| 阿勒泰市| 通河县| 合阳县| 巴林右旗| 竹北市| 莲花县| 上蔡县| 从江县| 吉木乃县| 任丘市| 汉寿县| 兴文县| 楚雄市| 洛南县| 阜新市| 巴林右旗| 淮南市| 新竹县| 阿克陶县| 阿图什市| 石渠县| 新昌县| 石楼县| 绥阳县| 宿州市| 宁城县| 田林县| 荥阳市| 三门县| 南涧| 项城市| 汉中市| 平陆县| 金华市| 清丰县| 阿克苏市| 漠河县| 郎溪县|