我正在使用PM2運行一個集群的nodejs生產API,我對性能有所擔憂。我閱讀了 PM2 的檔案,但我沒有看到多少關于性能優化的內容。
PM2 或 Node 是否有默認限制?如果是這樣,我可以做些什么來確保我的 API 能夠以其最大的潛力運行呢?
我的 Web 服務器有 4 個處理器,12 GB 的記憶體,并且只為這個 API 而存在。
PM2腳本
module.exports = {
apps: [{
name: "myAppsName"/span>,
script: "src/server.js",
exec_mode: "集群"。
instances: "max",
autorestart: true,
watch: false。
}]
};
uj5u.com熱心網友回復:
從性能上講,你可能處于良好狀態。你沒有說任何關于你的性能問題,所以這里有一個一般的答案。
你已經設定了pm2 集群模式配置,并使用instances。"max"。這意味著pm2將計算出你機器上的處理器核心數量,并為你創建適當數量的集群nodejs行程。因此,它很好地利用了你的四核機器。而且,如果你需要擴大規模,你可以把它移到有更多內核的機器上。
你沒有描述你的 Web 服務,所以很難猜測你的集群中每個行程需要多少 RAM。除非你的 nodejs 程式使用巨大的記憶體資料結構,否則你可能可以使用 nodejs 的默認堆大小。每個行程大約有1.5GiB,所以每個行程總共有2GiB的物理RAM就足夠了。你有12GiB,你需要8GiB。
在極不可能的情況下,你需要在每個nodejs行程中使用更多的RAM,你可以增加它。查找--max_old_space_size以了解如何做到這一點。
你能用express.static()提供的檔案越多,你的整體網路應用性能就越好。
如果您通過 nginx 反向代理您的 nodejs 集群,您將把 https 的處理卸給 nginx 行程,為您的 Web 服務器應用程式釋放計算周期。
您可能在資料庫服務器的某個地方遇到了性能瓶頸。這是網路應用中一個相當普遍的問題,因為它們的規模不斷擴大。你必須弄清楚這個問題。
如果您的 nodejs 應用程式從事計算密集型作業,您應該研究使用作業執行緒來進行這些計算。在這種情況下,您應該將instances:減少到您機器上核心數量的一半,以便為作業執行緒留出核心數量。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/309435.html
標籤:
