未发布WebSocket API的WSO2 API Manager为何持续访问9099端口?
问题根因
该问题是WSO2 API Manager默认启用的WebSocket入站端点未被正确销毁导致的残留问题:旧端点实例驻留在运行时缓存中,既无法在服务关闭时正常清理,服务重启后新的配置也无法覆盖残留实例,因此会反复尝试连接9099端口、报错,且WebSocket相关配置修改不生效。
修复步骤
- 先完全停止API Manager服务,清理残留进程:
执行命令查看WSO2相关进程:ps -ef | grep wso2
找到进程ID后执行强制终止:kill -9 <进程ID> - 清理本地缓存与残留配置:
- 删除
<APIM_HOME>/repository/deployment/server/inbound-endpoints/目录下所有后缀为.ws的WebSocket端点配置文件 - 备份后删除
<APIM_HOME>/repository/database/目录下的LOCAL_DB相关文件,清理注册表中残留的端点记录 - 清空
<APIM_HOME>/repository/tmp/和<APIM_HOME>/work/目录下的所有运行时缓存
- 删除
- 修改
deployment.toml配置,彻底禁用未使用的WebSocket能力:
除注释掉apim.gateway.environment下的ws_endpoint、wss_endpoint配置外,追加以下配置:[apim.ws] enable = false [apim.wss] enable = false - 重启API Manager服务,执行
netstat -tulpn | grep 9099确认无进程占用9099端口,查看wso2carbon.log无端口连接报错即可。
若为集群部署环境,需对所有网关节点执行上述缓存清理、配置修改操作后再依次重启节点。
内容的提问来源于stack exchange,提问作者BB97
相关产品推荐
相关产品推荐

