Analisis mendalam tentang alat pengurusan proses Node 'pm2'
Apr 03, 2023 pm 06:02 PMArtikel ini akan berkongsi dengan anda alat pengurusan proses "pm2" Node, dan bercakap tentang mengapa pm2 diperlukan, cara memasang dan menggunakan pm2, saya harap ia akan membantu semua orang!
Pengenalan PM2
PM2 ialah alat pengurusan proses nod dengan pengimbang beban terbina dalam. Anda boleh menggunakannya untuk memudahkan banyak tugas pengurusan aplikasi nod yang membosankan, seperti pemantauan prestasi, mula semula automatik, pengimbangan beban, dll., dan ia sangat mudah untuk digunakan. PM2 adalah sempurna apabila anda mahu kod kendiri anda menggunakan semua CPU pada semua pelayan dan memastikan proses itu sentiasa hidup dengan muat semula 0 saat.
Alamat laman web rasmi PM2: https://pm2.keymetrics.io/docs/usage/quick-start/
Kenapa anda perlukan pm2?
Terdapat banyak titik kesakitan dalam pembangunan Nodejs pada masa ini, kerana nod itu sendiri adalah aplikasi berbenang tunggal Cirinya ialah semua kaedah dilaksanakan secara bersiri sekaligus, dan nod tidak mempunyai keupayaan untuk ciptanya sahaja seperti Java. Benang baharu digunakan untuk melaksanakan operasi tak segerak jika ia menghadapi sekatan semasa pelaksanaan I/O, ia akan mengurangkan kecekapan pelaksanaan keseluruhan aplikasi, yang membawa kepada sebab yang tidak baik seperti penggunaan CPU yang tinggi. [Tutorial berkaitan yang disyorkan: tutorial video nodejs, Pengajaran pengaturcaraan]
Oleh itu, dalam mod ini, satu urutan hanya boleh memproses satu tugasan Untuk meningkatkan daya pemprosesan Mesti lulus multithreading . Walaupun benang tunggal mempunyai banyak faedah, seperti mengelakkan masalah seperti penyegerakan benang atau kebuntuan, penyegerakan keadaan, dsb., kerana keperluan aplikasi dan kuasa pengkomputeran semakin meningkat dari hari ke hari, kelemahan terbesar threading tunggal ialah ia tidak dapat mengambil kesempatan kelebihan CPU berbilang teras untuk meningkatkan kecekapan operasi. pm2 boleh menggunakan aplikasi anda ke semua CPU pelayan, menyelesaikan masalah ini dengan berkesan
Ciri
Terbina dalam pengimbangan beban (menggunakan modul kluster Node)
Kendalian latar belakang
masa henti 0 saat untuk memuat semula (tiada masa henti diperlukan untuk penyelenggaraan dan naik taraf) ) .
Skrip permulaan dengan Ubuntu dan CentOS
Hentikan proses tidak stabil (elakkan gelung tak terhingga)
Pengesanan konsol
Sediakan API HTTP
Kawalan jauh dan API antara muka masa nyata (modul Nodejs, membenarkan dan interaksi Pengurus proses PM2)
Pemasangan
Hanya gunakan npm untuk memasang secara global. Sudah tentu, anda juga boleh menggunakan benang untuk memasang
//?npmnpm?install?-g?pm2 ? //?yarnyarn?global?add?pm2
Arahan asas
// 啟動命令 pm2 start app.js // 啟動nodeJs應(yīng)用,進程的默認名稱為文件名app pm2 start app.js--name mynode // 啟動node,并指定進程名稱為mynode pm2 start app.js - i max // 根據(jù)有效CPU數(shù)目啟動最大進程數(shù)目 pm2 start app.js - i 3 // 啟動3個進程 pm2 start app.js--watch // 實時監(jiān)控的方式啟動,app.js文件有變動時,pm2會自動reload pm2 start app.js - x // 用fork模式啟動 app.js 而不是使用 cluster pm2 start app.js - x– - a 23 // 用fork模式啟動 app.js 并且傳遞參數(shù)(-a 23) pm2 start app.json // 啟動進程, 在app.json里設(shè)置選項 pm2 start app.js - i max– - a 23 // 在 – 之后給 app.js 傳遞參數(shù) pm2 start app.js - i max - e err.log - o out.log // 啟動并生成一個配置文件 // 查看與監(jiān)視進程 pm2 list | pm2 ls // 顯示所有進程; pm2 show 0 | pm2 info 0 // 查看進程id為0的詳細信息 pm2 monit // 進入監(jiān)視頁面,監(jiān)視每個node進程的CPU和內(nèi)存的使用情況 // 停止、刪除進程 pm2 stop 0 // 停止id為0的進程 pm2 stop all // 停止所有進程 pm2 delete 0 // 刪除id為0的進程 pm2 delete all // 刪除所有進程 // 重啟、重載 pm2 restart 0 // 重啟id為0的進程 pm2 restart all // 重啟所有進程 pm2 reload 0 // 0秒停機重載id為0進程(用于 NETWORKED 進程) pm2 reload all // 重載所有進程 // 日志操作 pm2 logs // 顯示所有進程的日志 pm2 logs 0 // 顯示進程id為0的日志 pm2 flush // 清空所有日志文件 pm2 reloadLogs // 重載所有日志 pm2 startup // 產(chǎn)生init腳本,保持進程活著 // 殺死PM2進程 pm2 kill
Cara menggunakan pm2
Terdapat dua cara utama untuk menggunakan pm2: baris arahan dan fail konfigurasi. Walaupun kaedah menggunakan fail konfigurasi masih memerlukan penggunaan baris arahan untuk bermula, perbezaan utama antara keduanya ialah: (1) Kaedah baris arahan memerlukan pelbagai parameter konfigurasi untuk dimasukkan pada baris arahan. (2) Kaedah fail konfigurasi meletakkan pelbagai parameter konfigurasi dalam fail konfigurasi.
Contohnya: anda perlu memulakan aplikasi, tentukan nama aplikasi sebagai newApp dan tetapkan laluan fail masukan sebagai index.js Mari lihat cara menukar nama aplikasi dan laluan fail masuk dalam dua cara. Bawa masuk dua parameter
【1】Kaedah baris perintah
pm2 start index.js --name newApp
【2】Kaedah fail konfigurasi
Mula-mula kita perlu mencipta fail konfigurasi (pm2.config. js), kandungannya adalah seperti berikut:
// 文件名為 pm2.config.js module.exports = { apps: [{ name: "newApp", // 應(yīng)用名稱 script: "./index.js" // 入口文件 }] }
Kemudian masukkan kandungan berikut pada baris arahan untuk menunjukkan bahawa aplikasi akan dimulakan dengan fail konfigurasi yang ditentukan
pm2 start pm2.config.js
[ 3] Ringkasan
Dengan membandingkan dua bentuk di atas, anda boleh melihat bahawa dengan menggunakan fail konfigurasi, pelbagai parameter, pembolehubah persekitaran dan kandungan lain boleh disimpan secara berterusan dalam fail, yang memudahkan pengurusan kelompok pelbagai aplikasi dan mengelak daripada menggunakan baris arahan Parameter permulaan tidak boleh dikawal kerana kealpaan, ralat manual dan sebab lain.
Cara membuat fail konfigurasi
Anda boleh mencipta fail Javascript sendiri atau menggunakan arahan berikut untuk menjana fail konfigurasi untuk ambil perhatian ialah pm2 Nama fail fail konfigurasi mesti diakhiri dengan .config.js.
【1】Penjanaan arahan Nama fail konfigurasi yang dijana oleh perintah
pm2 ecosystem
ialah economy.config.js, dan formatnya adalah seperti berikut mengeksport objek, yang mempunyai atribut aplikasi , ini ialah senarai, setiap item di dalamnya sepadan dengan aplikasi, dan parameter konfigurasi aplikasi yang sepadan ditetapkan dalam objek setiap sub-item Anda boleh mengkonfigurasi berbilang aplikasi fail konfigurasi.
module.exports = { apps : [{ script: 'index.js', watch: '.' }, { script: './service-worker/', watch: ['./service-worker'] }], deploy : { production : { user : 'SSH_USERNAME', host : 'SSH_HOSTMACHINE', ref : 'origin/master', repo : 'GIT_REPOSITORY', path : 'DESTINATION_PATH', 'pre-deploy-local': '', 'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env production', 'pre-setup': '' } }};
【2】Buat sendiri
Jika anda mencipta fail Javascript sendiri, cuma buatnya dalam format di atas Ambil perhatian bahawa nama fail mesti berakhir dengan config.js.
【3】Nota
Sama ada fail konfigurasi ini dicipta melalui arahan atau dibuat secara manual, tiada perbezaan antara kedua-duanya selagi ia mematuhi sintaks. Selain fail konfigurasi dalam bentuk .js, pm2 juga menyokong fail konfigurasi dalam bentuk .json dan .yml pada asasnya tiada perbezaan dalam bentuk ketiga-tiga fail konfigurasi ini, dan nama parameter juga sama . Satu-satunya perbezaan terletak pada cara parameter dipersembahkan.
案例
我們先創(chuàng)建幾個項目文件用于演示,目錄結(jié)構(gòu)如下,demo1目錄存放的項目project1用命令行方式使用pm2,demo2目錄存放的項目project2和project3用配置文件方式使用pm2, 三個項目都是node.js項目,index.js是非?;A(chǔ)的 Koa 項目入口文件,ecosystem.config.js是配置文件,各自的 node_modules 文件中只安裝了 koa 框架
pm2 ├── demo1 └── project1 | ├── index.js | └── node_modules └── demo2 ├── ecosystem.config.js ├── project2 │ ├── index.js │ └── node_modules └── project3 ├── index.js └── node_modules
入口文件index.js代碼如下,三個項目的port分別為 8001、8002、8003
'use strict' const Koa = require('koa') const app = new Koa() const PORT = 8001 // 三個項目分別為 8001,8002,8003 app.use(ctx => { ctx.body = { NODE_ENV: process.env.NODE_ENV, url: ctx.url, port: PORT, } }) app.listen(PORT)
配置文件ecosystem.config.js 代碼如下
module.exports = { apps: [{ cwd: '../demo2/project2', name: 'project2', script: 'index.js', watch: ['.'] }, cwd: '../demo2/project3', name: 'project3', script: 'index.js', watch: ['.'] }] }
【1】啟動應(yīng)用
命令行方式:pm2 start xxx.js
配置文件方式:pm2 start || pm2 start ecosystem.config.js
我們使用命令行方式啟動project1應(yīng)用,進入到project文件目錄,運行pm2 start index.js命令,我們沒有在命令中設(shè)定任何參數(shù),pm2 會自動按照默認參數(shù)值進行執(zhí)行。例如自動將入口文件的文件名index作為應(yīng)用名稱。幾乎每一次命令執(zhí)行完成后,pm2 都會顯示一個應(yīng)用列表(如下圖所示),接著你就可以在網(wǎng)頁中輸入:localhost:8001查看project1項目
我們接著使用配置文件方式啟動project2和project3應(yīng)用,因為兩個應(yīng)用的配置在同一個文件,因此我們只需要運行一次配置文件,啟動成功后可在網(wǎng)頁中訪問localhost:8002和localhost:8003
【2】停止應(yīng)用
使用id停止:pm2 stop
使用name停止:pm2 stop
停止所有應(yīng)用:pm2 stop all
【3】重啟應(yīng)用
使用id重啟:pm2 reload
使用name重啟:pm2 reload
重啟所有應(yīng)用:pm2 reload all
【4】顯示應(yīng)用列表
pm2 list
pm2 ls
pm2 status
【5】以JSON格式顯示應(yīng)用列表
pm2 jlist
pm2 prettylist
使用 pm2 jlist 命令,你會發(fā)現(xiàn)輸出的內(nèi)容很亂,你可以使用 pm2 prettylist 命令來輸出優(yōu)化過的 JSON 格式內(nèi)容
【6】查看應(yīng)用信息
pm2 describe id
pm2 describe name
上述的 JSON 格式應(yīng)用列表,輸出了所有應(yīng)用的信息,而且信息十分凌亂,我們可以使用 pm2 describe 命令來查看指定應(yīng)用的信息
【7】實時打印日志
打印日志:pm2 logs
指定日志行數(shù):pm2 logs --lines (指定顯示的日志行數(shù))
清空日志:pm2 flush
對于線上正在運行的應(yīng)用,有的時候需要打印實時日志來進行調(diào)試排查問題,雖然日志會自動添加到日志文件里面,但是總之不太方便。pm2 提供了logs命令,可以直接實時打印日志。
注意:當前命令行頁面使用了該命令后,當前命令行會一直處于監(jiān)聽狀態(tài),你需要再新開一個命令行去敲其他命令
【8】顯示儀表盤
pm2 monit
【9】刪除應(yīng)用
通過Id刪除:pm2 delete id
通過name刪除:pm2 delete name
刪除所有應(yīng)用:pm2 delete all
刪除應(yīng)用幾乎不會造成任何后果,只是在管理列表中刪除了這一項,并不會刪除項目文件
【10】配置參數(shù)-應(yīng)用名稱
--name
在命令行方式中,使用 --name
【11】配置參數(shù)-監(jiān)聽目錄
監(jiān)聽目錄:--watch
指定目錄不被監(jiān)聽:--ignore-watch
監(jiān)聽目錄用于當指定監(jiān)聽目錄文件發(fā)生變化時,pm2 將會自動重啟應(yīng)用
除了指定一個監(jiān)聽目錄外,還可以再繼續(xù)指定某個目錄不被監(jiān)聽,例如上述的例子,指定了project1目錄為監(jiān)聽目錄,然后你把日志文件放在了這個目錄下,比如為 logs 目錄,這個目錄不希望被監(jiān)聽,否則會形成死循環(huán),這時候就需要用到另一個參數(shù) --ignore-watch,輸入一下命令
pm2 start 0 --watch --ignore-watch './logs'
【12】配置參數(shù)-最大內(nèi)存數(shù)
--max-memory-restart xxx(K|M|G)
設(shè)置最大內(nèi)存數(shù),當應(yīng)用運行時占用的內(nèi)存超出該數(shù)值后,應(yīng)用將自動重啟。命令行方式通過 --max-memory-restart 參數(shù)設(shè)定應(yīng)用運行最大內(nèi)存,后續(xù)跟上數(shù)值和單位,單位只能是 K,M,G 三個值,分別表示 KB,MB,GB 。
【13】配置參數(shù)-日志存放路徑
--log
日志默認會放置在 $HOME/.pm2/logs/ 目錄下,使用 --log
pm2 start index.js --log ./logs/mylog.log
更多node相關(guān)知識,請訪問:nodejs 教程!
Atas ialah kandungan terperinci Analisis mendalam tentang alat pengurusan proses Node 'pm2'. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Terdapat dua fail berkaitan npm dalam direktori pemasangan Node.js: npm dan npm.cmd Perbezaannya adalah seperti berikut: sambungan berbeza: npm ialah fail boleh laku dan npm.cmd ialah pintasan tetingkap arahan. Pengguna Windows: npm.cmd boleh digunakan daripada command prompt, npm hanya boleh dijalankan dari baris arahan. Keserasian: npm.cmd adalah khusus untuk sistem Windows, npm tersedia merentas platform. Cadangan penggunaan: Pengguna Windows menggunakan npm.cmd, sistem pengendalian lain menggunakan npm.

