74 lines
2.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
id: common-faq.deploy-perf.faq
title: DooTask 系统性能慢 / 卡 / 加载时间长
type: faq
feature: common-faq
scope: admin
locale: zh
aliases:
- 系统卡
- 加载慢
- 响应慢
- 性能差
- 任务列表打开慢
- 消息发送延迟
- 服务器压力大
- CPU 100%
related_tools: []
related_pages: []
prerequisites:
- 部署机能 root 操作主机
negative:
- DooTask 后端走 Swoole 协程PHP-FPM 优化经验不适用
- 单机用户数超过 200 后建议给 mysql / redis 单独分配资源
- 慢查询多数源于 messages / tasks 这类大表缺索引或全文搜索未启用
last_verified: v1.7.90
---
# DooTask 系统性能慢 / 卡 / 加载时间长
## 问题
打开任务列表 / 消息会话 / 仪表盘明显变慢CPU / 内存占用高,多人操作时卡顿。
## 常见原因
**数据量大但缺优化**
- 消息、任务百万级时必须装 Manticore 全文搜索AppStore → search
- 否则降级为 MySQL LIKE慢且功能弱
**资源不足**
- 推荐最低 2 核 4G正常 4 核 8G+
- 用户 > 100 时给 mysql 分独立机器
-`docker stats` 看实时占用
**mysql 慢**
- 开 slow_query_log 找出慢 SQL按报告加索引
- `innodb_buffer_pool_size` 默认偏小,调到内存的 50%
**Swoole 配置**
- `worker_num` 默认 = 核数,确认多核机器充分用到
- `task_worker_num` 偏小会导致后台任务积压
- 改完必须 `./cmd php restart`
**Redis 容量**
- 默认无 maxmemory 限制,大用户量会撑爆
-`maxmemory 2gb` + `maxmemory-policy allkeys-lru`
**nginx 反代瓶颈**
- worker 数 / 连接数太小、静态资源没开 gzip / cache
## 解决步骤
1. 先量化:`docker stats` 看哪个容器吃满
2. 装 Manticore 搜索插件
3. mysql 开慢查询找出问题 SQL
4. 加 CPU / 内存(最简单)
5. mysql 拆到独立机器DooTask 走外部 DB
## 不要做
- 不要简单加 worker 不加 CPU反而更慢
- 生产环境不要留 `APP_DEBUG=true`,日志会爆
## 相关
- 全局搜索:[[common-faq.search-no-result.faq]]
- 磁盘满:[[common-faq.deploy-storage.faq]]