Posso fazer o Memcached funcionar em um ambiente Windows (x64) de 64 bits?


87

Alguém sabe SE , QUANDO ou COMO posso fazer o Memcached rodar em um ambiente Windows de 64 bits?

Estou configurando uma nova solução de hospedagem e preferiria executar um sistema operacional de 64 bits e, como é uma solução ASP.Net MVC com banco de dados SQL Server, o sistema operacional será o Windows Server 2003 ou (com sorte!) 2008.

Eu sei que isso poderia se espalhar para um debate sobre 32bit vs 64bit em servidores, mas vamos apenas dizer que a minha preferência é de 64 bits e que tenho algumas muito boas razões.

Até agora, tentei uma série de opções e encontrei um pouco de ajuda relacionada a conseguir isso em uma máquina de 32 bits (e consegui, devo acrescentar), mas como a porta original do Windows é específica para Win32, isso dificilmente vai ajudar ao instalar como um serviço em x64. Ele também depende do libevent, para o qual só posso obter uma versão compilada do Win32.

Suspeito que simplesmente carregar tudo isso em C ++ e clicar em "compilar" (para 64 bits) não funcionaria, até por causa das diferenças intrincadas nas arquiteturas de 32 e 64 bits, mas estou me perguntando se alguém está trabalhando para resolver isso o chão? Infelizmente, minha especialidade está apenas em código gerenciado (C #), caso contrário, eu tentaria fazer isso sozinho, mas não posso acreditar que sou o único cara por aí tentando fazer o memcached rodar em um servidor Windows de 64 bits. ..sou eu?


Atualizar

Sim, infelizmente, ainda estou procurando uma resposta para isso - todos os meus esforços (com minhas habilidades patéticas de C ++) para fazer uma compilação estável falharam - eu destruí um servidor e 3 VMs apenas experimentando, então agora eu recorrer aos verdadeiros especialistas. Alguém está planejando portar isso para 64 bits? Ou você está realmente sugerindo que eu use o MS Velocity? Eu tremo só de pensar.


Atualização: @Lars - eu uso Enyim na verdade - é muito bom, mas o que você está se referindo é um cliente, ao invés da parte do servidor.

@DannySmurf - Só consegui instalá-lo como um serviço em um sistema operacional de 32 bits. O sistema operacional de 64 bits rejeita a instalação deste serviço Win32. Claro que sim, muitos códigos Win32 funcionam perfeitamente na arquitetura x64, portanto, você pode executar aplicativos de 32 bits (como o Office, por exemplo) ou jogos no Vista / XP 64 etc, mas isso não se traduz diretamente quando se trata de serviços. Não sou um especialista, suspeito que tenha a ver com as sincronizações ou eventos que os serviços precisam assinar e suspeito que 64 e 32 não funcionam bem. Fico feliz em ser corrigido em tudo isso, mas para responder à sua pergunta - sim, eu tentei.

@OJ - muito obrigado pela resposta direta. Pensei muito, mas não tinha certeza se alguém mais tinha sugestões ou já havia trilhado esse caminho. Talvez quando StackOverflow estiver AO VIVO, mais pessoas responderão e me informarão se isso é algo que está sendo investigado e, embora eu possa tentar compilá-lo sozinho - simplesmente não posso "confiar" (com meu nível de experiência em C ++) que isso forneceria confiabilidade de "nível empresarial" em um componente tão crucial de grandes soluções escalonáveis. Acho que precisaria de uma intervenção educada, em vez de minha abordagem experimental não higienizada, antes que eu pudesse estar confiante. Um pequeno descuido da minha parte pode derrubar o site. Bem ... até a próxima.


Qual erro ocorre ao tentar registrar o serviço? Instalei vários serviços desenvolvidos em 32 bits, em ambientes 64 bits, e nunca tive problemas. Tente abrir uma linha de comando em 32 bits e registrar o serviço usando o programa sc.exe
lsalamon

Respostas:


52

Os laboratórios da North Scale lançaram uma compilação do memcached 1.4.4 para Windows x64:

http://blog.couchbase.com/memcached-windows-64-bit-pre-release-available

http://labs.northscale.com/memcached-packages/

ATUALIZAÇÃO: eles lançaram recentemente o Memcached Server - ainda GRATUITO, mas com distro aprimorada com clustering, interface de usuário de administração / estatísticas baseada na web etc. (não estou relacionado a eles de forma alguma) Verifique em http://northscale.com/ products / memcached.html e faça download em: http://www.northscale.com/download.php?a=d

ATUALIZAÇÃO 2: NorthScale Memcached não está mais disponível como um download independente. Agora eles o tornaram parte de sua oferta comercial de banco de dados No-SQL, chamada Membase. Ele pode ser configurado para ser executado no modo somente Memcached (ou seja, sem persistência) e há uma versão 100% gratuita também. Confira aqui: http://www.membase.org/downloads

ATUALIZAÇÃO 3: MemBase dormiu com CouchDB e produziu uma oferta de produto híbrido, chamada CouchBase. Eles ainda oferecem uma versão gratuita da "Comunidade" em http://www.couchbase.com/download


3
Não tenho representante para editar, mas o primeiro link aqui não está correto no momento; um hífen é necessário entre 64 e bits: blog.northscale.com/northscale-blog/2009/12/…
Maggie

22
O link de download ainda funciona: s3.amazonaws.com/downloads.northscale.com/…
IEnumerator

Como posso configurar o servidor memcached usando a linha de comando do Windows? Tentei codeproject.com/Articles/96698/… link. Mas não consigo configurar.
Naren

25

Só para que as pessoas saibam, a versão de 32 bits e 64 bits construída por pessoas boas de membase / couchbase / tudo o que ainda está disponível, o URL do blog mudou:

Binário de 32 bits do memcached 1.4.4 como serviço do Windows:

http://blog.couchbase.com/memcached-144-windows-32-bit-binary-now-available

http://s3.amazonaws.com/downloads.northscale.com/memcached-win32-1.4.4-14.zip

Binário de 64 bits do memcached 1.4.4 como serviço do Windows:

http://blog.couchbase.com/memcached-windows-64-bit-pre-release-available

http://s3.amazonaws.com/downloads.northscale.com/memcached-win64-1.4.4-14.zip

A versão de 64 bits tem o tempo de atividade errado.

Então, talvez você queira este binário do 1.4.2:

http://www.urielkatz.com/archive/detail/memcached-64-bit-windows/

A versão de 32 bits incluída com MemCacheDManager também suporta execução no Windows 2000 (sem IPv6):

http://allegiance.chi-town.com/MemCacheDManager.aspx http://allegiance.chi-town.com/Download.aspx?dl=Releases/MemCacheDManager_1_0_3_0.msi&rurl=MemCacheDManager.aspx

Para descompactar o msi:

msiexec / a Releases_MemCacheDManager_1_0_3_0.msi / qb TARGETDIR = c: \ memcached


Couchbase parece agora estar empurrando uma abordagem diferente couchbase.com/memcached
Mike Gifford

6

O binário do Memcached 1.4.5 para win x64 pode ser encontrado aqui: http://downloads.northscale.com/memcached-1.4.5-amd64.zip

Outra opção seria instalar o Couchbase Server 1.8.0 x64 a partir daqui: http://www.couchbase.com/download , o memcached empacotado parece ser a versão 1.7.1.1 (parece uma versão interna, não consigo dizer qual é o verdadeiro)

Quanto à execução do memcached como um serviço, este tutorial pode ser suficiente:

http://www.richardnichols.net/2010/08/install-memcached-on-windows-server/


6

Binários atualizados

NorthScale tem versões realmente antigas (a mais nova é 1.4.5, que é de abril de 2010), mas há um cara que oferece binários Memcached de 64 bits para Windows compilados usando Cygwin (mas eles não exigem que seja instalado) em seu repositório github do GitHub. com / nono303 / memcached .

Por exemplo, os binários da versão lançada mais recentemente (enquanto escrevia esta resposta) 1.5.16 estão aqui . Existem versões de 32 e 64 bits.

Memcached como um serviço do Windows

Se você deseja instalá-lo como um serviço do Windows, você pode usar, por exemplo, o gerenciador de serviço sem sucção de código aberto :

nssm install memcached c:\path\to\memcached.exe
nssm start memcached

Consulte a documentação para obter detalhes.


3

Pessoalmente, acho que você teria que recompilar o aplicativo usando um compilador de 64 bits (obviamente em uma máquina de 64 bits) para obter o máximo do Memcached em uma plataforma de 64 bits. Isso pode não ser uma tarefa fácil dependendo do código. Se ele foi escrito com a portabilidade de 64 bits em mente, poderia ser uma recompilação simples. Se não tiver, então você pode muito bem ter que corrigir um pouco antes de construí-lo ... e então você terá que verificar se não quebrou nada!

Não acho que você esteja superestimando as diferenças entre 32 e 64 bits. Um erro comum é presumir que o trabalho é uma recompilação simples, quando na verdade não é. Existem mais problemas de portabilidade do que a maioria das pessoas imagina. Só porque o aplicativo constrói e você acaba com um binário, isso não significa que o binário se comportará como deveria. Especialmente quando pode interagir com outro código de 32 bits.

Dito isso, pode valer a pena dar uma olhada!

Boa sorte. Felicidades!


@Lars: Recomendo ler a pergunta antes de tentar uma resposta.

@John Sibly & @DannySmurf: dada a natureza do Memcached e o que ele pretende alcançar, certamente você não gostaria de rodar uma versão de 32 bits em uma máquina de 64 bits? Se você tivesse uma máquina com capacidade para 64 bits, faria sentido executar uma versão de 64 bits para aproveitar ao máximo os recursos do hardware.


3

Eu tenho um memcached-1.2.1 para win32 originalmente baixado aqui: http://jehiah.cz/projects/memcached-win32/ (mas agora, por algum motivo, é um link quebrado).

Foi assim que consegui executar o memcached para Win32 no Windows Server 2008 R2 de 64 bits. memcached.exe -> propriedades -> Compatibilidade -> Execute este programa em modo de compatibilidade para: Windows XP (SP 3) . Observe que o usuário Uriel Katz menciona nesta discussão que esse método se restringe a 2 GB de memória de uso.


2

Eu estava apenas procurando memcached em um sistema Windows de 64 bits e encontrei isso. Até agora não há nenhuma versão do Win64 com memcached. Mas acabei de iniciar o memcached.exe com os comandos apropriados via cmd e ele está funcionando bem. Estou usando o Windows Vista 64 bits, não sei se existem diferenças entre o Vista e as versões do servidor.

Atenciosamente, Fleshgrinder


Obrigado por isso - começar a partir do cmd não era o problema - instalá-lo como um serviço era o problema. Atenciosamente, Rob G
RobertTheGrey

1

Cara, o Codeplex é seu amigo -> uma olhada nessa porta dele. Costumava ter uma versão de 64 bits, mas você pode baixar o mais recente e compilar para 64 bits (muito fácil) ou verificar as versões anteriores.


1
Olá Pure.Krome, obrigado pela informação, mas já vi esta página e nunca vi a versão do servidor de 64 bits. E não - de acordo com a resposta de OJ acima, você não pode simplesmente "facilmente" compilar para 64 bits, a menos que o código tenha sido escrito dessa maneira, e trabalhar com memória é sempre um péssimo lugar para testar essa teoria ...
RobertTheGrey

Hmm. ahh -> o bit x64 era a versão BETA, então foi substituído por algumas atualizações mais recentes. foi encontrado aqui: codeplex.com/memcachedproviders/Release/…
Pure.Krome

1

A versão de 32 bits roda em 64 bits via WOW64, mas o processo ainda é limitado a 2 GB, com uma versão de 64 bits você pode ir além disso para mais do que uma única máquina terá.


0

Tem certeza de que a versão de 32 bits não funciona apenas no Windows de 64 bits, sem modificações? A maioria das coisas sim.

Se isso falhar, você realmente tentou compilá-lo para 64 bits? Uma breve verificação de alguns Grupos do Google, etc., onde as pessoas fizeram a mesma pergunta, sugere que essa pode ser exatamente a solução para isso. Acho que você provavelmente está superestimando a diferença entre o Windows de 32 bits e o de 64 bits (pelo menos no que diz respeito à compilação de um aplicativo nativo).


0

Para sua informação, não consegui instalar a versão de 64 bits (daqui http://labs.northscale.com/memcached-packages/ ) para instalar como um serviço até que executei o memcached como administrador.

Acabei de acessar as propriedades do executável, a guia Compatibilidade e marquei "Executar este programa como administrador" (há várias outras maneiras de fazer isso, mas parecia a mais simples)

Então, finalmente consegui executar com sucesso: memcached -d install

Não se esqueça de iniciar o serviço depois de instalado também :)


0

Você sempre pode executar várias instâncias de processos memcached de 32 bits em uma caixa, permitindo que essa máquina sirva um total de> 2 GB de espaço memcache.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.