TLS/SSL asyncio/uvloop leaks memory
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 25/100
- Type d'issue
- Bug
- Clarté
- À clarifier
- Activité
- À l'abandon
- Stack technique
- python
- Domaine
- networking
Piste de recherche
Commencez par le reproducteur minimal asyncio.Protocol utilisant uvloop.new_event_loop, loop.create_server et le contexte TLS, puis exécutez sous Linux la commande fournie ab -n15000 -c15000 -r avec les versions de Python signalées. Comparez le comportement de la mémoire avec et sans TLS, ainsi qu'avec et sans uvloop ; le travail est terminé lorsque la fuite est isolée et que la mémoire n'augmente plus excessivement sous la charge reproduite.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
python3.9 or uvloop seems to leak smaller, but python3.11 (and others?) leaks A LOT OF memory under load
test command: ab -n15000 -c15000 -r https://127.0.0.1/
(apt install apache2-utils)
import asyncio, ssl, uvloop
class HTTP(asyncio.Protocol):
def __init__(self):
self.transport = None
def connection_made(self, transport) -> None:
self.transport = transport
def data_received(self, data) -> None:
self.transport.write(
b'HTTP/1.1 200 OK\r\nContent-Length: 0\r\nConnection: keep-alive\r\n\r\n'
)
self.transport.close()
def connection_lost(self, _=0) -> bool | None:
self.transport.close()
def make_tls_context():
ctx = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
ctx.load_cert_chain('cert.crt', 'cert.key')
return ctx
tls_context = make_tls_context()
loop = uvloop.new_event_loop()
loop.set_debug(True)
async def start_server(loop):
return await loop.create_server(
HTTP, '127.0.0.1', 443, backlog=65535,
ssl=tls_context)
loop.run_until_complete(start_server(loop))
loop.run_forever()
loop.close()
CPython versions tested on:
3.9, 3.11
Operating systems tested on:
Linux
- Langage dominant
- Cython
- Étoiles
- 11.9k
- Forks
- 615
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de MagicStack/uvloop
-
License not clear Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
MagicStack/uvloop#759 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
MagicStack/uvloop#741 · 2 réactions ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
MagicStack/uvloop#702 · 8 commentaires · 9 réactions ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 25/100
MagicStack/uvloop#766 ·
-
Directly constructed subprocess pipe protocols segfault when callbacks use a non-process owner Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 52/100
MagicStack/uvloop#765 ·
Toutes les issues de MagicStack/uvloop
Issues similaires
-
Browser (wasm) relay client cannot connect to relays whose URL has a trailing-dot FQDN hostname Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
n0-computer/iroh#4550 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
bytecodealliance/rustix#1689 · 2 commentaires ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
home-assistant/supervisor#7248 ·
-
bug cert blocker needs triage
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
project-chip/connectedhomeip#74373 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100