【问题标题】:Best Practices of hosting a node application for production托管用于生产的节点应用程序的最佳实践
【发布时间】:2020-08-05 20:41:28
【问题描述】:

我必须将一个节点应用程序用于实时使用,我想知道是否有人可以告诉我围绕它的最佳实践。 现在的要求非常简单,我必须在 Linux ubuntu 服务器中托管两个节点应用程序。 如果有人能告诉我有关它的最佳实践,那将是非常有帮助的。

  1. 我应该在哪个端口号(最佳实践)上运行程序。 [节点应用程序暴露了一些可以被移动应用程序访问的端点]

  2. 关于如何监控服务器内存使用的任何提示。 [设置 t

  3. 关于优化数据库使用的任何提示(mysql在同一台服务器上运行)

    const pool = mysql.createPool({
    connectionLimit: 10,
    user: 'root',
    password: '<password>',
    host: '<IP>',
    database: '<DB>',
    port: '3306'
    

    });

连接限制取决于什么?

  1. 有关它的更多提示和技巧。

非常感谢任何帮助。

【问题讨论】:

  • 如果是用户在浏览器栏中键入您的域的应用程序,请使用端口 80 (http) 或 443 (https),​​这样用户就不必知道端口。除非您有更具体的问题,否则第 2 点主要只是征求意见(这里是题外话)。第 3 点是否意味着服务器的内存使用情况?第 4 点太笼统了,任何人都不知道该说什么。
  • 我已将问题更新为更具体一点

标签: node.js express server devops


【解决方案1】:

有些问题不容易回答,因为我们没有足够的细节,而且很笼统

  1. 80 或 443(取决于您是否需要 SSL,您还需要使用 let's encrypt 创建一个免费的证书),如果它是开放给用户通过浏览器访问的。 . 如果不是,您可以在其他应用程序通常不知道的范围内选择一个端口...例如,不要使用 mongo 的端口 :)

  2. 我喜欢 PM2,见仁见智,因为我实际上可以在一台机器上以集群模式运行应用程序的多个实例,然后它还具有自动重启等功能。

  3. 有很多用于 Linux 的监控工具,只需寻找预算范围内的工具并使用它,我没有任何建议,因为我主要使用具有像这样内置的监控。

  4. 很难告诉您如何优化查询而不知道它们有问题或查询是什么......但是......话虽如此,在 mysql 中解释是你的朋友,对你看到的查询运行解释它使用正确的索引等,尝试阅读 mysql 中的解释命令

  5. 这完全取决于您需要为生产做好准备...您可以包括诸如 pingdom 或其他监控工具或实时分析/监控工具(例如 newrelic 等)...这是一个非常普遍的问题,总是由运行生产环境的人的需求来回答,所以除非您向我们提供您期望您的系统执行的确切需求,否则这是我能给您的最好的:) 另外,请查看哨兵之类的东西,还有其他工具

但是,老实说……如果这只是一个简单的应用程序,为什么不像 heroku 和其他解决方案一样使用无服务器?在大多数情况下,您不需要搞乱所有这些事情,并且您可以将监控和东西作为包的一部分

祝你好运。

【讨论】:

  • @Shekhar 永远不要使用根用户运行生产代码 :) 权限太高...请确保为应用程序创建一个特殊用户,该用户仅具有运行和使用该用户所需的权限。 ..
  • What does the connection limit depend upon? - 取决于您使用的客户端,但通常这意味着它可能创建多少个连接?尝试阅读您正在使用的库的手册
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-01
  • 1970-01-01
  • 2012-05-22
  • 1970-01-01
  • 2014-03-11
  • 2012-11-25
  • 2021-11-23
相关资源
最近更新 更多