我有一个在 Digital Ocean MEAN droplet 上运行的 node.js 应用程序。当超过 300 人同时访问它时,它就会挂起。起初我注意到它一次打开了 1000 多个文件。我已经将一堆静态图像移动到 Amazon S3 来帮助解决这个问题,并提高了 ulimit 中的限制(临时修复以防止服务器完全死机)。我联系了 Digital Ocean,他们说服务器应该能够处理流量。
只是想知道我应该采取什么步骤来弄清楚为什么会发生这种情况。
我可能做错了一些事情:
- 我仍在从节点服务器提供一些静态文件。我计划将其减少到尽可能低的水平。
- 我没有为其设置反向代理(nginx、haproxy 等)。
- 数据库与 node.js 应用程序在同一台服务器上运行。
如果您希望我提供任何其他信息,请提出。我很乐意这样做。
答案1
- 如果你正在提供静态内容,请将其交给 nginx 来提供内容,正如 @codephobia 提到的那样
- 查找任何具有同步功能的功能,看看是否可以将其删除
- 您是否关闭了文件流?据我所知,node 有 255 个打开的文件句柄,而您可能已经用完了这些句柄。
如果不看的话,我帮不上忙。先生,您下一步要做的是获取一个新的 Relic 帐户并将其集成到您的网站中,以开始记录问题并查明问题的根源。