[{"data":1,"prerenderedAt":2049},["ShallowReactive",2],{"navigation_docs":3,"-pm2-process-management":204,"-pm2-process-management-surround":2044},[4,40,69,82,91,116,129,146,167],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"\u002Fgetting-started","1.getting-started",[10,15,20,25,30,35],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-rocket",{"title":26,"path":27,"stem":28,"icon":29},"Project Structure","\u002Fgetting-started\u002Fproject-structure","1.getting-started\u002F4.project-structure","i-lucide-folder-tree",{"title":31,"path":32,"stem":33,"icon":34},"First Deployment","\u002Fgetting-started\u002Ffirst-deployment","1.getting-started\u002F5.first-deployment","i-lucide-upload-cloud",{"title":36,"path":37,"stem":38,"icon":39},"Troubleshooting","\u002Fgetting-started\u002Ftroubleshooting","1.getting-started\u002F6.troubleshooting","i-lucide-wrench",{"title":41,"children":42,"path":67,"stem":68,"page":6},"Platform",[43,47,51,55,59,63],{"title":44,"path":45,"stem":46},"Dashboard","\u002Fplatform\u002Fdashboard","2.platform\u002F1.dashboard",{"title":48,"path":49,"stem":50},"Marketplace","\u002Fplatform\u002Fmarketplace","2.platform\u002F2.marketplace",{"title":52,"path":53,"stem":54},"Monitoring & Metrics","\u002Fplatform\u002Fmonitoring","2.platform\u002F3.monitoring",{"title":56,"path":57,"stem":58},"Projects","\u002Fplatform\u002Fprojects","2.platform\u002F4.projects",{"title":60,"path":61,"stem":62},"Services","\u002Fplatform\u002Fservices","2.platform\u002F5.services",{"title":64,"path":65,"stem":66},"Logs","\u002Fplatform\u002Flogs","2.platform\u002F6.logs","\u002Fplatform","2.platform",{"title":70,"children":71,"path":80,"stem":81,"page":6},"CLI",[72,76],{"title":73,"path":74,"stem":75},"CLI Installation","\u002Fcli\u002Finstallation","3.cli\u002F1.installation",{"title":77,"path":78,"stem":79},"Commands Reference","\u002Fcli\u002Fcommands","3.cli\u002F2.commands","\u002Fcli","3.cli",{"title":83,"children":84,"path":89,"stem":90,"page":6},"TUI",[85],{"title":86,"path":87,"stem":88},"TUI Overview","\u002Ftui\u002Foverview","4.tui\u002F1.overview","\u002Ftui","4.tui",{"title":92,"children":93,"path":114,"stem":115,"page":6},"Docker",[94,98,102,106,110],{"title":95,"path":96,"stem":97},"Docker Containers","\u002Fdocker\u002Fcontainers","5.docker\u002F1.containers",{"title":99,"path":100,"stem":101},"Docker Images","\u002Fdocker\u002Fimages","5.docker\u002F2.images",{"title":103,"path":104,"stem":105},"Docker Compose","\u002Fdocker\u002Fcompose","5.docker\u002F3.compose",{"title":107,"path":108,"stem":109},"Docker Volumes","\u002Fdocker\u002Fvolumes","5.docker\u002F4.volumes",{"title":111,"path":112,"stem":113},"Docker Networks","\u002Fdocker\u002Fnetworks","5.docker\u002F5.networks","\u002Fdocker","5.docker",{"title":117,"children":118,"path":127,"stem":128,"page":6},"PM2",[119,123],{"title":120,"path":121,"stem":122},"Process Management","\u002Fpm2\u002Fprocess-management","6.pm2\u002F1.process-management",{"title":124,"path":125,"stem":126},"Zero-Downtime Deployments","\u002Fpm2\u002Fzero-downtime","6.pm2\u002F2.zero-downtime","\u002Fpm2","6.pm2",{"title":130,"children":131,"path":144,"stem":145,"page":6},"VPS",[132,136,140],{"title":133,"path":134,"stem":135},"VPS Management","\u002Fvps\u002Fssh-management","7.vps\u002F1.ssh-management",{"title":137,"path":138,"stem":139},"SSH Access","\u002Fvps\u002Fssh","7.vps\u002F2.ssh",{"title":141,"path":142,"stem":143},"Firewall","\u002Fvps\u002Ffirewall","7.vps\u002F3.firewall","\u002Fvps","7.vps",{"title":147,"children":148,"path":165,"stem":166,"page":6},"Deployment",[149,153,157,161],{"title":150,"path":151,"stem":152},"Production Setup","\u002Fdeployment\u002Fproduction-setup","8.deployment\u002F1.production-setup",{"title":154,"path":155,"stem":156},"Scaling","\u002Fdeployment\u002Fscaling","8.deployment\u002F2.scaling",{"title":158,"path":159,"stem":160},"GitHub Actions CI\u002FCD","\u002Fdeployment\u002Fgithub-actions","8.deployment\u002F3.github-actions",{"title":162,"path":163,"stem":164},"Security","\u002Fdeployment\u002Fsecurity","8.deployment\u002F4.security","\u002Fdeployment","8.deployment",{"title":168,"children":169,"path":202,"stem":203,"page":6},"Reference",[170,174,178,182,186,190,194,198],{"title":171,"path":172,"stem":173},"Architecture","\u002Freference\u002Farchitecture","9.reference\u002F1.architecture",{"title":175,"path":176,"stem":177},"CLI Reference","\u002Freference\u002Fcli-reference","9.reference\u002F2.cli-reference",{"title":179,"path":180,"stem":181},"Environment Variables","\u002Freference\u002Fenvironment-variables","9.reference\u002F3.environment-variables",{"title":183,"path":184,"stem":185},"API Reference","\u002Freference\u002Fapi-reference","9.reference\u002F4.api-reference",{"title":187,"path":188,"stem":189},"Webhooks","\u002Freference\u002Fwebhooks","9.reference\u002F5.webhooks",{"title":191,"path":192,"stem":193},"Authentication","\u002Freference\u002Fauthentication","9.reference\u002F6.authentication",{"title":195,"path":196,"stem":197},"Configuration","\u002Freference\u002Fconfiguration","9.reference\u002F7.configuration",{"title":199,"path":200,"stem":201},"API Overview","\u002Freference\u002Fapi","9.reference\u002F8.api","\u002Freference","9.reference",{"id":205,"title":120,"body":206,"description":2038,"extension":2039,"links":2040,"meta":2041,"navigation":282,"path":121,"seo":2042,"stem":122,"__hash__":2043},"docs\u002F6.pm2\u002F1.process-management.md",{"type":207,"value":208,"toc":1998},"minimark",[209,214,218,223,228,353,357,364,528,531,564,567,571,635,639,786,789,793,921,925,930,1004,1008,1012,1095,1098,1163,1167,1171,1209,1213,1283,1287,1291,1364,1368,1371,1376,1428,1431,1449,1452,1456,1536,1539,1558,1562,1638,1642,1646,1686,1690,1730,1734,1738,1780,1783,1787,1843,1847,1918,1922,1978,1981,1994],[210,211,213],"h1",{"id":212},"pm2-process-management","PM2 Process Management",[215,216,217],"p",{},"PM2 is an advanced Node.js process manager for production applications. SkyPort provides a seamless CLI interface for PM2 management.",[219,220,222],"h2",{"id":221},"starting-applications","Starting Applications",[224,225,227],"h3",{"id":226},"basic-start","Basic Start",[229,230,235],"pre",{"className":231,"code":232,"language":233,"meta":234,"style":234},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Start a Node.js application\nskyport pm2 start app.js --name \"my-app\"\n\n# Start with custom interpreter\nskyport pm2 start app.py --interpreter python --name \"python-app\"\n\n# Start with npm start\nskyport pm2 start \"npm start\" --name \"my-app\"\n","bash","",[236,237,238,247,277,284,290,317,322,328],"code",{"__ignoreMap":234},[239,240,243],"span",{"class":241,"line":242},"line",1,[239,244,246],{"class":245},"sHwdD","# Start a Node.js application\n",[239,248,250,254,258,261,264,267,271,274],{"class":241,"line":249},2,[239,251,253],{"class":252},"sBMFI","skyport",[239,255,257],{"class":256},"sfazB"," pm2",[239,259,260],{"class":256}," start",[239,262,263],{"class":256}," app.js",[239,265,266],{"class":256}," --name",[239,268,270],{"class":269},"sMK4o"," \"",[239,272,273],{"class":256},"my-app",[239,275,276],{"class":269},"\"\n",[239,278,280],{"class":241,"line":279},3,[239,281,283],{"emptyLinePlaceholder":282},true,"\n",[239,285,287],{"class":241,"line":286},4,[239,288,289],{"class":245},"# Start with custom interpreter\n",[239,291,293,295,297,299,302,305,308,310,312,315],{"class":241,"line":292},5,[239,294,253],{"class":252},[239,296,257],{"class":256},[239,298,260],{"class":256},[239,300,301],{"class":256}," app.py",[239,303,304],{"class":256}," --interpreter",[239,306,307],{"class":256}," python",[239,309,266],{"class":256},[239,311,270],{"class":269},[239,313,314],{"class":256},"python-app",[239,316,276],{"class":269},[239,318,320],{"class":241,"line":319},6,[239,321,283],{"emptyLinePlaceholder":282},[239,323,325],{"class":241,"line":324},7,[239,326,327],{"class":245},"# Start with npm start\n",[239,329,331,333,335,337,339,342,345,347,349,351],{"class":241,"line":330},8,[239,332,253],{"class":252},[239,334,257],{"class":256},[239,336,260],{"class":256},[239,338,270],{"class":269},[239,340,341],{"class":256},"npm start",[239,343,344],{"class":269},"\"",[239,346,266],{"class":256},[239,348,270],{"class":269},[239,350,273],{"class":256},[239,352,276],{"class":269},[224,354,356],{"id":355},"ecosystem-file","Ecosystem File",[215,358,359,360,363],{},"For more complex configurations, use an ",[236,361,362],{},"ecosystem.config.js",":",[229,365,369],{"className":366,"code":367,"language":368,"meta":234,"style":234},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","module.exports = {\n  apps: [\n    {\n      name: \"my-app\",\n      script: \"server.js\",\n      instances: 2,\n      exec_mode: \"cluster\",\n      env: {\n        NODE_ENV: \"development\",\n        PORT: 3000,\n      },\n      env_production: {\n        NODE_ENV: \"production\",\n      },\n      error_file: \".\u002Flogs\u002Ferror.log\",\n      out_file: \".\u002Flogs\u002Fout.log\",\n      log_date_format: \"YYYY-MM-DD HH:mm:ss Z\",\n      merge_logs: true,\n    },\n    {\n      name: \"worker\",\n      script: \"worker.js\",\n      instances: 1,\n      exec_mode: \"fork\",\n      watch: [\"worker.js\"],\n    },\n  ],\n};\n","javascript",[236,370,371,376,381,386,391,396,401,406,411,417,423,429,435,441,446,452,458,464,470,476,481,487,493,499,505,511,516,522],{"__ignoreMap":234},[239,372,373],{"class":241,"line":242},[239,374,375],{},"module.exports = {\n",[239,377,378],{"class":241,"line":249},[239,379,380],{},"  apps: [\n",[239,382,383],{"class":241,"line":279},[239,384,385],{},"    {\n",[239,387,388],{"class":241,"line":286},[239,389,390],{},"      name: \"my-app\",\n",[239,392,393],{"class":241,"line":292},[239,394,395],{},"      script: \"server.js\",\n",[239,397,398],{"class":241,"line":319},[239,399,400],{},"      instances: 2,\n",[239,402,403],{"class":241,"line":324},[239,404,405],{},"      exec_mode: \"cluster\",\n",[239,407,408],{"class":241,"line":330},[239,409,410],{},"      env: {\n",[239,412,414],{"class":241,"line":413},9,[239,415,416],{},"        NODE_ENV: \"development\",\n",[239,418,420],{"class":241,"line":419},10,[239,421,422],{},"        PORT: 3000,\n",[239,424,426],{"class":241,"line":425},11,[239,427,428],{},"      },\n",[239,430,432],{"class":241,"line":431},12,[239,433,434],{},"      env_production: {\n",[239,436,438],{"class":241,"line":437},13,[239,439,440],{},"        NODE_ENV: \"production\",\n",[239,442,444],{"class":241,"line":443},14,[239,445,428],{},[239,447,449],{"class":241,"line":448},15,[239,450,451],{},"      error_file: \".\u002Flogs\u002Ferror.log\",\n",[239,453,455],{"class":241,"line":454},16,[239,456,457],{},"      out_file: \".\u002Flogs\u002Fout.log\",\n",[239,459,461],{"class":241,"line":460},17,[239,462,463],{},"      log_date_format: \"YYYY-MM-DD HH:mm:ss Z\",\n",[239,465,467],{"class":241,"line":466},18,[239,468,469],{},"      merge_logs: true,\n",[239,471,473],{"class":241,"line":472},19,[239,474,475],{},"    },\n",[239,477,479],{"class":241,"line":478},20,[239,480,385],{},[239,482,484],{"class":241,"line":483},21,[239,485,486],{},"      name: \"worker\",\n",[239,488,490],{"class":241,"line":489},22,[239,491,492],{},"      script: \"worker.js\",\n",[239,494,496],{"class":241,"line":495},23,[239,497,498],{},"      instances: 1,\n",[239,500,502],{"class":241,"line":501},24,[239,503,504],{},"      exec_mode: \"fork\",\n",[239,506,508],{"class":241,"line":507},25,[239,509,510],{},"      watch: [\"worker.js\"],\n",[239,512,514],{"class":241,"line":513},26,[239,515,475],{},[239,517,519],{"class":241,"line":518},27,[239,520,521],{},"  ],\n",[239,523,525],{"class":241,"line":524},28,[239,526,527],{},"};\n",[215,529,530],{},"Start with ecosystem file:",[229,532,534],{"className":231,"code":533,"language":233,"meta":234,"style":234},"skyport pm2 start ecosystem.config.js\nskyport pm2 start ecosystem.config.js --env production\n",[236,535,536,547],{"__ignoreMap":234},[239,537,538,540,542,544],{"class":241,"line":242},[239,539,253],{"class":252},[239,541,257],{"class":256},[239,543,260],{"class":256},[239,545,546],{"class":256}," ecosystem.config.js\n",[239,548,549,551,553,555,558,561],{"class":241,"line":249},[239,550,253],{"class":252},[239,552,257],{"class":256},[239,554,260],{"class":256},[239,556,557],{"class":256}," ecosystem.config.js",[239,559,560],{"class":256}," --env",[239,562,563],{"class":256}," production\n",[219,565,120],{"id":566},"process-management",[224,568,570],{"id":569},"list-processes","List Processes",[229,572,574],{"className":231,"code":573,"language":233,"meta":234,"style":234},"# View all processes\nskyport pm2 list\n\n# View detailed process info\nskyport pm2 describe app-name\n\n# View in JSON format\nskyport pm2 list --format json\n",[236,575,576,581,590,594,599,611,615,620],{"__ignoreMap":234},[239,577,578],{"class":241,"line":242},[239,579,580],{"class":245},"# View all processes\n",[239,582,583,585,587],{"class":241,"line":249},[239,584,253],{"class":252},[239,586,257],{"class":256},[239,588,589],{"class":256}," list\n",[239,591,592],{"class":241,"line":279},[239,593,283],{"emptyLinePlaceholder":282},[239,595,596],{"class":241,"line":286},[239,597,598],{"class":245},"# View detailed process info\n",[239,600,601,603,605,608],{"class":241,"line":292},[239,602,253],{"class":252},[239,604,257],{"class":256},[239,606,607],{"class":256}," describe",[239,609,610],{"class":256}," app-name\n",[239,612,613],{"class":241,"line":319},[239,614,283],{"emptyLinePlaceholder":282},[239,616,617],{"class":241,"line":324},[239,618,619],{"class":245},"# View in JSON format\n",[239,621,622,624,626,629,632],{"class":241,"line":330},[239,623,253],{"class":252},[239,625,257],{"class":256},[239,627,628],{"class":256}," list",[239,630,631],{"class":256}," --format",[239,633,634],{"class":256}," json\n",[224,636,638],{"id":637},"control-processes","Control Processes",[229,640,642],{"className":231,"code":641,"language":233,"meta":234,"style":234},"# Start process\nskyport pm2 start app.js --name \"app\"\n\n# Stop process\nskyport pm2 stop app-name\n\n# Restart process\nskyport pm2 restart app-name\n\n# Delete process\nskyport pm2 delete app-name\n\n# Restart all processes\nskyport pm2 restart all\n\n# Stop all processes\nskyport pm2 stop all\n\n# Delete all processes\nskyport pm2 delete all\n",[236,643,644,649,668,672,677,688,692,697,708,712,717,728,732,737,748,752,757,767,771,776],{"__ignoreMap":234},[239,645,646],{"class":241,"line":242},[239,647,648],{"class":245},"# Start process\n",[239,650,651,653,655,657,659,661,663,666],{"class":241,"line":249},[239,652,253],{"class":252},[239,654,257],{"class":256},[239,656,260],{"class":256},[239,658,263],{"class":256},[239,660,266],{"class":256},[239,662,270],{"class":269},[239,664,665],{"class":256},"app",[239,667,276],{"class":269},[239,669,670],{"class":241,"line":279},[239,671,283],{"emptyLinePlaceholder":282},[239,673,674],{"class":241,"line":286},[239,675,676],{"class":245},"# Stop process\n",[239,678,679,681,683,686],{"class":241,"line":292},[239,680,253],{"class":252},[239,682,257],{"class":256},[239,684,685],{"class":256}," stop",[239,687,610],{"class":256},[239,689,690],{"class":241,"line":319},[239,691,283],{"emptyLinePlaceholder":282},[239,693,694],{"class":241,"line":324},[239,695,696],{"class":245},"# Restart process\n",[239,698,699,701,703,706],{"class":241,"line":330},[239,700,253],{"class":252},[239,702,257],{"class":256},[239,704,705],{"class":256}," restart",[239,707,610],{"class":256},[239,709,710],{"class":241,"line":413},[239,711,283],{"emptyLinePlaceholder":282},[239,713,714],{"class":241,"line":419},[239,715,716],{"class":245},"# Delete process\n",[239,718,719,721,723,726],{"class":241,"line":425},[239,720,253],{"class":252},[239,722,257],{"class":256},[239,724,725],{"class":256}," delete",[239,727,610],{"class":256},[239,729,730],{"class":241,"line":431},[239,731,283],{"emptyLinePlaceholder":282},[239,733,734],{"class":241,"line":437},[239,735,736],{"class":245},"# Restart all processes\n",[239,738,739,741,743,745],{"class":241,"line":443},[239,740,253],{"class":252},[239,742,257],{"class":256},[239,744,705],{"class":256},[239,746,747],{"class":256}," all\n",[239,749,750],{"class":241,"line":448},[239,751,283],{"emptyLinePlaceholder":282},[239,753,754],{"class":241,"line":454},[239,755,756],{"class":245},"# Stop all processes\n",[239,758,759,761,763,765],{"class":241,"line":460},[239,760,253],{"class":252},[239,762,257],{"class":256},[239,764,685],{"class":256},[239,766,747],{"class":256},[239,768,769],{"class":241,"line":466},[239,770,283],{"emptyLinePlaceholder":282},[239,772,773],{"class":241,"line":472},[239,774,775],{"class":245},"# Delete all processes\n",[239,777,778,780,782,784],{"class":241,"line":478},[239,779,253],{"class":252},[239,781,257],{"class":256},[239,783,725],{"class":256},[239,785,747],{"class":256},[219,787,64],{"id":788},"logs",[224,790,792],{"id":791},"view-logs","View Logs",[229,794,796],{"className":231,"code":795,"language":233,"meta":234,"style":234},"# View logs\nskyport pm2 logs app-name\n\n# Follow logs (tail -f style)\nskyport pm2 logs app-name -f\n\n# View last 100 lines\nskyport pm2 logs app-name --lines 100\n\n# View error logs\nskyport pm2 logs app-name --err\n\n# View all logs\nskyport pm2 logs\n\n# Clear logs\nskyport pm2 flush\n",[236,797,798,803,814,818,823,837,841,846,863,867,872,885,889,894,903,907,912],{"__ignoreMap":234},[239,799,800],{"class":241,"line":242},[239,801,802],{"class":245},"# View logs\n",[239,804,805,807,809,812],{"class":241,"line":249},[239,806,253],{"class":252},[239,808,257],{"class":256},[239,810,811],{"class":256}," logs",[239,813,610],{"class":256},[239,815,816],{"class":241,"line":279},[239,817,283],{"emptyLinePlaceholder":282},[239,819,820],{"class":241,"line":286},[239,821,822],{"class":245},"# Follow logs (tail -f style)\n",[239,824,825,827,829,831,834],{"class":241,"line":292},[239,826,253],{"class":252},[239,828,257],{"class":256},[239,830,811],{"class":256},[239,832,833],{"class":256}," app-name",[239,835,836],{"class":256}," -f\n",[239,838,839],{"class":241,"line":319},[239,840,283],{"emptyLinePlaceholder":282},[239,842,843],{"class":241,"line":324},[239,844,845],{"class":245},"# View last 100 lines\n",[239,847,848,850,852,854,856,859],{"class":241,"line":330},[239,849,253],{"class":252},[239,851,257],{"class":256},[239,853,811],{"class":256},[239,855,833],{"class":256},[239,857,858],{"class":256}," --lines",[239,860,862],{"class":861},"sbssI"," 100\n",[239,864,865],{"class":241,"line":413},[239,866,283],{"emptyLinePlaceholder":282},[239,868,869],{"class":241,"line":419},[239,870,871],{"class":245},"# View error logs\n",[239,873,874,876,878,880,882],{"class":241,"line":425},[239,875,253],{"class":252},[239,877,257],{"class":256},[239,879,811],{"class":256},[239,881,833],{"class":256},[239,883,884],{"class":256}," --err\n",[239,886,887],{"class":241,"line":431},[239,888,283],{"emptyLinePlaceholder":282},[239,890,891],{"class":241,"line":437},[239,892,893],{"class":245},"# View all logs\n",[239,895,896,898,900],{"class":241,"line":443},[239,897,253],{"class":252},[239,899,257],{"class":256},[239,901,902],{"class":256}," logs\n",[239,904,905],{"class":241,"line":448},[239,906,283],{"emptyLinePlaceholder":282},[239,908,909],{"class":241,"line":454},[239,910,911],{"class":245},"# Clear logs\n",[239,913,914,916,918],{"class":241,"line":460},[239,915,253],{"class":252},[239,917,257],{"class":256},[239,919,920],{"class":256}," flush\n",[224,922,924],{"id":923},"log-rotation","Log Rotation",[215,926,927,928,363],{},"Configure in ",[236,929,362],{},[229,931,933],{"className":366,"code":932,"language":368,"meta":234,"style":234},"module.exports = {\n  apps: [\n    {\n      name: \"app\",\n      script: \"server.js\",\n      instances: 1,\n      error_file: \".\u002Flogs\u002Ferror.log\",\n      out_file: \".\u002Flogs\u002Fout.log\",\n      log_file: \".\u002Flogs\u002Fcombined.log\",\n      log_date_format: \"YYYY-MM-DD HH:mm:ss Z\",\n      log_size: \"10M\",\n      compress: true,\n      rotate_module: true,\n    },\n  ],\n};\n",[236,934,935,939,943,947,952,956,960,964,968,973,977,982,987,992,996,1000],{"__ignoreMap":234},[239,936,937],{"class":241,"line":242},[239,938,375],{},[239,940,941],{"class":241,"line":249},[239,942,380],{},[239,944,945],{"class":241,"line":279},[239,946,385],{},[239,948,949],{"class":241,"line":286},[239,950,951],{},"      name: \"app\",\n",[239,953,954],{"class":241,"line":292},[239,955,395],{},[239,957,958],{"class":241,"line":319},[239,959,498],{},[239,961,962],{"class":241,"line":324},[239,963,451],{},[239,965,966],{"class":241,"line":330},[239,967,457],{},[239,969,970],{"class":241,"line":413},[239,971,972],{},"      log_file: \".\u002Flogs\u002Fcombined.log\",\n",[239,974,975],{"class":241,"line":419},[239,976,463],{},[239,978,979],{"class":241,"line":425},[239,980,981],{},"      log_size: \"10M\",\n",[239,983,984],{"class":241,"line":431},[239,985,986],{},"      compress: true,\n",[239,988,989],{"class":241,"line":437},[239,990,991],{},"      rotate_module: true,\n",[239,993,994],{"class":241,"line":443},[239,995,475],{},[239,997,998],{"class":241,"line":448},[239,999,521],{},[239,1001,1002],{"class":241,"line":454},[239,1003,527],{},[219,1005,1007],{"id":1006},"clustering-scaling","Clustering & Scaling",[224,1009,1011],{"id":1010},"cluster-mode","Cluster Mode",[229,1013,1015],{"className":231,"code":1014,"language":233,"meta":234,"style":234},"# Start in cluster mode (multiple instances)\nskyport pm2 start app.js -i max --name \"app\"\n\n# Start with specific number of instances\nskyport pm2 start app.js -i 4 --name \"app\"\n\n# View cluster status\nskyport pm2 list\n",[236,1016,1017,1022,1046,1050,1055,1078,1082,1087],{"__ignoreMap":234},[239,1018,1019],{"class":241,"line":242},[239,1020,1021],{"class":245},"# Start in cluster mode (multiple instances)\n",[239,1023,1024,1026,1028,1030,1032,1035,1038,1040,1042,1044],{"class":241,"line":249},[239,1025,253],{"class":252},[239,1027,257],{"class":256},[239,1029,260],{"class":256},[239,1031,263],{"class":256},[239,1033,1034],{"class":256}," -i",[239,1036,1037],{"class":256}," max",[239,1039,266],{"class":256},[239,1041,270],{"class":269},[239,1043,665],{"class":256},[239,1045,276],{"class":269},[239,1047,1048],{"class":241,"line":279},[239,1049,283],{"emptyLinePlaceholder":282},[239,1051,1052],{"class":241,"line":286},[239,1053,1054],{"class":245},"# Start with specific number of instances\n",[239,1056,1057,1059,1061,1063,1065,1067,1070,1072,1074,1076],{"class":241,"line":292},[239,1058,253],{"class":252},[239,1060,257],{"class":256},[239,1062,260],{"class":256},[239,1064,263],{"class":256},[239,1066,1034],{"class":256},[239,1068,1069],{"class":861}," 4",[239,1071,266],{"class":256},[239,1073,270],{"class":269},[239,1075,665],{"class":256},[239,1077,276],{"class":269},[239,1079,1080],{"class":241,"line":319},[239,1081,283],{"emptyLinePlaceholder":282},[239,1083,1084],{"class":241,"line":324},[239,1085,1086],{"class":245},"# View cluster status\n",[239,1088,1089,1091,1093],{"class":241,"line":330},[239,1090,253],{"class":252},[239,1092,257],{"class":256},[239,1094,589],{"class":256},[224,1096,154],{"id":1097},"scaling",[229,1099,1101],{"className":231,"code":1100,"language":233,"meta":234,"style":234},"# Scale up\nskyport pm2 scale app-name 4\n\n# Scale down\nskyport pm2 scale app-name 2\n\n# View current instances\nskyport pm2 describe app-name\n",[236,1102,1103,1108,1122,1126,1131,1144,1148,1153],{"__ignoreMap":234},[239,1104,1105],{"class":241,"line":242},[239,1106,1107],{"class":245},"# Scale up\n",[239,1109,1110,1112,1114,1117,1119],{"class":241,"line":249},[239,1111,253],{"class":252},[239,1113,257],{"class":256},[239,1115,1116],{"class":256}," scale",[239,1118,833],{"class":256},[239,1120,1121],{"class":861}," 4\n",[239,1123,1124],{"class":241,"line":279},[239,1125,283],{"emptyLinePlaceholder":282},[239,1127,1128],{"class":241,"line":286},[239,1129,1130],{"class":245},"# Scale down\n",[239,1132,1133,1135,1137,1139,1141],{"class":241,"line":292},[239,1134,253],{"class":252},[239,1136,257],{"class":256},[239,1138,1116],{"class":256},[239,1140,833],{"class":256},[239,1142,1143],{"class":861}," 2\n",[239,1145,1146],{"class":241,"line":319},[239,1147,283],{"emptyLinePlaceholder":282},[239,1149,1150],{"class":241,"line":324},[239,1151,1152],{"class":245},"# View current instances\n",[239,1154,1155,1157,1159,1161],{"class":241,"line":330},[239,1156,253],{"class":252},[239,1158,257],{"class":256},[239,1160,607],{"class":256},[239,1162,610],{"class":256},[219,1164,1166],{"id":1165},"monitoring","Monitoring",[224,1168,1170],{"id":1169},"view-statistics","View Statistics",[229,1172,1174],{"className":231,"code":1173,"language":233,"meta":234,"style":234},"# View process statistics\nskyport pm2 describe app-name\n\n# Monit dashboard (if available)\nskyport pm2 monit\n",[236,1175,1176,1181,1191,1195,1200],{"__ignoreMap":234},[239,1177,1178],{"class":241,"line":242},[239,1179,1180],{"class":245},"# View process statistics\n",[239,1182,1183,1185,1187,1189],{"class":241,"line":249},[239,1184,253],{"class":252},[239,1186,257],{"class":256},[239,1188,607],{"class":256},[239,1190,610],{"class":256},[239,1192,1193],{"class":241,"line":279},[239,1194,283],{"emptyLinePlaceholder":282},[239,1196,1197],{"class":241,"line":286},[239,1198,1199],{"class":245},"# Monit dashboard (if available)\n",[239,1201,1202,1204,1206],{"class":241,"line":292},[239,1203,253],{"class":252},[239,1205,257],{"class":256},[239,1207,1208],{"class":256}," monit\n",[224,1210,1212],{"id":1211},"memory-and-cpu","Memory and CPU",[229,1214,1216],{"className":231,"code":1215,"language":233,"meta":234,"style":234},"# Monitor all processes\nskyport pm2 monit\n\n# View in table format\nskyport pm2 list\n\n# Get detailed metrics\nskyport pm2 describe app-name | grep -E \"memory|cpu\"\n",[236,1217,1218,1223,1231,1235,1240,1248,1252,1257],{"__ignoreMap":234},[239,1219,1220],{"class":241,"line":242},[239,1221,1222],{"class":245},"# Monitor all processes\n",[239,1224,1225,1227,1229],{"class":241,"line":249},[239,1226,253],{"class":252},[239,1228,257],{"class":256},[239,1230,1208],{"class":256},[239,1232,1233],{"class":241,"line":279},[239,1234,283],{"emptyLinePlaceholder":282},[239,1236,1237],{"class":241,"line":286},[239,1238,1239],{"class":245},"# View in table format\n",[239,1241,1242,1244,1246],{"class":241,"line":292},[239,1243,253],{"class":252},[239,1245,257],{"class":256},[239,1247,589],{"class":256},[239,1249,1250],{"class":241,"line":319},[239,1251,283],{"emptyLinePlaceholder":282},[239,1253,1254],{"class":241,"line":324},[239,1255,1256],{"class":245},"# Get detailed metrics\n",[239,1258,1259,1261,1263,1265,1267,1270,1273,1276,1278,1281],{"class":241,"line":330},[239,1260,253],{"class":252},[239,1262,257],{"class":256},[239,1264,607],{"class":256},[239,1266,833],{"class":256},[239,1268,1269],{"class":269}," |",[239,1271,1272],{"class":252}," grep",[239,1274,1275],{"class":256}," -E",[239,1277,270],{"class":269},[239,1279,1280],{"class":256},"memory|cpu",[239,1282,276],{"class":269},[219,1284,1286],{"id":1285},"auto-restart-persistence","Auto-Restart & Persistence",[224,1288,1290],{"id":1289},"auto-start-on-system-boot","Auto-Start on System Boot",[229,1292,1294],{"className":231,"code":1293,"language":233,"meta":234,"style":234},"# Generate startup script\nskyport pm2 startup\n\n# Save current process list\nskyport pm2 save\n\n# Resurrect processes after system reboot\nskyport pm2 resurrect\n\n# Disable auto-start\nskyport pm2 unstartup\n",[236,1295,1296,1301,1310,1314,1319,1328,1332,1337,1346,1350,1355],{"__ignoreMap":234},[239,1297,1298],{"class":241,"line":242},[239,1299,1300],{"class":245},"# Generate startup script\n",[239,1302,1303,1305,1307],{"class":241,"line":249},[239,1304,253],{"class":252},[239,1306,257],{"class":256},[239,1308,1309],{"class":256}," startup\n",[239,1311,1312],{"class":241,"line":279},[239,1313,283],{"emptyLinePlaceholder":282},[239,1315,1316],{"class":241,"line":286},[239,1317,1318],{"class":245},"# Save current process list\n",[239,1320,1321,1323,1325],{"class":241,"line":292},[239,1322,253],{"class":252},[239,1324,257],{"class":256},[239,1326,1327],{"class":256}," save\n",[239,1329,1330],{"class":241,"line":319},[239,1331,283],{"emptyLinePlaceholder":282},[239,1333,1334],{"class":241,"line":324},[239,1335,1336],{"class":245},"# Resurrect processes after system reboot\n",[239,1338,1339,1341,1343],{"class":241,"line":330},[239,1340,253],{"class":252},[239,1342,257],{"class":256},[239,1344,1345],{"class":256}," resurrect\n",[239,1347,1348],{"class":241,"line":413},[239,1349,283],{"emptyLinePlaceholder":282},[239,1351,1352],{"class":241,"line":419},[239,1353,1354],{"class":245},"# Disable auto-start\n",[239,1356,1357,1359,1361],{"class":241,"line":425},[239,1358,253],{"class":252},[239,1360,257],{"class":256},[239,1362,1363],{"class":256}," unstartup\n",[224,1365,1367],{"id":1366},"watch-files","Watch Files",[215,1369,1370],{},"Watch for file changes and automatically restart:",[215,1372,1373,1374,363],{},"In ",[236,1375,362],{},[229,1377,1379],{"className":366,"code":1378,"language":368,"meta":234,"style":234},"module.exports = {\n  apps: [\n    {\n      name: \"app\",\n      script: \"server.js\",\n      watch: [\"src\"],\n      ignore_watch: [\"node_modules\", \"logs\", \".git\"],\n      watch_delay: 1000,\n    },\n  ],\n};\n",[236,1380,1381,1385,1389,1393,1397,1401,1406,1411,1416,1420,1424],{"__ignoreMap":234},[239,1382,1383],{"class":241,"line":242},[239,1384,375],{},[239,1386,1387],{"class":241,"line":249},[239,1388,380],{},[239,1390,1391],{"class":241,"line":279},[239,1392,385],{},[239,1394,1395],{"class":241,"line":286},[239,1396,951],{},[239,1398,1399],{"class":241,"line":292},[239,1400,395],{},[239,1402,1403],{"class":241,"line":319},[239,1404,1405],{},"      watch: [\"src\"],\n",[239,1407,1408],{"class":241,"line":324},[239,1409,1410],{},"      ignore_watch: [\"node_modules\", \"logs\", \".git\"],\n",[239,1412,1413],{"class":241,"line":330},[239,1414,1415],{},"      watch_delay: 1000,\n",[239,1417,1418],{"class":241,"line":413},[239,1419,475],{},[239,1421,1422],{"class":241,"line":419},[239,1423,521],{},[239,1425,1426],{"class":241,"line":425},[239,1427,527],{},[215,1429,1430],{},"Or via CLI:",[229,1432,1434],{"className":231,"code":1433,"language":233,"meta":234,"style":234},"skyport pm2 start app.js --watch\n",[236,1435,1436],{"__ignoreMap":234},[239,1437,1438,1440,1442,1444,1446],{"class":241,"line":242},[239,1439,253],{"class":252},[239,1441,257],{"class":256},[239,1443,260],{"class":256},[239,1445,263],{"class":256},[239,1447,1448],{"class":256}," --watch\n",[219,1450,179],{"id":1451},"environment-variables",[224,1453,1455],{"id":1454},"per-environment-configuration","Per-Environment Configuration",[229,1457,1459],{"className":366,"code":1458,"language":368,"meta":234,"style":234},"module.exports = {\n  apps: [\n    {\n      name: \"app\",\n      script: \"server.js\",\n      env: {\n        NODE_ENV: \"development\",\n        PORT: 3000,\n        DEBUG: \"true\",\n      },\n      env_production: {\n        NODE_ENV: \"production\",\n        PORT: 8080,\n        DEBUG: \"false\",\n      },\n    },\n  ],\n};\n",[236,1460,1461,1465,1469,1473,1477,1481,1485,1489,1493,1498,1502,1506,1510,1515,1520,1524,1528,1532],{"__ignoreMap":234},[239,1462,1463],{"class":241,"line":242},[239,1464,375],{},[239,1466,1467],{"class":241,"line":249},[239,1468,380],{},[239,1470,1471],{"class":241,"line":279},[239,1472,385],{},[239,1474,1475],{"class":241,"line":286},[239,1476,951],{},[239,1478,1479],{"class":241,"line":292},[239,1480,395],{},[239,1482,1483],{"class":241,"line":319},[239,1484,410],{},[239,1486,1487],{"class":241,"line":324},[239,1488,416],{},[239,1490,1491],{"class":241,"line":330},[239,1492,422],{},[239,1494,1495],{"class":241,"line":413},[239,1496,1497],{},"        DEBUG: \"true\",\n",[239,1499,1500],{"class":241,"line":419},[239,1501,428],{},[239,1503,1504],{"class":241,"line":425},[239,1505,434],{},[239,1507,1508],{"class":241,"line":431},[239,1509,440],{},[239,1511,1512],{"class":241,"line":437},[239,1513,1514],{},"        PORT: 8080,\n",[239,1516,1517],{"class":241,"line":443},[239,1518,1519],{},"        DEBUG: \"false\",\n",[239,1521,1522],{"class":241,"line":448},[239,1523,428],{},[239,1525,1526],{"class":241,"line":454},[239,1527,475],{},[239,1529,1530],{"class":241,"line":460},[239,1531,521],{},[239,1533,1534],{"class":241,"line":466},[239,1535,527],{},[215,1537,1538],{},"Start with environment:",[229,1540,1542],{"className":231,"code":1541,"language":233,"meta":234,"style":234},"skyport pm2 start ecosystem.config.js --env production\n",[236,1543,1544],{"__ignoreMap":234},[239,1545,1546,1548,1550,1552,1554,1556],{"class":241,"line":242},[239,1547,253],{"class":252},[239,1549,257],{"class":256},[239,1551,260],{"class":256},[239,1553,557],{"class":256},[239,1555,560],{"class":256},[239,1557,563],{"class":256},[224,1559,1561],{"id":1560},"runtime-environment-variables","Runtime Environment Variables",[229,1563,1565],{"className":231,"code":1564,"language":233,"meta":234,"style":234},"# Set environment variable\nskyport pm2 start app.js --name \"app\" --env NODE_ENV=production\n\n# Or use environment file\nexport NODE_ENV=production\nskyport pm2 start app.js --name \"app\"\n",[236,1566,1567,1572,1595,1599,1604,1620],{"__ignoreMap":234},[239,1568,1569],{"class":241,"line":242},[239,1570,1571],{"class":245},"# Set environment variable\n",[239,1573,1574,1576,1578,1580,1582,1584,1586,1588,1590,1592],{"class":241,"line":249},[239,1575,253],{"class":252},[239,1577,257],{"class":256},[239,1579,260],{"class":256},[239,1581,263],{"class":256},[239,1583,266],{"class":256},[239,1585,270],{"class":269},[239,1587,665],{"class":256},[239,1589,344],{"class":269},[239,1591,560],{"class":256},[239,1593,1594],{"class":256}," NODE_ENV=production\n",[239,1596,1597],{"class":241,"line":279},[239,1598,283],{"emptyLinePlaceholder":282},[239,1600,1601],{"class":241,"line":286},[239,1602,1603],{"class":245},"# Or use environment file\n",[239,1605,1606,1610,1614,1617],{"class":241,"line":292},[239,1607,1609],{"class":1608},"spNyl","export",[239,1611,1613],{"class":1612},"sTEyZ"," NODE_ENV",[239,1615,1616],{"class":269},"=",[239,1618,1619],{"class":1612},"production\n",[239,1621,1622,1624,1626,1628,1630,1632,1634,1636],{"class":241,"line":319},[239,1623,253],{"class":252},[239,1625,257],{"class":256},[239,1627,260],{"class":256},[239,1629,263],{"class":256},[239,1631,266],{"class":256},[239,1633,270],{"class":269},[239,1635,665],{"class":256},[239,1637,276],{"class":269},[219,1639,1641],{"id":1640},"advanced-features","Advanced Features",[224,1643,1645],{"id":1644},"graceful-reload-zero-downtime","Graceful Reload (Zero-Downtime)",[229,1647,1649],{"className":231,"code":1648,"language":233,"meta":234,"style":234},"# Reload without stopping service\nskyport pm2 reload app-name\n\n# Reload all\nskyport pm2 reload all\n",[236,1650,1651,1656,1667,1671,1676],{"__ignoreMap":234},[239,1652,1653],{"class":241,"line":242},[239,1654,1655],{"class":245},"# Reload without stopping service\n",[239,1657,1658,1660,1662,1665],{"class":241,"line":249},[239,1659,253],{"class":252},[239,1661,257],{"class":256},[239,1663,1664],{"class":256}," reload",[239,1666,610],{"class":256},[239,1668,1669],{"class":241,"line":279},[239,1670,283],{"emptyLinePlaceholder":282},[239,1672,1673],{"class":241,"line":286},[239,1674,1675],{"class":245},"# Reload all\n",[239,1677,1678,1680,1682,1684],{"class":241,"line":292},[239,1679,253],{"class":252},[239,1681,257],{"class":256},[239,1683,1664],{"class":256},[239,1685,747],{"class":256},[224,1687,1689],{"id":1688},"handle-signals","Handle Signals",[229,1691,1693],{"className":366,"code":1692,"language":368,"meta":234,"style":234},"\u002F\u002F In your application\nprocess.on('SIGTERM', () => {\n  console.log('SIGTERM received, shutting down gracefully...');\n  server.close(() => {\n    process.exit(0);\n  });\n});\n",[236,1694,1695,1700,1705,1710,1715,1720,1725],{"__ignoreMap":234},[239,1696,1697],{"class":241,"line":242},[239,1698,1699],{},"\u002F\u002F In your application\n",[239,1701,1702],{"class":241,"line":249},[239,1703,1704],{},"process.on('SIGTERM', () => {\n",[239,1706,1707],{"class":241,"line":279},[239,1708,1709],{},"  console.log('SIGTERM received, shutting down gracefully...');\n",[239,1711,1712],{"class":241,"line":286},[239,1713,1714],{},"  server.close(() => {\n",[239,1716,1717],{"class":241,"line":292},[239,1718,1719],{},"    process.exit(0);\n",[239,1721,1722],{"class":241,"line":319},[239,1723,1724],{},"  });\n",[239,1726,1727],{"class":241,"line":324},[239,1728,1729],{},"});\n",[224,1731,1733],{"id":1732},"max-memory-restart","Max Memory Restart",[215,1735,1373,1736,363],{},[236,1737,362],{},[229,1739,1741],{"className":366,"code":1740,"language":368,"meta":234,"style":234},"module.exports = {\n  apps: [\n    {\n      name: \"app\",\n      script: \"server.js\",\n      max_memory_restart: \"500M\", \u002F\u002F Restart if exceeds 500MB\n    },\n  ],\n};\n",[236,1742,1743,1747,1751,1755,1759,1763,1768,1772,1776],{"__ignoreMap":234},[239,1744,1745],{"class":241,"line":242},[239,1746,375],{},[239,1748,1749],{"class":241,"line":249},[239,1750,380],{},[239,1752,1753],{"class":241,"line":279},[239,1754,385],{},[239,1756,1757],{"class":241,"line":286},[239,1758,951],{},[239,1760,1761],{"class":241,"line":292},[239,1762,395],{},[239,1764,1765],{"class":241,"line":319},[239,1766,1767],{},"      max_memory_restart: \"500M\", \u002F\u002F Restart if exceeds 500MB\n",[239,1769,1770],{"class":241,"line":324},[239,1771,475],{},[239,1773,1774],{"class":241,"line":330},[239,1775,521],{},[239,1777,1778],{"class":241,"line":413},[239,1779,527],{},[219,1781,36],{"id":1782},"troubleshooting",[224,1784,1786],{"id":1785},"process-wont-start","Process Won't Start",[229,1788,1790],{"className":231,"code":1789,"language":233,"meta":234,"style":234},"# Check error logs\nskyport pm2 logs app-name --err\n\n# Try running directly\nnode app.js\n\n# Check dependencies\nnpm install\n",[236,1791,1792,1797,1809,1813,1818,1826,1830,1835],{"__ignoreMap":234},[239,1793,1794],{"class":241,"line":242},[239,1795,1796],{"class":245},"# Check error logs\n",[239,1798,1799,1801,1803,1805,1807],{"class":241,"line":249},[239,1800,253],{"class":252},[239,1802,257],{"class":256},[239,1804,811],{"class":256},[239,1806,833],{"class":256},[239,1808,884],{"class":256},[239,1810,1811],{"class":241,"line":279},[239,1812,283],{"emptyLinePlaceholder":282},[239,1814,1815],{"class":241,"line":286},[239,1816,1817],{"class":245},"# Try running directly\n",[239,1819,1820,1823],{"class":241,"line":292},[239,1821,1822],{"class":252},"node",[239,1824,1825],{"class":256}," app.js\n",[239,1827,1828],{"class":241,"line":319},[239,1829,283],{"emptyLinePlaceholder":282},[239,1831,1832],{"class":241,"line":324},[239,1833,1834],{"class":245},"# Check dependencies\n",[239,1836,1837,1840],{"class":241,"line":330},[239,1838,1839],{"class":252},"npm",[239,1841,1842],{"class":256}," install\n",[224,1844,1846],{"id":1845},"high-memory-usage","High Memory Usage",[229,1848,1850],{"className":231,"code":1849,"language":233,"meta":234,"style":234},"# View memory statistics\nskyport pm2 describe app-name\n\n# Enable memory restart\nskyport pm2 start app.js --max-memory-restart 512M --name \"app\"\n\n# Profile memory usage\nnode --inspect app.js\n",[236,1851,1852,1857,1867,1871,1876,1900,1904,1909],{"__ignoreMap":234},[239,1853,1854],{"class":241,"line":242},[239,1855,1856],{"class":245},"# View memory statistics\n",[239,1858,1859,1861,1863,1865],{"class":241,"line":249},[239,1860,253],{"class":252},[239,1862,257],{"class":256},[239,1864,607],{"class":256},[239,1866,610],{"class":256},[239,1868,1869],{"class":241,"line":279},[239,1870,283],{"emptyLinePlaceholder":282},[239,1872,1873],{"class":241,"line":286},[239,1874,1875],{"class":245},"# Enable memory restart\n",[239,1877,1878,1880,1882,1884,1886,1889,1892,1894,1896,1898],{"class":241,"line":292},[239,1879,253],{"class":252},[239,1881,257],{"class":256},[239,1883,260],{"class":256},[239,1885,263],{"class":256},[239,1887,1888],{"class":256}," --max-memory-restart",[239,1890,1891],{"class":256}," 512M",[239,1893,266],{"class":256},[239,1895,270],{"class":269},[239,1897,665],{"class":256},[239,1899,276],{"class":269},[239,1901,1902],{"class":241,"line":319},[239,1903,283],{"emptyLinePlaceholder":282},[239,1905,1906],{"class":241,"line":324},[239,1907,1908],{"class":245},"# Profile memory usage\n",[239,1910,1911,1913,1916],{"class":241,"line":330},[239,1912,1822],{"class":252},[239,1914,1915],{"class":256}," --inspect",[239,1917,1825],{"class":256},[224,1919,1921],{"id":1920},"cpu-usage-at-100","CPU Usage at 100%",[229,1923,1925],{"className":231,"code":1924,"language":233,"meta":234,"style":234},"# Check what's running\nskyport pm2 list\n\n# View detailed stats\nskyport pm2 monit\n\n# Look for infinite loops or bugs\nskyport pm2 logs app-name -f\n",[236,1926,1927,1932,1940,1944,1949,1957,1961,1966],{"__ignoreMap":234},[239,1928,1929],{"class":241,"line":242},[239,1930,1931],{"class":245},"# Check what's running\n",[239,1933,1934,1936,1938],{"class":241,"line":249},[239,1935,253],{"class":252},[239,1937,257],{"class":256},[239,1939,589],{"class":256},[239,1941,1942],{"class":241,"line":279},[239,1943,283],{"emptyLinePlaceholder":282},[239,1945,1946],{"class":241,"line":286},[239,1947,1948],{"class":245},"# View detailed stats\n",[239,1950,1951,1953,1955],{"class":241,"line":292},[239,1952,253],{"class":252},[239,1954,257],{"class":256},[239,1956,1208],{"class":256},[239,1958,1959],{"class":241,"line":319},[239,1960,283],{"emptyLinePlaceholder":282},[239,1962,1963],{"class":241,"line":324},[239,1964,1965],{"class":245},"# Look for infinite loops or bugs\n",[239,1967,1968,1970,1972,1974,1976],{"class":241,"line":330},[239,1969,253],{"class":252},[239,1971,257],{"class":256},[239,1973,811],{"class":256},[239,1975,833],{"class":256},[239,1977,836],{"class":256},[1979,1980],"hr",{},[215,1982,1983,1987,1988,1991,1992],{},[1984,1985,1986],"strong",{},"Next",": ",[1989,1990,124],"a",{"href":125}," | ",[1989,1993,64],{"href":65},[1995,1996,1997],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}",{"title":234,"searchDepth":249,"depth":249,"links":1999},[2000,2004,2008,2012,2016,2020,2024,2028,2033],{"id":221,"depth":249,"text":222,"children":2001},[2002,2003],{"id":226,"depth":279,"text":227},{"id":355,"depth":279,"text":356},{"id":566,"depth":249,"text":120,"children":2005},[2006,2007],{"id":569,"depth":279,"text":570},{"id":637,"depth":279,"text":638},{"id":788,"depth":249,"text":64,"children":2009},[2010,2011],{"id":791,"depth":279,"text":792},{"id":923,"depth":279,"text":924},{"id":1006,"depth":249,"text":1007,"children":2013},[2014,2015],{"id":1010,"depth":279,"text":1011},{"id":1097,"depth":279,"text":154},{"id":1165,"depth":249,"text":1166,"children":2017},[2018,2019],{"id":1169,"depth":279,"text":1170},{"id":1211,"depth":279,"text":1212},{"id":1285,"depth":249,"text":1286,"children":2021},[2022,2023],{"id":1289,"depth":279,"text":1290},{"id":1366,"depth":279,"text":1367},{"id":1451,"depth":249,"text":179,"children":2025},[2026,2027],{"id":1454,"depth":279,"text":1455},{"id":1560,"depth":279,"text":1561},{"id":1640,"depth":249,"text":1641,"children":2029},[2030,2031,2032],{"id":1644,"depth":279,"text":1645},{"id":1688,"depth":279,"text":1689},{"id":1732,"depth":279,"text":1733},{"id":1782,"depth":249,"text":36,"children":2034},[2035,2036,2037],{"id":1785,"depth":279,"text":1786},{"id":1845,"depth":279,"text":1846},{"id":1920,"depth":279,"text":1921},"Manage Node.js applications with PM2","md",null,{},{"title":120,"description":2038},"vfjktn2M2CofbBgswmykQRlZOrNlIG16JFiX2XYuKoc",[2045,2047],{"title":111,"path":112,"stem":113,"description":2046,"children":-1},"Configure Docker networks in SkyPort",{"title":124,"path":125,"stem":126,"description":2048,"children":-1},"Zero-downtime deployment strategies with PM2",1778858461113]