¿Funciona varios fragmentos de Solr en una sola máquina para mejorar el rendimiento? Esperaría que Lucene fuera multiproceso, pero parece que no usa más de un núcleo en mi servidor con 16 núcleos físicos. Me doy cuenta de que esto depende de la carga de trabajo, ¡pero cualquier estadística o punto de referencia sería muy útil!¿Los múltiples fragmentos de Solr en una sola máquina mejoran el rendimiento?
Respuesta
Ejecuté unos benchmarks of our search stack, y descubrí que agregar más fragmentos de Solr (en una sola máquina, con 16 núcleos físicos) mejoraba el rendimiento hasta aproximadamente 8 fragmentos (donde obtuve una velocidad de 6,5x). Esto está en un índice con ~ 1,5 millones de documentos, ejecutando consultas de rango complejas.
Por lo tanto, parece que Solr no aprovecha múltiples núcleos físicos al ejecutar consultas en un solo índice.
Dado que su índice encaja en el caché de E/S, mejora la latencia. Pero esto no debería ser un consejo general: ¿qué pasaría con un índice más grande? En un contexto en tiempo real? Y no mide en todo momento, ¿qué sucede cuando aumenta el nivel de concurrencia? ¿Podrías hacer tus experimentos otra vez pero con un mayor número de hilos que envían consultas a Solr? (20 por ejemplo) – jpountz
No conozco un índice más grande, pero para la búsqueda en tiempo real, me gustaría que el rendimiento de la indexación no mejore, ya que las escrituras se distribuirán en varios fragmentos. Trataré de realizar algunas pruebas de rendimiento la próxima semana. Sin embargo, tampoco esperaría que haya demasiada diferencia, ya que la sobrecarga de la fusión fue <20% – cberner
Si actualmente tiene una sola caja con un solo fragmento, dividiendo este fragmento en varios fragmentos:
- es probable que empeore el rendimiento,
- puede mejorar la latencia, por la paralelización de ejecución de la consulta.
No puedo proporcionar estadísticas o puntos de referencia porque depende de si la ejecución de la consulta es CPU o E/S: si la ejecución de la consulta ya está vinculada a un solo cuadro, entonces dividir el fragmento en varios los fragmentos incluso empeorarán el rendimiento. Tendrá que probarse a sí mismo, simplemente tome un registro de producción e intente reproducirlo en ambos escenarios.
Ver mi respuesta anterior, de hecho, parece mejorar el rendimiento, significativamente incluso. – cberner
- 1. Usando múltiples fragmentos en una sola actividad
- 2. Aplicación de Android basada en una sola actividad, múltiples fragmentos
- 3. ¿Los símbolos de reutilización mejoran el rendimiento de SVG?
- 4. Ejecutar múltiples servidores MySQL en una sola máquina
- 5. Intercambiando fragmentos en una sola actividad?
- 6. Alternar entre fragmentos en una sola actividad
- 7. En SQLite, ¿las declaraciones preparadas realmente mejoran el rendimiento?
- 8. ¿Se mejoran los consejos simples para el rendimiento de Haskell (en problemas de ProjectEuler)?
- 9. ¿Los procedimientos almacenados realmente mejoran el rendimiento en MS SQL/.NET?
- 10. Solr múltiples fechas de facetas
- 11. ¿Spin_lock y spin_unlock perjudican el rendimiento de un kernel SMP en una máquina de una sola CPU?
- 12. SOLR la optimización del rendimiento
- 13. Error de autenticación de Windows en una sola máquina
- 14. ¿Se corrigen los identificadores de fragmentos múltiples en la URL?
- 15. Perforación UDP: capacidad de prueba en una sola máquina
- 16. TeamCity - agentes múltiples en una máquina? ¿Posible?
- 17. Actualizar valores múltiples en una sola instrucción
- 18. ¿Cuántas JVM podemos tener en una sola máquina?
- 19. ¿Pueden dos aplicaciones Silverlight compartir IsolatedStorage en una sola máquina?
- 20. Una máquina virtual para C++ para optimizar el rendimiento
- 21. Javadoc múltiples variables en una sola línea
- 22. Múltiples etiquetas h1 en una sola página
- 23. ActionBar Tabs con múltiples fragmentos
- 24. múltiples consultas de palabras en Solr
- 25. formas múltiples para el mismo modelo en una sola página
- 26. SQL se une a una sola tabla: ¿diferencia de rendimiento?
- 27. Solr en un entorno de múltiples inquilinos
- 28. Cuando las consultas de compilación de LINQ to SQL mejoran el rendimiento
- 29. Escalado horizontal de instancias de servidor node.js en una sola máquina
- 30. Múltiples instancias de una sola DLL MEF
¿Has leído Hacker News ayer, por cualquier posibilidad? http://carsabi.com/car-news/2012/03/23/optimizing-solr-7x-your-search-speed/ – aitchnyu
Sí, escribí eso :) Esperaba que otras personas tuvieran algunas estadísticas que pudiera comparar con though – cberner
@cberner ¿Es esto cierto para el rendimiento del índice o es un animal completamente diferente? Necesito actualizar mi índice frecuentemente con el contenido del usuario y estoy buscando acelerarlo. –