Optimize uvicorn startup command (#25041)

This commit is contained in:
lw9527
2026-05-12 00:28:13 -07:00
committed by GitHub
parent b35fd5f104
commit 8d27ce7371
3 changed files with 4 additions and 17 deletions
+1 -2
View File
@@ -146,7 +146,6 @@ from sglang.srt.managers.multi_tokenizer_mixin import (
MultiTokenizerRouter,
TokenizerWorker,
get_main_process_id,
monkey_patch_uvicorn_multiprocessing,
read_from_shared_memory,
write_data_for_multi_tokenizer,
)
@@ -2282,7 +2281,6 @@ def _setup_and_run_http_server(
"level": "INFO",
"propagate": False,
}
monkey_patch_uvicorn_multiprocessing()
if server_args.enable_ssl_refresh:
logger.warning(
@@ -2298,6 +2296,7 @@ def _setup_and_run_http_server(
root_path=server_args.fastapi_root_path,
log_level=server_args.log_level_http or server_args.log_level,
timeout_keep_alive=envs.SGLANG_TIMEOUT_KEEP_ALIVE.get(),
timeout_worker_healthcheck=envs.SGLANG_UVICORN_WORKER_HEALTHCHECK_TIMEOUT.get(),
loop="uvloop",
workers=server_args.tokenizer_worker_num,
ssl_keyfile=server_args.ssl_keyfile,
+3
View File
@@ -519,6 +519,9 @@ class Envs:
# HTTP Server
SGLANG_TIMEOUT_KEEP_ALIVE = EnvInt(5)
# Uvicorn multiprocess supervisor pings each worker on this interval; default 5s is
# too short when many workers cold-start and load tokenizers in parallel.
SGLANG_UVICORN_WORKER_HEALTHCHECK_TIMEOUT = EnvInt(10)
# HTTP/2 Server
SGLANG_GRANIAN_PARENT_PID = EnvInt(None)
@@ -26,7 +26,6 @@ import os
import pickle
import sys
import threading
from functools import partialmethod
from multiprocessing import shared_memory
from typing import TYPE_CHECKING, Any, Dict, Optional, Union
@@ -591,20 +590,6 @@ def write_data_for_multi_tokenizer(
return args_shm
def monkey_patch_uvicorn_multiprocessing(timeout: float = 10):
"""Monkey patch uvicorn multiprocessing is_alive timeout"""
# from default 5s -> 10s
try:
from uvicorn.supervisors.multiprocess import Process
Process.is_alive = partialmethod(Process.is_alive, timeout=timeout)
except ImportError:
logger.warning(
"uvicorn.supervisors.multiprocess not found, skipping monkey patch"
)
class SenderWrapper:
def __init__(self, port_args: PortArgs, send_to_scheduler: zmq.Socket):
self.port_args = port_args