Причина Фреймворк nuxtjs использовался в проекте компании для разработки, и в процессе разработки и тестирования не было исключений. После подключения к официальной производственной среде узел становится ненормальным примерно через пять или шесть дней, и pm2 не может восстановиться сам по себе. Вам нужно войти в производственную среду, чтобы перезапустить проект. После просмотра журналов было обнаружено, что рабочий сервер медленно накапливает tcp-соединения. Наконец, процессор программы узла занят на 100%. На начальном этапе считалось, что nginx обратно проксирует сервис node, но файлы под _nuxt не проксируются и читаются через node. После перенастройки правил чтения статических файлов проблема сохраняется. Я случайно увидел в статье, что при утечке памяти узла процесс узла заполнит текущий процессор.
использовать инструменты
- node-heapdump
- инструмент отладки хром
Установите node-heapdump. И конфигурация кода в nuxt.config.js.
// 内存快照代码
var headpdump = require('heapdump')
//
setInterval(function () {
console.log('st headpdump')
headpdump.writeSnapshot(function(err, filename) {
console.log('dump written to', filename)
})
}, 15000)
module.exports = {...// nuxt配置}
Я установил моментальный снимок памяти в 1,5 секунды. А снимки делаются по следующим правилам.
- Загрузка страницы, дождитесь снимка
- Обновить страницу один раз, дождаться снимка // 3. Обновить страницу несколько раз, дождаться снимка // 4. Подождать некоторое время для снимка.
хром, объяснение представления памяти
Объяснение поля столбца: ● Конструктор — имя класса. Расстояние — оценивается как расстояние опорного уровня от объекта до корня. ● Количество объектов — показывает, сколько объектов этого класса существует в настоящее время. внутренние ссылки Память, занимаемая объектом) (единица измерения: байты) ● Retained Size — общая память, занимаемая объектом (включая память, занимаемую другими объектами, на которые имеются внутренние ссылки) (единица измерения: байты) Ниже поясняется значение некоторых имен классов. : ● (скомпилированный код) — неизвестно, вероятно, область программного кода ● (замыкание) — Замыкание (массив) — неизвестно ● Объект — Тип объекта JS (системный) — неизвестно ● (строка) — строковый тип, иногда к объекту добавляются новые свойства, здесь также будет отображаться имя свойства
Откройте инструменты разработчика Chrome, переключитесь на память, Hepdump сгенерирует загрузочные файлы в корневом каталоге.
Они были загружены первым снимком страницы со снимком после обновления.
import Urls from './url'
import Fetch from './fetch.js'
let fn = {}
Object.keys(Urls).forEach(key => {
fn[key] = (data, headers) => {
return new Promise((resolve, reject) => {
resolve(Fetch(Urls[key].url, {method: Urls[key].method, data, headers}))
})
}
})
export default fn
import Urls from './url'
import Fetch from './fetch.js'
let fn = {}
Object.keys(Urls).forEach(key => {
fn[key] = function (data, headers) {
return Fetch(Urls[key].url, {method: Urls[key].method, data, headers})
}
})
export default fn
Проверьте еще раз нашли снимок памяти, завершенные завершены восстановление. Утечки памяти предварительно подойти к концу.
Источник справочной статьиV.org/Lincoln/ на фронтенде - что...