2013-08-14 1 views
4
i have excuted c:\memcached>memcached -l 0.0.0.0:11211,0.0.0.0:11212 
getaddrinfo(): No such host is known. 
failed to listen on TCP port 11211: No error. 
and that was the response i got 
if i will execute c:\memcached>memcached -p 11211 -d 
memcached: option requires an argument -- d 
Illegal argument "?" this was the response i got. so i tried these following commands 
c:\memcached>memcached -p 11211 -d start 
c:\memcached>memcached -p 11212 -d start 

но все еще его слушает порт 11211 не на 11212.why?Как использовать memcached на другом порту

+0

опция '-d' на окнах управляет службой стиля Windows - она ​​полностью отличается от опции -d на linux. Когда вы запускаете '-d start', он запускает службу Windows и ** полностью игнорирует ** опцию -p. Если вы хотите протестировать его на нескольких портах, откройте два cmd-окна и запустите их отдельно в каждом ** без ** опции -d – Petesh

ответ

15

memcached для Windows не будет прослушивать несколько портов с одним и тем же экземпляром, вам понадобится несколько экземпляров службы, чтобы заставить ее работать как служба на разных портах.

Для этого вам потребуется использовать другой механизм для установки службы, а не механизм memcached -d install.

Для достижения этой цели мы можем использовать sc. Все эти команды должны выполняться из командной строки с повышенными правами.

sc create "Memcached11211" binPath= "C:\memcached\memcached.exe -d runservice -p 11211" DisplayName= "Memcached11211" start= auto 
sc create "Memcached11212" binPath= "C:\memcached\memcached.exe -d runservice -p 11212" DisplayName= "Memcached11212" start= auto 

Тогда мы начинаем их:

C:\memcached>sc start Memcached11211 

SERVICE_NAME: Memcached11211 
     TYPE    : 10 WIN32_OWN_PROCESS 
     STATE    : 4 RUNNING 
           (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN) 
     WIN32_EXIT_CODE : 0 (0x0) 
     SERVICE_EXIT_CODE : 0 (0x0) 
     CHECKPOINT   : 0x0 
     WAIT_HINT   : 0x0 
     PID    : 5412 
     FLAGS    : 

C:\memcached>sc start Memcached11212 

SERVICE_NAME: Memcached11212 
     TYPE    : 10 WIN32_OWN_PROCESS 
     STATE    : 4 RUNNING 
           (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN) 
     WIN32_EXIT_CODE : 0 (0x0) 
     SERVICE_EXIT_CODE : 0 (0x0) 
     CHECKPOINT   : 0x0 
     WAIT_HINT   : 0x0 
     PID    : 7976 
     FLAGS    : 

C:\memcached>netstat -an | grep 112 
File STDIN: 
    TCP 0.0.0.0:11211   0.0.0.0:0    LISTENING 
    TCP 0.0.0.0:11212   0.0.0.0:0    LISTENING 
    TCP [::]:11211    [::]:0     LISTENING 
    TCP [::]:11212    [::]:0     LISTENING 
    UDP 0.0.0.0:11211   *:* 
    UDP 0.0.0.0:11211   *:* 
    UDP [::]:11211    *:* 
    UDP [::]:11211    *:*� 

Однако обратите внимание, что, как сконфигурировано, порт UDP еще 11211, так что нужно будет изменить, чтобы гарантировать, что ПДП может также использоваться как для Сервисы.

Вы должны добавить -u 11211 и -u 11212 в строки конфигурации sc.

Чтобы остановить и индивидуальное обслуживание Memcached вы будете использовать:

sc stop memcached11211 
sc stop memcached11212 

удалить службы делают:

sc delete memcached11211 
sc delete memcached11212 

Если же вы просто пытаетесь его на разных портах, то просто использовать несколько cmd окна и запустить его таким образом.

+0

, когда я попытался с помощью c: \ memcached> sc start Memcached11211 получил следующую ошибку. [SC] StartService: OpenService FAILED 1060: Указанная служба не существует как установленная служба. Любая идея ... почему? Я просто открываю командную строку Elevated, затем запускаю первые две sc statment. Затем я сменил каталог, где находится файл memcached.exe. Это c: \ memcached. –

+0

Был ли сервис зарегистрирован? Вы должны были увидеть: '[SC] CreateService SUCCESS' после создания службы. Если вы не видите это сообщение, «sc start memcached11211» завершится с ошибкой, так как служба ** не была установлена ​​**. Вы можете проверить, существует ли служба, и это состояние используется: 'sc query memcached11211'. Кроме того, убедитесь, что вы используете всю командную строку - требуется «displayname =» »' – Petesh

+0

ОПИСАНИЕ: Создает служебную запись в реестре и в базе данных служб. ПРИМЕНЕНИЕ: СБН создать [имя службы] [binPath =] ... ВАРИАНТЫ: ПРИМЕЧАНИЕ: Имя параметра включает знак равенства. Между значком равенства и значением требуется пробел. Тип = <собственный | доля | взаимодействие | ядро ​​| filesys | rec> (по умолчанию = собственный) start = (default = demand) error = < нормальное | тяжелый | критический | игнорировать> (по умолчанию = нормальное) –