mirror of
https://gitcode.com/JianFeeeee/ModelRouter.git
synced 2026-09-19 16:39:15 +00:00
Previously only the Electron GUI had installers; server admins had to build the
core by hand (`make build` -> bare binary). This adds a first-class server
distribution:
- `make core-dist` -> packaging/core-dist.sh -> cmd/build/dist/
llmsproxy_<ver>_amd64.deb (systemd unit + adapters + example config)
llmsproxy-<ver>.x86_64.rpm
llmsproxy-<ver>-linux-amd64.tar.gz
- nfpm config (packaging/nfpm.yaml): binary to /usr/bin, systemd unit with the
measured memory tuning (GOGC=50, MALLOC_ARENA_MAX=2) baked in, Lua adapters to
/usr/share/llmsproxy/adapters, repo's config.yaml as the example.
- postinst seeds /etc/llmsproxy/config.yaml on first install and keeps existing
runtime state across reinstalls; prerm stops the service on removal.
Gotchas handled: nfpm v2 here does not render `{{ .Env.VERSION }}`, so the script
stamps the version into a throwaway config copy; and under `set -o pipefail` the
idiom `strings | grep -q` is broken (grep -q closes the pipe and strings dies on
SIGPIPE -> spurious 141), so the symbol sanity-gate stages strings in a temp file.
README (zh/en) updated: memory figures replaced with production-measured
32-35 MB settled (was 37-42), and the packaging docs now describe core-dist and
the dockerized Windows build.
24 lines
946 B
Desktop File
24 lines
946 B
Desktop File
[Unit]
|
|
Description=LLMSProxy - unified OpenAI-compatible multi-source LLM gateway
|
|
After=network.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
# Memory tuning (measured, see README "内存占用"):
|
|
# MALLOC_ARENA_MAX=2 caps glibc per-thread malloc arenas. LuaJIT allocates
|
|
# through cgo -> glibc malloc, and glibc defaults to 8*nproc arenas, so every
|
|
# OS thread that touches malloc reserved its own ~1 MB arena that is never
|
|
# returned. Measured: 8-12 arenas -> 0.
|
|
# GOGC=50 halves the Go heap growth target. On its own it does NOT help (the
|
|
# saved heap is immediately eaten by more glibc arenas); combined with
|
|
# MALLOC_ARENA_MAX it cut settled RSS by ~19%. This gateway is I/O bound, so
|
|
# the extra GC cycles are free.
|
|
Environment=GOGC=50
|
|
Environment=MALLOC_ARENA_MAX=2
|
|
ExecStart=/usr/bin/llmsproxy -config /etc/llmsproxy/config.yaml
|
|
WorkingDirectory=/etc/llmsproxy
|
|
Restart=always
|
|
RestartSec=5
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target |