LiteLLM se rompió a 300 RPS en producción. Así es como lo arreglamos
LiteLLM se rompió a 300 RPS en producción. Así es como lo arreglamos
Incidente
14:47 Nuestro chatbot de soporte al cliente atendía 280 RPS. Todo parecía normal.
14:53 El tráfico sube a 310 RPS. Los tiempos de respuesta aumentan y empiezan las quejas en Slack.
14:58 La latencia P99 alcanza 18 segundos y algunas solicitudes agotan el tiempo de espera.
15:05 Reiniciamos LiteLLM manualmente. Durante el reinicio el tráfico cae pero los usuarios se enfadan. Esto ocurrió tres veces esa semana.
Qué pensamos que pasaba
Más réplicas, balanceador, hardware mejor. Escalamos horizontalmente y añadimos tres instancias adicionales de LiteLLM.
Resultado
Coste multiplicado por 4. Tráfico llegó a 320 RPS y los mismos problemas reaparecieron. Todas las instancias sufrieron al mismo tiempo.
Cuál era el problema real
LiteLLM está construido con Python y FastAPI. A bajo tráfico funciona bien, pero por encima de ~300 RPS la arquitectura de Python se convierte en cuello de botella.
Limitaciones clave de Python detectadas
Bloqueo global del intérprete que impide ejecución paralela efectiva. Overhead asincrónico por coordinación del event loop. Presión de memoria por dependencias pesadas y procesos de larga duración. Pausas del recolector de basura que congelan el manejo de solicitudes.
Observaciones en una instancia a 350 RPS
CPU 85 por ciento con un núcleo saturado por el GIL. Memoria creciendo de 3.2 GB a 6.8 GB y hasta 8 GB en 2 horas, proceso eliminado por OOM killer. Latencia P50 desde 200 ms hasta 2 s y P99 hasta 12 s y timeout. Pausas del GC 100 300 ms cada ~30 s.
Esto no es un fallo de LiteLLM en sí, es Python alcanzando sus límites a alto throughput.
Cómo lo resolvimos con Bifrost
Necesitábamos infraestructura de grado producción, no un prototipo que se rompe bajo carga. Construimos Bifrost en Go pensando en cargas LLM de alto rendimiento. Es open source y licencia MIT.
Diferencias arquitectónicas clave
Concurrencia real sin GIL: las goroutines de Go se ejecutan en paralelo en todos los núcleos CPU. Concurrencia ligera que mantiene memoria predecible: 10 000 goroutines consumen ~100 MB en Go frente a fallos de memoria con hilos o tareas en Python. Recolector de basura concurrente con pausas típicamente inferiores a 1 ms. Soporte HTTP2 nativo para multiplexado de solicitudes y sin dependencias externas.
Comparativa en carga real
Prueba: chatbot de soporte con tráfico real sostenido de 500 RPS.
LiteLLM 3 instancias t3.xlarge P50 2.1 s P99 23.4 s Memoria por instancia 4 7 GB Tasa de timeout 8 por ciento Coste aproximado 450 USD mes Estabilidad: reinicio cada 6 8 horas
Bifrost 1 instancia t3.large P50 230 ms P99 520 ms Memoria 1.4 GB estable Tasa de timeout 0.1 por ciento Coste aprox 60 USD mes Estabilidad: 30+ días sin reinicio
Resultado: P99 45 veces más rápido, 7 veces más barato y estable en producción.
Además de rendimiento, añadimos características de producción que LiteLLM no tenía
Balanceo adaptativo de carga que repondera claves API en tiempo real según latencia y tasas de error. Caché semántica que guarda respuestas por similitud, aumentando la tasa de hit y ahorrando costes. Observabilidad sin sobrecarga: cada solicitud registrada con inputs outputs uso de tokens desglose de latencia y coste por petición. Failover de proveedores: si un proveedor primario cae, el tráfico conmute automáticamente a otro sin impacto para el usuario.
La migración fue sorprendentemente sencilla
Esperábamos días de refactorización. En la práctica llevarlo a producción fue cuestión de minutos cambiando la base de la API al gateway Bifrost y redirigiendo llamadas. Bifrost es compatible con la API de OpenAI y con frameworks comunes.
Despliegue gradual
Semana 1 10 por ciento del tráfico Latencia reducida 60 por ciento. Semana 2 50 por ciento aún estable y costes ya descendiendo. Semana 3 100 por ciento migración completada y apagamos 2 de 3 instancias de LiteLLM. Tres meses después cero incidentes de downtime, picos de 800 RPS y coste mensual 60 versus 450.
Cuándo usar cada opción
Usa LiteLLM si estás en fase de prototipo, tráfico menor a 100 RPS y necesitas integración profunda con el ecosistema Python. Usa Bifrost si gestionas cargas en producción con tráfico mayor a 200 RPS, te importa la latencia P99, quieres costes predecibles y estabilidad sin reinicios constantes.
Sobre Q2BSTUDIO
En Q2BSTUDIO somos una empresa de desarrollo de software y aplicaciones a medida especializada en inteligencia artificial ciberseguridad y servicios cloud. Ofrecemos soluciones de software a medida y aplicaciones a medida para empresas que necesitan escalabilidad y resiliencia, incluyendo servicios en servicios cloud AWS y Azure y proyectos de inteligencia artificial. Nuestro equipo implementa agentes IA, modelos para IA para empresas y pipelines seguros integrados con monitorización y análisis de datos.
Servicios destacados
Desarrollo de software a medida y aplicaciones a medida. Integración de soluciones de inteligencia artificial y automatización de procesos. Auditorías de ciberseguridad y pentesting. Inteligencia de negocio con dashboards y Power BI. Si te interesa una auditoría de rendimiento de gateways LLM o migrar a una arquitectura más estable, podemos ayudarte a diseñar la solución y ejecutar la migración.
Si quieres optimizar latencias P99 reducir costes y garantizar disponibilidad para producción ponte en contacto con nuestro equipo de IA y soluciones cloud. Con Q2BSTUDIO obtendrás experiencia en inteligencia artificial aplicaciones empresariales ciberseguridad y IA para empresas para llevar tu proyecto al siguiente nivel.
Conclusión
El problema no era LiteLLM a secas sino las limitaciones de Python en entornos de alto throughput. Replantear la infraestructura y construir una pasarela en Go solucionó latencias costes y estabilidad. Si tu gateway LLM sufre bajo carga no eres el único; con la experiencia de Q2BSTUDIO podemos evaluar alternativas y diseñar una arquitectura escalable y segura que incluya servicios de inteligencia de negocio agentes IA ciberseguridad y despliegues en la nube.
Comentarios