我刚刚将我们的AWS EC2实例从t2.xlarge
升级到t2.2xlarge
,所以我们的实例现在有8个vCPU。重启服务器后,我运行命令pm2 start src/app.js -i max -f
,令我惊讶的是,它现在运行在12 vCPU上,而不是我的应用程序在8vCPU上运行。至少这是pm2 list
所显示的内容。这里到底发生了什么?
下面是cat /proc/cpuinfo
的输出
processor : 7
vendor_id : GenuineIntel
cpu family : 6
model : 79
model name : Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz
stepping : 1
microcode : 0xb000038
cpu MHz : 2300.118
cache size : 46080 KB
physical id : 0
siblings : 8
core id : 7
cpu cores : 8
apicid : 14
initial apicid : 14
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x 2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_ lm abm cpuid_fault invpcid_single pti fsgsbase bmi1 avx2 smep bmi2 erms invpcid xsaveopt
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit
bogomips : 4600.13
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:
发布于 2021-03-01 17:23:37
总结我们在评论中谈到的内容。
cat /proc/cpuinfo
的输出告诉我们,该实例实际上有8个CPU核心,我们可以从下面这一行看到:
cpu cores : 8
这告诉我们AWS正在为您提供您正在支付的东西:-)
我对pm2一无所知,但docs告诉我,pm2 start src/app.js -i max -f
中的-i max
告诉pm2启动尽可能多的工作进程。
当你改变实例类型时,CPU核心检测似乎被搞乱了,它选择将新的8个核心添加到它已经知道的4个核心上,现在给你12个进程。
作为一种解决办法,您可以将工作进程数显式设置为8,如下所示:
pm2 start src/app.js -i 8 -f
https://stackoverflow.com/questions/66426160
复制相似问题