Performance Degradation in Python SDK (v3.18.2) When Reading High-Load YDB Topic
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 42/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- python
- Área
- distributed-systems
Línea de trabajo
Comienza con la inicialización del reader relacionada y el código receive_batch del informe; después, reproduce la carga de trabajo con más de 2.000 particiones, 24 procesos de reader en paralelo y escrituras sostenidas de más de 40k mensajes/seg. Compara el rendimiento de Python y C++ y rastrea la ruta del reader de Python para identificar por qué las lecturas caen de aproximadamente 30k a 20k mensajes/seg; se considera terminado cuando el rendimiento de Python sea estable con la carga indicada.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Bug Report
YDB Python SDK version:
3.18.2
Environment:
- 24 parallel reader processes.
- Topic with 2000 partitions
- High write load (spikes of 40k+ messages/sec).
Current behavior:
- Read throughput drops by ~33% (from ~30k to ~20k messages/sec) during high write loads.
- Performance degradation persists until write load stabilizes.
- No issues observed with the C++ SDK under identical conditions.
Expected behavior:
- Python SDK should maintain stable read throughput (~30k messages/sec) regardless of write load, matching the C++ SDK’s performance.
Steps to reproduce:
- Configure a YDB topic with 2000+ partitions.
- Use Python SDK (v3.18.2) to read the topic with 24 parallel processes.
- Generate a sustained high write load (e.g., 40k+ messages/sec).
- Observe read throughput degradation in Python SDK while the C++ SDK remains stable.
Related code:
# Reader initialization
async def init_client(self):
reader = self._ydb_driver.topic_client.reader(
topic=ydb.TopicReaderSelector(path=self._topic, partitions=self._partition_groups),
consumer=self._consumer_id,
)
self._reader = reader
# Batch processing
async def read_topic_partition(self) -> typing.List[typing.Tuple[datatypes.PublicMessage, int]]:
...
events_batch = await asyncio.wait_for(
self._reader.receive_batch(max_messages=self._max_messages),
timeout=_CLIENT_TIMEOUT,
)
...
- Lenguaje dominante
- Python
- Estrellas
- 102
- Forks
- 80
- Merge medio
- 1 d 2 h
- PR fusionados (30 d)
- 12
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de ydb-platform/ydb-python-sdk
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
ydb-platform/ydb-python-sdk#290 ·
Los mantenedores suelen responder en 1 día
-
dev: Forbid imports relativeAbiertoenhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
ydb-platform/ydb-python-sdk#897 ·
Los mantenedores suelen responder en 1 día
-
dev: improve codebase documentationQuizá libre de nuevo @Khabib73 la tomó hace 37 días y no hay ningún pull request abierto. Abiertoenhancement
ydb-platform/ydb-python-sdk#895 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
dev: Refactor legacyPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertoenhancement
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
ydb-platform/ydb-python-sdk#884 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
feature: [SSO] support OIDC authPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertoenhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
ydb-platform/ydb-python-sdk#876 ·
Los mantenedores suelen responder en 1 día
Todos los issues de ydb-platform/ydb-python-sdk
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
ok-oldking/ok-wuthering-waves#1785 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
healthchecks/healthchecks#1349 ·
-
deployment release-lag
Dificultad 1/5 Menos de una hora Aptitud para principiantes 68/100
nolte/kamerplanter#2374 ·
Los mantenedores suelen responder en 1 día
-
bug v1 v2
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
modelcontextprotocol/python-sdk#3725 ·
Los mantenedores suelen responder en 1 día
-
batchterms() drops queries without a similar() clause, misaligning results with inputsPosiblemente ocupada @MohammadHijjawi97 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
Los mantenedores suelen responder en 1 día