找到了导致 OpenWebUI 加载慢的罪魁祸首

在内网部署的 Open WebUI,每次打开都要转圈很久才能进首页,今天开抓包看了一下,发现获取模型列表需要 10 秒左右,难怪进去这么慢

以前还有模型获取不全的问题,后面发现是 PassWall 和 AdGuard Home 冲突导致 DNS 出现问题,域名解析不稳引起的

11 Likes

还有模型图标的问题

1 Like

:tieba_025:

这玩意还喜欢有啥一起全打包一起发

部署好了还得等它编译,连个读条都不给直接就是连不上

1 Like

我是js加载很慢
js全部加载要10来秒

1 Like

你这个可能是服务器连接问题,我这在局域网内部署的就不愁这个问题

1 Like

我局域网访问
所有的js加载也得10几秒
但是model这个接口很快,1s不到

嘿嘿 Nginx缓存加速

还有获取版本号更新也是慢接口
另外前端文件都没有加cache control 导致要全量下载

你添加了几个上游 API?我这添加了有十个左右 :joy:

版本号更新我这还好


另外这个获取模型的接口非常不稳定,现在又只要两秒了

建议用 nginx
图标如果不想折腾外链就老实用 svg
可以参考我的配置

# 定义Nginx全局环境配置
worker_processes  1;  # 工作进程数量

# 必须的 events 块
events {
    worker_connections  1024;  # 每个工作进程的最大连接数
}

# 定义 HTTP 服务
http {
    include       mime.types;        # 加载 MIME 类型
    default_type  application/octet-stream;  # 默认文件类型

    sendfile        on;             # 是否开启文件高效传输
    keepalive_timeout  65;          # 连接保持时间(秒)

    client_max_body_size 1024M;
    tcp_nopush on;
    tcp_nodelay on;

    # 开启 Gzip 压缩
    gzip on;  # 启用 Gzip 压缩
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss application/vnd.ms-fontobject font/ttf font/otf font/woff font/woff2 image/svg+xml;
    gzip_min_length 1024;  # 只有超过 1KB 的响应才会被压缩
    gzip_comp_level 5;  # 压缩级别(1-9,数字越大压缩越强,但占用 CPU 越多)
    gzip_http_version 1.1;  # 压缩支持的 HTTP 协议版本
    gzip_vary on;  # 向客户端发送 `Vary: Accept-Encoding` 头

    # 配置允许访问的主机名和IP
    server {
        listen       80;           # Nginx 监听的端口
        server_name 你的域名 location;  # 只允许指定域名访问

        # 访问控制 - 仅允许指定域名和局域网IP访问
        set $allowed 0;

        # 检查是否是允许的域名
        if ($host = 你的域名) {
            set $allowed 1;
        }

        if ($host = localhost) {
            set $allowed 1;
        }

        #检查是否是局域网IP
        if ($remote_addr ~ ^(10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.|192\.168\.)) {
            set $allowed 1;
        }

        # 如果不符合以上条件,则拒绝访问
        if ($allowed = 0) {
            return 403 "illegal host name";
        }


        # 缓存和优化静态文件
        location /_app/ {
            alias D:/openwebui/.venv/Lib/site-packages/open_webui/frontend/_app/;  # 定义静态文件的实际路径
            expires 30d;  # 缓存时间(30天)
            access_log off;
            add_header Cache-Control "public";
        }

        location /static/ {
            alias D:/openwebui/.venv/Lib/site-packages/open_webui/frontend/static/;
            expires 30d;  # 缓存时间(30天)
            access_log off;
            add_header Cache-Control "public";
        }

        location /index.html {
            alias D:/openwebui/.venv/Lib/site-packages/open_webui/frontend/index.html;  # 定义静态文件的实际路径
            expires 30d;  # 缓存时间(30天)
            access_log off;
            add_header Cache-Control "public";
        }

        # 配置静态文件路径(用于加速静态资源,如.js/.html等)
        location / {
            proxy_pass http://127.0.0.1:8080;  # 将请求代理到本地80端口服务
            proxy_set_header Host $host;     # 保持原始请求的Host头
        }

        # 配置 WebSocket 的代理
        location /ws/ {
            proxy_pass http://127.0.0.1:8080;  # 将 WebSocket 请求代理到后端服务
            proxy_http_version 1.1;           # 使用 HTTP/1.1 协议
            proxy_set_header Upgrade $http_upgrade;  # 设置 Upgrade 头(用于 WebSocket)
            proxy_set_header Connection "upgrade";   # 设置 Connection 头
            proxy_set_header Host $host;            # 保持原始请求的Host头
        }

        # 优化代理缓冲
        proxy_buffering on;
        proxy_buffer_size 128k;
        proxy_buffers 4 256k;
        proxy_temp_file_write_size 512k;
        proxy_busy_buffers_size 256k;

        # 优化代理超时设置
        proxy_connect_timeout 60s;
        proxy_send_timeout 60s;
        proxy_read_timeout 60s;

        add_header Strict-Transport-Security "max-age=31536000";
    }
}

我压根没配置过图标 :rofl: 我内网都是 IP+端口访问,没用过反代

Openwebui 的服务端优化非常烂,不用 nginx 连本地访问都可能间歇性卡死

owu有些地方搞得很臃肿,明明可以分片发,非得一次性全发出去

2 Likes

嗯,大概四五个渠道,60几个模型

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。