4730 是什么
4730 是 Gearman job server 的默认端口。Gearman 提供一层任务分发中间件:客户端提交「功能名加参数」,服务端把任务派发给注册了该功能的 worker,支持同步与异步、优先级与后台任务。它的协议简单、接入成本低,因此老一代 PHP 与 Python 系统常用它做邮件发送、图片处理这类异步作业。Gearman 本身没有认证机制,安全性完全依赖网络隔离与调用方的可信程度。
基本信息
| 服务 | Gearman job server |
|---|---|
| 协议 | TCP(文本协议) |
| 用途 | 任务分发与异步作业队列 |
| 认证 | 无,依赖网络隔离 |
| 替代方案 | RabbitMQ、Kafka、Redis 队列 |
| 常见调用方 | PHP、Python 老系统 |
典型使用场景
- 异步任务排障:确认 job server 在线、worker 是否已注册
- 队列治理:查看积压的功能名与在线 worker 数量
- 安全核查:确认 4730 只在内网可达
- 技术栈迁移:评估替换为主流消息中间件的工作量
- 容量评估:并发任务数与 worker 数量的匹配关系
- 变更验证:调整 worker 数量或优先级后的效果核对
Gearman 常见诊断命令
| 命令 | 作用 | 关注点 |
|---|---|---|
| status | 列出功能名、排队数、worker 数 | 排队不为零说明消费者不足 |
| workers | 列出在线 worker | worker 掉线是任务卡住的首因 |
| version | 服务端版本 | 版本过老需评估升级 |
| priority | 优先级相关命令 | 用于调整任务处理顺序 |
探测与诊断
探测与诊断
nc -zv queue01 4730 # 连通性
(echo status; sleep 1) | nc queue01 4730 # 查看队列与 worker
ss -lntp | grep 4730 # 监听核对
# 监控建议: 对 status 输出做排队数告警
# 失败任务: 注意 worker 返回异常时任务不会自动重试Gearman 的 worker 注册即执行:任何能连到 4730 的程序都能声明自己是某个功能的 worker,从而接收并执行任务负载,因此端口暴露等价于代码执行入口。
任务语义由客户端与 worker 自行约定:升级或替换中间件时,先把功能名与参数格式盘点清楚,避免出现「没人消费」的静默积压。
Gearman 不做任务持久化:job server 重启时排队中的任务会丢失,业务侧若要保证不丢,需要在提交前落地记录或换用持久化队列。
同一个功能名可以由多个 worker 共同消费,用于横向扩容:但消费顺序无法保证,有严格顺序要求的任务不能这样拆分。