Skip to content

TLS/SSL asyncio leaks memory  #109534

Closed as not planned
Closed as not planned
@rojamit

Description

@rojamit

Bug report

Bug description:

python3.9 without uvloop doesn't leaks memory (or noticeably smaller).
python3.11+ (and others?) leaks memory A LOT under load (with or without uvloop) - up to +2gb per every test!

test commands:
ab -n50000 -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): self.transport = transport def data_received(self, data): 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 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() 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()

CPython versions tested on:

3.9, 3.11, 3.12

Operating systems tested on:

Debian Linux

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions