kong生产环境必须使用postgresql,db-less仅适用于单节点验证;postgresql初始化失败主因是pg_hba.conf认证配置不匹配(需添加host all all 127.0.0.1/32 md5)、用户密码未用\password命令设置、kong.conf中host/port/database大小写或值错误,且修改后必须systemctl restart而非reload。

Kong 必须配 PostgreSQL 才能用插件和集群,DB-less 模式只适合单节点快速验证,别在生产环境默认选它。
PostgreSQL 初始化失败:pg_hba.conf 权限和认证方式不匹配
常见错误现象是 kong migrations up 报错 password authentication failed for user "kong",或 psql -U kong -d kong 直接拒绝连接。
- PostgreSQL 11+ 默认使用
peer认证方式处理本地 socket 连接,但 Kong 启动时走的是 TCP(127.0.0.1),必须显式配置为md5 -
/var/lib/pgsql/11/data/pg_hba.conf最后几行要确保包含:host all all 127.0.0.1/32 md5local all all md5 - 改完必须执行
systemctl restart postgresql-11,仅 reload 不生效 - 新建用户后,务必在
psql里用\password kong设置密码,不能只靠CREATE USER ... WITH PASSWORD语句——某些 PG 版本会忽略明文密码
kong.conf 数据库参数写错:host、port、database 名称大小写敏感
运行 kong start 失败,日志里反复出现 could not connect to server: Connection refused 或 database "kong" does not exist,大概率是配置项值没对上。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
pg_host别写成localhost—— 容器内 DNS 解析可能失败,统一用127.0.0.1 -
pg_port默认是5432,但 PostgreSQL 16 在 Ubuntu 上可能监听5433,查sudo ss -tlnp | grep :543确认实际端口 -
database值必须小写postgres,不是PostgreSQL或pgsql;Kong 只认这两个值:postgres或cassandra - 密码含特殊字符(如
@、/)时,pg_password字段需 URL 编码,否则解析报错
tc 流量控制与 Kong 插件的协同边界:别在网关层做带宽硬限速
有人想用 tc qdisc 给 Kong 进程限速,结果发现 upstream 服务响应变慢、健康检查频繁失败。根本原因是:Linux 流控作用于网卡收发队列,而 Kong 的 rate-limiting 插件作用于 HTTP 请求解析后、转发前的内存阶段。
-
tc控制的是“物理通道容量”,比如限制 eth0 出向总带宽为 100Mbit/s,会影响所有进程,包括 SSH、监控采集等 - Kong 的
rate-limiting插件按 consumer、route、service 维度做逻辑限流,单位是请求数/秒,不消耗额外网络资源 - 真实场景推荐组合:用
tc防止单台机器被 DDoS 打满网卡(保底),用 Kong 插件做业务级速率控制(精细) - 若真要用
tc限 Kong 流量,必须配合iptables + tc filter做端口标记,例如只限8000和8443端口,否则影响整个宿主机
PostgreSQL 用户权限、Kong 配置项大小写、tc 与插件的职责分界——这三个点漏掉任何一个,都会让 Kong 启不来或限流不生效。尤其注意 pg_hba.conf 改完必须 restart,不是 reload。










