node.js - 为什么 CPU 使用率达到 80% 时 npm 包 pm2 无法重启?
问题描述
当 CPU Utilization 达到 80% 时,Pm2 无法重新启动。我注意到这主要发生在我发送邮件时。
您认为此问题与内存泄漏或 nodemailer 有关吗?
在这里,我添加了我的代码。
var smtpTransport = nodeMailer.createTransport({ host: 'myhostname', port: 465, secure:true, tls:{ rejectUnauthorized:false }, auth: { user: <>, pass: <> } })
var mailOptions = {
from: <<email>>,
to: <<email>>,
subject: '<<my text>>',
html: <<text>>
};
smtpTransport.sendMail(mailOptions, function(err,res){
if(err)
{
console.log(err);
}else{
console.log(res.response);
}
});
解决方案
Pm2 在达到高 CPU 时不会重新启动您的应用程序,您只能指定 Pm2 将重新启动您的应用程序的内存限制,如文档http://pm2.keymetrics.io/docs/usage/memory-limit/中所述.
话虽这么说,当您的服务器因执行工作负载而达到高 CPU 使用率时崩溃并不是可行的方法。
当您的服务器达到其容量的 80% 时,要么意味着您有未优化的代码/泄漏,要么您需要扩展。
推荐阅读
- c# - 如何在 SQL 中用 Decimal 映射 REAL 数据类型?在 C# 中
- javascript - 在javascript中将三个javascript数组连接到一个数组中
- c++ - 使用无符号而不是有符号的 int 是否更有可能导致错误?为什么?
- reactjs - 没有生命的反应组件会发生什么?
- javascript - 单击包含相关任务的按钮,例如突出显示和滚动
- java - 更改登录按钮上的 Facebook 徽标颜色
- python-2.7 - 如何解析列表-Python
- python - 使用 Python 从套接字解析 JSON 消息
- c# - Winform EF 数据网格视图数据绑定结果中 DataGridViewComboBoxCell 值无效
- python - numpy.split 返回列表而不是数组的基本原理?