    # File lib/active_support/vendor/memcache-client-1.5.0/memcache.rb, line 467
      def stats
        raise MemCacheError, "No active servers" unless active?
        server_stats = {}

        @servers.each do |server|
          sock = server.socket
          raise MemCacheError, "No connection to server" if sock.nil?

          value = nil
          begin
            sock.write "stats\r\n"
            stats = {}
            while line = sock.gets do
              raise_on_error_response! line
              break if line == "END\r\n"
              if line =~ /\ASTAT ([\w]+) ([\w\.\:]+)/ then
                name, value = $1, $2
                stats[name] = case name
                              when 'version'
                                value
                              when 'rusage_user', 'rusage_system' then
                                seconds, microseconds = value.split(/:/, 2)
                                microseconds ||= 0
                                Float(seconds) + (Float(microseconds) / 1_000_000)
                              else
                                if value =~ /\A\d+\Z/ then
                                  value.to_i
                                else
                                  value
                                end
                              end
              end
            end
            server_stats["#{server.host}:#{server.port}"] = stats
          rescue SocketError, SystemCallError, IOError => err
            server.close
            raise MemCacheError, err.message
          end
        end

        server_stats
      end