Example #1
0
 public void CheckMemServerState()
 {
     while (true)
     {
         List <MemServer>  allServer = MemServer.GetAllValidServer();
         List <IPEndPoint> list      = new List <IPEndPoint>();
         if (allServer == null)
         {
             return;
         }
         string ip   = string.Empty;
         int    port = 0;
         foreach (var s in allServer)
         {
             ip   = s.ServerID.Split(':')[0];
             port = Convert.ToInt32(s.ServerID.Split(':')[1]);
             list.Add(new IPEndPoint(IPAddress.Parse(ip), port));
         }
         MemcachedMonitor            monitor    = new MemcachedMonitor(list);
         List <MemcachedServerStats> resultList = monitor.GetAllServerStats();
         string result   = string.Empty;
         string toUser   = string.Empty;
         string copyUser = string.Empty;
         string errIp    = string.Empty;
         string serverId = string.Empty;
         int    errPort  = 0;
         string content  = "MemCache 服务器{0}在{1} 检测连接失败,请远程登录查看!";
         foreach (MemcachedServerStats stats in resultList)
         {
             errIp    = stats.IPEndPoint.Address.ToString();
             errPort  = stats.IPEndPoint.Port;
             serverId = errIp + ":" + errPort;
             if (!stats.IsReachable)
             {
                 GetMailUser(serverId, out toUser, out copyUser);
                 //发送邮件
                 WriteState(serverId + "测试连接失败,正在发送邮件!");
                 MailHelper.SendEmail(toUser, copyUser, serverId + "检测连接失败", string.Format(content, serverId, DateTime.Now));
                 WriteState(serverId + "发送邮件成功!");
             }
             else
             {
                 WriteState(serverId + "测试连接成功!");
             }
         }
         Thread.Sleep(sleep);
         WriteState("消息:");
     }
 }
Example #2
0
        //首次加载判断服务器是否有效
        public static bool GetOneMemServerState(string ipall)
        {
            bool flag = false;
            List <IPEndPoint> list = new List <IPEndPoint>();
            string            ip   = ipall.Split(':')[0];
            int port = Convert.ToInt32(ipall.Split(':')[1]);

            list.Add(new IPEndPoint(IPAddress.Parse(ip), port));
            MemcachedMonitor            monitor    = new MemcachedMonitor(list);
            List <MemcachedServerStats> resultList = monitor.GetAllServerStats();

            foreach (MemcachedServerStats stats in resultList)
            {
                flag = stats.IsReachable;
                break;
            }
            return(flag);
        }