node.js错误:连接EADDRINUSE 104.16.58.5:443

时间:2018-07-26 08:02:49

标签: node.js

完整错误:

    (node:8852) UnhandledPromiseRejectionWarning: Error: connect EADDRINUSE 104.16.58.5:443
    at Object._errnoException (util.js:1022:11)
    at _exceptionWithHostPort (util.js:1044:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1198:14)
(node:8852) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:8852) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

我已安装的节点模块:

  • Canvas @ next
  • 序列化
  • discord.js
  • sqlite3

其他信息:

    不管应用程序做什么,当有人与该应用程序进行交互时,
  • 有时会发生错误。

3 个答案:

答案 0 :(得分:0)

错误显示EADDRINUSE-表示您的应用使用的端口已被其他进程使用(某些使用443作为http默认端口的http服务器)

您可以从443更改端口,也可以找到使用此端口的进程并验证是否需要该进程

要在Linux运行上查找进程,请执行以下操作:

netstat -an | grep :443

第二列将告诉您哪个processId使用此端口

在Windows上:

netstat -aon | findstr 443

答案 1 :(得分:0)

由于这是一个connect EADDRINUSE 104.16.58.5:443错误,因此您的源计算机上可能没有免费的临时TCP端口。

状态TIME_WAIT中可能有许多(旧)TCP连接。

请尝试增加临时端口范围。

有关参考,请参见https://github.com/nodejs/node-v0.x-archive/issues/3796https://github.com/nodejs/help/issues/434

答案 2 :(得分:0)

Read the Oracle advise (click here)

  

在Windows上为重负载调整TCP设置

指导搜索跨越多个物理分区的基础搜索体系结构使用TCP / IP端口和非阻塞NIO SocketChannel来连接到搜索引擎。这些连接在TIME_WAIT状态下保持打开状态,直到操作系统使它们超时为止。因此,在重负载条件下,运行“路由”模块的计算机上的可用端口可能会用完。 在Windows平台上,默认超时为120秒,端口的最大数量约为4,000,因此每秒的最大连接速率为33。如果索引具有四个分区,则每个搜索都需要四个端口,这提供了每秒8.3个查询的最大查询速率。 (最大端口数/超时时间)/分区数=最大查询率。

如果超过该速率,则可能会因为TCP / IP端口的电源已用尽而看到故障。症状包括吞吐量下降和指示网络连接失败的错误。您可以使用大多数操作系统上提供的netstat实用程序,通过观察系统在负载下的情况来诊断此问题。

为避免端口用尽并支持高连接速率,请减小TIME_WAIT值并扩大端口范围。

注意:由于这些操作系统的默认连接速率较高,因此在UNIX系统上通常不会出现此问题。

要设置TcpTimedWaitDelay(TIME_WAIT):

使用regedit命令访问HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ TCPIP \ Parameters注册表子项。

创建一个名为TcpTimedWaitDelay的新REG_DWORD值。

将值设置为60。

停止并重新启动系统。

设置MaxUserPort(临时端口范围):

使用regedit命令访问HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ TCPIP \ Parameters注册表子项。

创建一个名为MaxUserPort的新REG_DWORD值。

将此值设置为32768。

停止并重新启动系统。