Penjelasan dan Panduan Pemasangan Terperinci untuk Pinetwork Nodes Artikel ini akan memperkenalkan ekosistem pinetwork secara terperinci - nod pi, peranan utama dalam ekosistem pinetwork, dan menyediakan langkah -langkah lengkap untuk pemasangan dan konfigurasi. Selepas pelancaran Rangkaian Ujian Blockchain Pinetwork, nod PI telah menjadi bahagian penting dari banyak perintis yang aktif mengambil bahagian dalam ujian, bersiap sedia untuk pelepasan rangkaian utama yang akan datang. Jika anda tidak tahu kerja pinet, sila rujuk apa itu picoin? Berapakah harga untuk penyenaraian? Penggunaan PI, perlombongan dan analisis keselamatan. Apa itu Pinetwork? Projek Pinetwork bermula pada tahun 2019 dan memiliki syiling pi cryptocurrency eksklusifnya. Projek ini bertujuan untuk mewujudkan satu yang semua orang boleh mengambil bahagian

Node.js boleh digunakan sebagai rangka kerja bahagian belakang kerana ia menawarkan ciri seperti prestasi tinggi, kebolehskalaan, sokongan merentas platform, ekosistem yang kaya dan kemudahan pembangunan.

Ya, Node.js boleh digunakan untuk pembangunan bahagian hadapan, dan kelebihan utama termasuk prestasi tinggi, ekosistem yang kaya dan keserasian merentas platform. Pertimbangan yang perlu dipertimbangkan ialah keluk pembelajaran, sokongan alat dan saiz komuniti yang kecil.

Pembolehubah global berikut wujud dalam Node.js: Objek global: modul Teras global: proses, konsol, memerlukan pembolehubah persekitaran Runtime: __dirname, __filename, __line, __column Constants: undefined, null, NaN, Infinity, -Infinity

Ya, Node.js ialah bahasa pembangunan bahagian belakang. Ia digunakan untuk pembangunan bahagian belakang, termasuk mengendalikan logik perniagaan sebelah pelayan, mengurus sambungan pangkalan data dan menyediakan API.

Untuk menyambung ke pangkalan data MySQL, anda perlu mengikuti langkah berikut: Pasang pemacu mysql2. Gunakan mysql2.createConnection() untuk mencipta objek sambungan yang mengandungi alamat hos, port, nama pengguna, kata laluan dan nama pangkalan data. Gunakan connection.query() untuk melaksanakan pertanyaan. Akhir sekali gunakan connection.end() untuk menamatkan sambungan.

Node.js sesuai untuk jenis projek berikut: Aplikasi rangkaian dan pelayan Aplikasi dipacu acara Aplikasi masa nyata Aplikasi intensif data Alat dan skrip baris perintah Perkhidmatan mikro ringan
