蒸汽:地址已在使用中(错误编号:98)

42
我将我的蒸汽项目部署到Ubuntu上,并进行了supervisor和Nginx的配置。 当我调用服务器时,第一次调用成功,但尝试第二次调用时,浏览器会收到502错误网关错误。当我检查错误日志时,错误是:
"Fatal error: Error raised at top level: bind(descriptor:ptr:bytes:) failed: Address already in use (errno: 98) : file /home/buildnode/jenkins/wo$"

如果我杀死了端口(8080)的进程。之后,当我再次尝试连接时,第一次尝试成功,然后再次失败。

我应该怎么做才能摆脱这个错误?


也许:停止蒸气。检查哪些端口正在使用:sudo lsof -iTCP -sTCP:LISTEN -n -P(Ubuntu 16.04)。将 Vapor 实例分配给未使用的端口。还要检查每个分配的端口只会启动一个 Vapor 实例。 - l --marc l
我遇到了与supervisor运行相关的同样问题。当我停止supervisor时,一切都正常工作。 - Vyacheslav Burlakov
@sof98789,你能解决你的问题吗? - LinusGeffarth
@LinusGeffarth,不幸的是,我无法解决这个问题。因为我没有头绪,所以我放弃了这个项目,并使用在github上找到的另一个模板项目。使用那个模板一切都正常。 - sof98789
谢谢回复!我已经按照这里所描述的进行了修复。我会把它作为一个答案发布... - LinusGeffarth
根据Vapor文档,我尝试在Vapor 4中使用以下代码:`public func configure(_ app: Application) throws { app.http.server.configuration.port = 9090 try routes(app) }` - icodes
2个回答

83

这可能是由于另一个进程正在使用该端口引起的。
我遇到了同样的问题,并通过列出所有在端口:8080上的进程来解决它:

$ sudo lsof -i :8080

然后通过逐一输入以下内容杀死它们:

$ kill {PID of the process}

之后,我的应用程序重新成功构建。


摘自这里


1
正如我在问题中所说的那样,当我杀死8080端口上的进程时,在第一次调用时它可以工作,但是每当我调用时都会再次出现错误。 - sof98789
哦,好的,对我来说不是这样... - LinusGeffarth

8

我遇到了同样的问题,以下方法对我有效:

$ kill -9 {PID of the process}

希望这可以帮到您!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接