¿Puedo hacer que Memcached se ejecute en un entorno Windows (x64) de 64 bits?

87

¿Alguien sabe SI , CUÁNDO o CÓMO puedo hacer que Memcached se ejecute en un entorno Windows de 64 bits?

Estoy configurando una nueva solución de alojamiento y preferiría ejecutar un sistema operativo de 64 bits, y dado que es una solución ASP.Net MVC con SQL Server DB, el sistema operativo será Windows Server 2003 o (¡con suerte!) 2008.

Sé que esto podría extenderse a un debate sobre 32 bits frente a 64 bits en servidores, pero digamos que mi preferencia es 64 bits y que tengo muy buenas razones.

Hasta ahora, probé una serie de opciones y encontré un poco de ayuda relacionada con la instalación de esto en una máquina de 32 bits (y lo logré, podría agregar), pero dado que el puerto original de Windows es específico para Win32, esto difícilmente ayudará al instalar como servicio en x64. También tiene una dependencia del libevent para el que solo puedo obtener una versión compilada de Win32.

Sospecho que simplemente cargar todo esto en C ++ y presionar "compilar" (para 64 bits) no funcionaría, sobre todo por las intrincadas diferencias en las arquitecturas de 32 y 64 bits, pero me pregunto si alguien está trabajando para sacar esto. ¿el terreno? Desafortunadamente, mi experiencia radica solo en el código administrado (C #), de lo contrario, trataría de asumir esto por mí mismo, pero no puedo creer que sea el único que intenta que Memcached se ejecute en un servidor Windows de 64 bits. .. soy yo?


Actualizar

Sí, me temo que todavía estoy buscando una respuesta a esto; todos mis esfuerzos (con mis patéticas habilidades en C ++) para hacer una compilación estable han fallado; he destruido un servidor y 3 máquinas virtuales solo probándolo, así que ahora recurra a los verdaderos expertos. ¿Alguien está planeando portar esto a 64 bits? ¿O realmente estás sugiriendo que use MS Velocity en su lugar? Me estremezco de solo pensarlo.


Actualización: @Lars - En realidad uso Enyim - es muy bueno, pero a lo que te refieres es a un cliente, en lugar de a la parte del servidor.

@DannySmurf: solo he podido instalarlo como un servicio en un sistema operativo de 32 bits. El sistema operativo de 64 bits rechaza la instalación de este servicio Win32. Por supuesto que sí, una gran cantidad de código Win32 funciona a la perfección en la arquitectura x64, por lo que puede ejecutar aplicaciones de 32 bits (como Office, por ejemplo) o juegos en Vista / XP 64, etc., pero esto no se traduce directamente cuando se trata de servicios. No soy un experto, sospecho que tiene que ver con las sincronizaciones o eventos a los que los servicios necesitan suscribirse, y sospecho que 64 y 32 no funcionan bien. Me alegra que me corrijan en todo esto, pero para responder a su pregunta, sí, lo he intentado.

@OJ - muchas gracias por la respuesta directa. Lo pensé mucho, pero no estaba seguro de si alguien más tenía sugerencias o ya había seguido este camino. Tal vez cuando StackOverflow esté EN VIVO, más personas responderán y me harán saber si esto es algo que se está investigando, y aunque puedo intentar compilarlo yo mismo, simplemente no puedo "confiar" (con mi nivel de experiencia en C ++) que proporcionaría confiabilidad de "nivel empresarial" en un componente tan crucial de grandes soluciones escalables. Creo que necesitaría una intervención educada en lugar de mi enfoque experimental no higienizado antes de que pudiera tener confianza. Un pequeño descuido de mi parte podría derribar el sitio. Bueno ... hasta la próxima.

RobertTheGrey
fuente
¿Qué error ocurre al intentar registrar el servicio? Instalé varios servicios desarrollados en 32 bits, en entornos de 64 bits y nunca tuve problemas. Intente abrir una línea de comando en 32 bits y registre el servicio usando el programa sc.exe
lsalamon

Respuestas:

52

North Scale Labs ha lanzado una compilación de memcached 1.4.4 para Windows x64:

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

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

ACTUALIZACIÓN: han lanzado recientemente Memcached Server, todavía GRATIS pero con una distribución mejorada con agrupación en clústeres, interfaz de usuario de estadísticas / administración basada en la web, etc. (no estoy relacionado con ellos de ninguna manera) Compruébelo en http://northscale.com/ products / memcached.html y descargar en: http://www.northscale.com/download.php?a=d

ACTUALIZACIÓN 2: NorthScale Memcached ya no está disponible como descarga independiente. Ahora lo han incorporado a su oferta comercial de base de datos sin SQL llamada Membase. Se puede configurar para que se ejecute en modo solo Memcached (es decir, sin persistencia) y también hay una versión 100% gratuita. Compruébalo aquí: http://www.membase.org/downloads

ACTUALIZACIÓN 3: MemBase se ha acostado con CouchDB y ha producido una oferta de productos híbridos, llamada CouchBase. Todavía ofrecen una versión gratuita de "Comunidad" en http://www.couchbase.com/download

zvolkov
fuente
3
No tengo representante para editar, pero el primer enlace aquí no es correcto actualmente; se necesita un guión entre 64 y bits: blog.northscale.com/northscale-blog/2009/12/…
Maggie
22
El enlace de descarga sigue funcionando: s3.amazonaws.com/downloads.northscale.com/…
IEnumerator
¿Cómo puedo configurar el servidor memcached usando la línea de comandos para Windows? Probé codeproject.com/Articles/96698/... enlace. Pero no puedo configurar.
Naren
25

Para que la gente sepa, la versión de 32 bits y 64 bits construida por las buenas personas de membase / couchbase / lo que sea que todavía esté disponible, la URL del blog ha cambiado:

Binario de 32 bits de memcached 1.4.4 como servicio de 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

Binario de 64 bits de memcached 1.4.4 como servicio de 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

La versión de 64 bits tiene un tiempo de actividad incorrecto.

Entonces, tal vez quieras este binario de 1.4.2 en su lugar:

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

La versión de 32 bits incluida con MemCacheDManager también admite la ejecución en Windows 2000 (sin 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 desempaquetar el msi:

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

Lennie
fuente
Couchbase ahora parece estar empujando un enfoque diferente couchbase.com/memcached~~V~~singular~~3rd
Mike Gifford
6

El binario Memcached 1.4.5 para win x64 se puede encontrar aquí: http://downloads.northscale.com/memcached-1.4.5-amd64.zip

Otra opción sería instalar Couchbase Server 1.8.0 x64 desde aquí: http://www.couchbase.com/download , el memcached incluido parece ser la versión 1.7.1.1 (suena como una versión interna, no puedo decir cuál es el real)

En cuanto a ejecutar Memcached como servicio, este tutorial podría ser suficiente:

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

alexandrul
fuente
6

Binarios actualizados

NorthScale tiene versiones realmente antiguas (la más reciente es 1.4.5 que es de abril de 2010) pero hay un tipo que ofrece binarios Memcached de 64 bits para Windows compilados con Cygwin (pero no requieren que esté instalado) en su repositorio de GitHub github. com / nono303 / memcached .

Por ejemplo, los binarios de la versión lanzada más recientemente (al momento de escribir esta respuesta) 1.5.16 están aquí . Hay versiones de 32 y 64 bits.

Memcached como servicio de Windows

Si desea instalarlo como un servicio de Windows, puede utilizar, por ejemplo, el Administrador de servicios Non-Sucking de código abierto :

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

Consulte la documentación para obtener más detalles.

David Ferenczy Rogožan
fuente
3

Personalmente, creo que tendrías que volver a compilar la aplicación usando un compilador de 64 bits (obviamente en una máquina de 64 bits) para aprovechar al máximo Memcached en una plataforma de 64 bits. Esto puede no ser una tarea fácil dependiendo del código. Si se escribió con la portabilidad de 64 bits en mente, podría ser una simple recompilación. Si no es así, entonces podría estar listo para un poco de parche antes de que se compile ... ¡y luego tendría que verificar que no haya roto nada!

No creo que esté sobrestimando las diferencias entre 32 y 64 bits en absoluto. Un error común es asumir que el trabajo es una simple recompilación cuando en realidad no lo es. Hay más problemas de portabilidad de los que la mayoría de la gente cree. El hecho de que la aplicación se compile y termine con un binario no significa que el binario se comportará como debería. Especialmente cuando puede interactuar con otro código de 32 bits.

Habiendo dicho eso, ¡podría valer la pena darle una vuelta!

Buena suerte. ¡Salud!


@Lars: Recomiendo leer la pregunta antes de intentar una respuesta.

@John Sibly & @DannySmurf: dada la naturaleza de Memcached y lo que pretende lograr, ¿seguramente no querrá ejecutar una versión de 32 bits en una máquina de 64 bits? Si tuviera una máquina con capacidad de 64 bits, tendría sentido ejecutar una versión de 64 bits para aprovechar al máximo las características del hardware.

DO.
fuente
3

Tengo un memcached-1.2.1 para win32 descargado originalmente desde aquí: http://jehiah.cz/projects/memcached-win32/ (pero ahora, por alguna razón, es un enlace roto).

Así es como logré ejecutar Memcached para Win32 en Windows Server 2008 R2, 64 bits. memcached.exe -> propiedades -> Compatibilidad -> Ejecute este programa en modo de compatibilidad para: Windows XP (SP 3) . Tenga en cuenta que el usuario Uriel Katz menciona en esta discusión que este método se restringe a 2GB de memoria de uso.

jim77
fuente
2

Estaba buscando memcached en un sistema Windows de 64 bits y encontré esto. Hasta ahora no hay ninguna versión memcached de Win64. Pero acabo de iniciar memcached.exe con los comandos apropiados a través de cmd y está funcionando bien. Estoy usando Windows Vista de 64 bits, no sé si hay diferencias entre Vista y las versiones del servidor.

Saludos cordiales Fleshgrinder


fuente
Gracias por esto, comenzar desde el cmd no fue el problema, instalarlo como un servicio fue el problema. saludos, Rob G
RobertTheGrey
1

Amigo, CodePlex es su amigo -> echa un vistazo a este puerto de la misma. Solía ​​tener una versión de 64 bits, pero puede descargar la última y compilar para 64 bits (bastante fácil) o consultar las versiones anteriores.

Pure.Krome
fuente
1
Hola Pure.Krome, gracias por la información pero he visto esta página y nunca he visto la versión de servidor de 64 bits. Y no, según la respuesta de OJ anterior, no se puede compilar "fácilmente" en 64 bits a menos que el código se haya escrito de esa manera, y trabajar con la memoria es siempre un mal lugar para probar esa teoría ...
RobertTheGrey
hmm. ahh -> el bit x64 era la versión BETA, por lo que ha sido reemplazado por algunas actualizaciones más recientes. se encontró aquí: codeplex.com/memcachedproviders/Release/…
Pure.Krome
1

La versión de 32 bits se ejecuta en 64 bits a través de WOW64, pero el proceso aún está limitado a 2 GB, con una versión de 64 bits puede ir más allá a más de una sola máquina.

Uriel Katz
fuente
0

¿Está seguro de que la versión de 32 bits no solo se ejecuta en Windows de 64 bits, sin modificaciones? La mayoría de las cosas lo hacen.

De no ser así, ¿ha intentado compilarlo para 64 bits? Un breve análisis de algunos grupos de Google, etc., donde las personas hicieron esta misma pregunta sugiere que esa puede ser exactamente la solución a esto. Creo que probablemente esté sobreestimando la diferencia entre Windows de 32 y 64 bits (al menos en lo que respecta a la compilación de una aplicación nativa).

El Pitufo
fuente
0

Para su información, no pude obtener la versión de 64 bits (desde aquí http://labs.northscale.com/memcached-packages/ ) para instalar como un servicio hasta que ejecuté memcached como administrador.

Simplemente fui a las propiedades del ejecutable, luego a la pestaña Compatibilidad y verifiqué "Ejecutar este programa como administrador" (hay un montón de otras formas de hacer esto, pero parecía la más simple)

Entonces finalmente pude ejecutar con éxito: memcached -d install

No olvide iniciar el servicio después de que esté instalado también :)

Jasper Rosenberg
fuente
0

Siempre puede ejecutar varias instancias de procesos memcached de 32 bits en una caja, lo que permite que esa máquina proporcione un total de> 2 GB de espacio en Memcache.

Conocido
fuente