【问题标题】:How to Use memcached on different port如何在不同的端口上使用 memcached
【发布时间】:2013-08-16 02:03:45
【问题描述】:
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。​​为什么?

【问题讨论】:

  • windows 上的-d 选项管理windows 风格的服务——它与linux 上的-d 选项完全不同。当您执行-d start 时,它会启动 Windows 服务,并且完全忽略 -p 选项。如果您想在多个端口上测试它,请打开两个 cmd 窗口并在每个 中单独启动它,而无需 -d 选项

标签: java memcached spymemcached


【解决方案1】:

memcached for 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,因此需要对其进行更改以确保 udp 也可用于两种服务。

您可以在 sc 配置行中添加 -u 11211-u 11212

要停止和单独使用 memcached 服务:

sc stop memcached11211
sc stop memcached11212

要删除服务:

sc delete memcached11211
sc delete memcached11212

如果您只是在不同的端口上试用它,那么只需使用多个 cmd 窗口并以这种方式运行它。

【讨论】:

  • 当我尝试使用 c:\memcached>sc start Memcached11211 时出现以下错误。 [SC] StartService: OpenService FAILED 1060: 指定的服务不作为已安装的服务存在。任何想法..为什么它来了.?我只是打开 Elevated 命令提示符然后执行前两个 sc 状态。然后我更改了我的 memcached.exe 文件所在的目录,即 c:\memcached。
  • 服务注册了吗?创建服务后,您应该已经看到:[SC] CreateService SUCCESS。如果您没有看到此消息,则sc start memcached11211 将失败,因为服务未安装。您可以使用sc query memcached11211 检查服务是否存在,以及它的状态。此外,请确保您使用的是整个命令行 - 需要 displayname="<name>"
  • 描述:在注册表和服务数据库中创建一个服务条目。用法: sc create [service name] [binPath= ] ... 选项: 注意:选项名称包含等号。等号和值之间需要一个空格。 type= (default = own) start= (default = demand) error= (默认 = 正常)
  • binPath= group= tag= depend= obj= (默认 = LocalSystem ) DisplayName= 密码=
  • 当我在提升的命令提示符下执行第一个 SC 命令时。
猜你喜欢
  • 2016-03-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-14
  • 2014-01-12
  • 2016-03-01
  • 2016-10-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多