From 9be3044b9cbe191d21675c857dd79f62b02b6ca0 Mon Sep 17 00:00:00 2001 From: Lianmin Zheng Date: Sun, 16 Aug 2026 22:41:36 -0700 Subject: [PATCH] [Engine] Freeze GC after server warmup (#34999) Co-authored-by: Jialin Ouyang --- python/sglang/srt/entrypoints/http_server.py | 21 ++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/python/sglang/srt/entrypoints/http_server.py b/python/sglang/srt/entrypoints/http_server.py index 59458cc26..fc9f5f0cf 100644 --- a/python/sglang/srt/entrypoints/http_server.py +++ b/python/sglang/srt/entrypoints/http_server.py @@ -2331,6 +2331,25 @@ def _execute_server_warmup(server_args: ServerArgs): return success +def _freeze_gc_after_server_warmup(server_args: ServerArgs): + # Freeze GC after server warmup so static objects skip future GC gen2 collection. + # Use /freeze_gc to freeze scheduler and detokenizer as well. + freeze_key = server_args.admin_api_key or server_args.api_key + freeze_headers = {} + if freeze_key: + freeze_headers["Authorization"] = f"Bearer {freeze_key}" + try: + res = requests.post( + server_args.url() + "/freeze_gc", + headers=freeze_headers, + timeout=10, + verify=server_args.ssl_verify(), + ) + res.raise_for_status() + except requests.exceptions.RequestException: + logger.warning("post-warmup freeze_gc failed", exc_info=True) + + def _wait_and_warmup( server_args: ServerArgs, launch_callback: Optional[Callable[[], None]] = None, @@ -2354,6 +2373,8 @@ def _wait_and_warmup( else: _global_state.tokenizer_manager.server_status = ServerStatus.Up + _freeze_gc_after_server_warmup(server_args) + # The server is ready for requests logger.info("The server is fired up and ready to roll!")