Fresns 基于 Swoole 的运行状态输出
参考资料
- Fresns 基于 Swoole 的运行状态输出
- Octane 的 Worker 进程未能正确初始化,导致处理请求的核心对象是空的,而这个异常又被外层的登录或安全拦截机制捕获,显示成了登录页
- 占用 8000 的正是你之前启动的 octane 进程
- Swoole 6.2.2 扩展正在为 PHP 8.3 编译的过程
- 端口还是被占用,但 PID 变了(从 244xx 变成了 261xx)。
- 按 2 核 2G 的标准,把你的 config/octane.php 调整好
- Fresns 的队列配置核心是在 .env 文件中将 QUEUE_CONNECTION
- Laravel Octane 与 Swoole 扩展的版本不兼容
Fresns 基于 Swoole 的运行状态输出
这是 Fresns 基于 Swoole 的运行状态输出(php fresns start 或类似命令启动后打印的进程/配置信息)。下面逐项解释含义,并指出可能需要注意的地方。
进程信息
"masterProcessId": 3795, // 主进程 PID(Swoole Master) "managerProcessId": 3797, // 管理进程 PID(Swoole Manager)
Master 进程:负责创建/回收 Manager 和 Worker,接收信号。
Manager 进程:负责 fork/管理 Worker 与 Task Worker。
应用与监听
"appName": "Fresns", "host": "127.0.0.1", "port": "8000",
只监听
127.0.0.1:8000,意味着只能本机访问。
如果你想让外网/局域网访问,需要改成0.0.0.0(通常通过 Nginx 反代则保持 127.0.0.1 即可)。
Worker 配置
"workers": "1", // 业务 Worker 数量,仅 1 个 "taskWorkers": 4, // Task Worker 4 个(处理异步任务) "maxRequests": "500", // 每个 Worker 处理 500 次请求后重启(防内存泄漏)
workers: 1 对生产环境偏低,通常建议:
workers = CPU 核数 或 CPU 核数 * 2
不过如果前面有 Nginx 做负载、且是单机小站,1 个也能跑,但并发能力有限。
路径
"publicPath": "/www/wwwroot/www.madama.cn/fresns/public", "storagePath": "/www/wwwroot/www.madama.cn/fresns/storage",
publicPath:Web 入口目录(Nginx root 应指向这里)。storagePath:日志、缓存、上传等运行时数据目录。
Swoole 服务器选项
"defaultServerOptions": {
"enable_coroutine": false, // 关闭协程
"daemonize": false, // 非守护进程模式(前台运行)
"log_file": ".../swoole_http.log",
"log_level": 5, // 日志级别 5(较详细)
"max_request": "500",
"package_max_length": 10485760, // 单包最大 10MB
"reactor_num": "1", // Reactor 线程数 1
"send_yield": true,
"socket_buffer_size": 10485760 // socket 缓冲 10MB
}值得注意的几点
enable_coroutine: false
Fresns 这个启动方式没有开启协程,说明它更偏向传统同步阻塞模式(兼容性更好,但高并发能力弱于协程模式)。daemonize: false
当前是前台运行。生产环境一般用supervisor或nohup/systemd来守护;若用daemonize: true则自己后台化,但不利于进程管理。reactor_num: 1+workers: 1
整体并发规格很小,适合开发/低流量站点。流量上来后建议:reactor_num= CPU 核数workers= CPU 核数 ~ 2 倍视情况开启
enable_coroutine: truepackage_max_length: 10MB
如果上传大文件(视频等),这里和 Nginx 的client_max_body_size都要相应调大,否则会 413。日志文件
storage/logs/swoole_http.log,排查启动/运行问题先看这个文件。
常见配套检查
Nginx 反代示例:
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}确认
storage目录可写(Swoole 进程用户权限)。端口 8000 未被占用:
lsof -i:8000或ss -lntp | grep 8000。
如果你是想调优或排错,可以告诉我:
站点流量/并发大概多少?
是否用 Nginx 反代?
遇到的具体问题(启动失败 / 502 / 卡顿 / 上传失败)?
我可以给出具体的配置修改建议。
时间:2026-10-02 10:27:07
来源:https://fresns.ciilii.com/
