diff --git a/monitor-service-switch/src/main/java/com/monitor/switchs/NginxSwitchCtrl.java b/monitor-service-switch/src/main/java/com/monitor/switchs/NginxSwitchCtrl.java
index 1fd89d2..9d153b2 100644
--- a/monitor-service-switch/src/main/java/com/monitor/switchs/NginxSwitchCtrl.java
+++ b/monitor-service-switch/src/main/java/com/monitor/switchs/NginxSwitchCtrl.java
@@ -25,6 +25,9 @@ import java.io.File;
 import java.io.FileReader;
 import java.io.IOException;
 import java.util.*;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
 /**
@@ -38,6 +41,10 @@ public class NginxSwitchCtrl {
 
     private long sleepTime=10*1000L;
 
+    private volatile AtomicInteger valueCount=new AtomicInteger(1);
+
+    private Map<String,BaseResponse> switchLbResponseMap=new ConcurrentHashMap<>();
+
     @Value("${system.envi}")
     private String env;
 
@@ -45,6 +52,19 @@ public class NginxSwitchCtrl {
     HostInfoMapper hostInfoMapper;
 
     /**
+     * 切换lb结果查询
+     */
+    @RequestMapping(value = "getLbSwitchResult")
+    @ResponseBody
+    public BaseResponse getLbSwitchResult(String rtnID) {
+        Set<String> nowIDset=switchLbResponseMap.keySet();
+        List<String> ids=Lists.newArrayList(rtnID.split(","));
+        if(nowIDset.containsAll(ids)){
+            return new BaseResponse();
+        }
+        return new BaseResponse(201,"not finished");
+    }
+    /**
      * 切换lb的权重
      * cloudName 源lb
      * target 目标nginx
@@ -71,19 +91,54 @@ public class NginxSwitchCtrl {
         }
         Map<String,List<String>> innerListenerMap=getLbListerner(true);
         Map<String,List<String>> outerListenerMap=getLbListerner(false);
+        String ts=String.valueOf(new Date().getTime());
+        String rtnID="";
         for(LbModel lb:lbList){
+            if(rtnID.length()>0){
+                rtnID += ",";
+            }
+            rtnID += (ts+"-"+valueCount.getAndIncrement());
+            //beginSwitchLb(rtnID,targetMap,lb,innerListenerMap,outerListenerMap);
+            startRunAsySwitchLb(rtnID,targetMap,lb,innerListenerMap,outerListenerMap);
+        }
+        BaseResponse response= new BaseResponse();
+        response.setData(rtnID);
+        return response;
+    }
+
+    private BaseResponse beginSwitchLb(String rtnID,Map<String,Integer> targetMap,LbModel lb,Map<String,List<String>> innerListenerMap,Map<String,List<String>> outerListenerMap){
+        logger.info(" beginSwitchLb  lb {} ,rtnID {}",lb,rtnID);
+        BaseResponse rtnBasResponse=null;
+        try{
             if(lb.isClbFlag()){
-                switchClb(targetMap,lb);
+                rtnBasResponse= switchClb(targetMap,lb);
             }else {
                 Map<String, List<String>> listenerMap = outerListenerMap;
                 if (lb.isInnerFlag()) {
                     listenerMap = innerListenerMap;
                 }
-                switchAlb(listenerMap,targetMap,lb);
+                rtnBasResponse= switchAlb(listenerMap,targetMap,lb);
             }
-
+        }catch (Exception e){
+            logger.error("beginSwitchLb error {}",e);
         }
-        return new BaseResponse();
+        if(rtnBasResponse==null){
+            rtnBasResponse = new BaseResponse(201,"switch lb error");
+        }
+        switchLbResponseMap.put(rtnID,rtnBasResponse);
+        return rtnBasResponse;
+    }
+
+    /**
+     *  发起异步调用
+     */
+    private void startRunAsySwitchLb(String rtnID,Map<String,Integer> targetMap,LbModel lb,Map<String,List<String>> innerListenerMap,Map<String,List<String>> outerListenerMap){
+        CompletableFuture.runAsync(new Runnable() {
+            @Override
+            public void run() {
+                beginSwitchLb(rtnID,targetMap,lb,innerListenerMap,outerListenerMap);
+            }
+        });
     }
 
     /**