mirror of
https://github.com/kuaifan/dootask.git
synced 2026-07-31 10:25:59 +00:00
74 lines
2.1 KiB
Markdown
74 lines
2.1 KiB
Markdown
---
|
||
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]]
|