1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/daoio-titbit

09.03.2025 19:52
GitLife Service Account
  • Оптимизация и корректировка некоторых параметров парсера body-parser для анализа данных формы.
Последнее сообщение коммита: add monitorTimeSlice for monitor.timeSlice
09.03.2025 19:52
GitLife Service Account

Этот выпуск в основном исправляет проблемы с HTTP/2, которые не были упомянуты в документации Node.js.

  • connfilter был удален параметр установки таймаута для сокетов HTTP/2, что вызывало ошибку segmentation fault; причины можно найти в описании ниже.
  • http2 добавлен метод setTimeout, чтобы гарантировать закрытие сокетов при истечении времени ожидания событий secureConnection.
  • titbit на основе вышеописанных исправлений удалены ненужные участки кода.

Проблемы, возникающие из-за мест, где не указаны точки триггеров таймаута, не были упомянуты в документации Node.js. В предыдущей записи баг-трекера было отмечено, что требуется слушать события error для сокетов в событиях secureConnection, чтобы избежать аварийного завершения службы HTTP/2 при запуске.

При стабильной работе службы HTTP/2, таймауты для сокетов являются необходимыми, иначе вы столкнетесь с тем, что использование ab для тестирования параллельных запросов HTTP/1.1 приведет к тому, что большое количество соединений не будет закрыто, занимая ресурсы. Хотя установка таймаута для сокетов в событиях connection может закрывать просроченные соединения, это приводит к ошибкам segmentation fault при уничтожении объектов верхнего уровня, основанных на сокете, во время последующих запросов, что приводит к немедленному завершению программы.> Добавление таймаутов через слушатель событий timeout практически не оказывает влияния на службы, созданные с помощью createSecureServer.

Для HTTP/1 все эти изменения не имеют значения, HTTP/1 остаётся самой стабильной службой.

Последнее сообщение коммита: remove setTimeout from connfilter ; add setTimeout in secureConnect...
09.03.2025 19:52
GitLife Service Account
  • Обновите документ README.md и исправьте некоторые орфографические ошибки.
  • Если используется прокси, глобальный журнал будет отображать real-ip; в противном случае используйте '-' вместо.
Последнее сообщение коммита: v21.10.1 for README.md
09.03.2025 19:52
GitLife Service Account
  • модуль оптимизации автоматически корректирует значения жизни и процессов охлаждения для создаваемых дочерних процессов.
Последнее сообщение коммита: adjustment life value for worker
09.03.2025 19:51
GitLife Service Account
  • монитор использует maxCooling в качестве верхнего предела охлаждения.

В крайних случаях возможно, что значение охлаждения будет постоянно увеличиваться. Хотя это само по себе не является проблемой, такое поведение может помешать автоматическому завершению программы (kill), как следствие процесс может продолжаться бесконечно, а количество базовых процессов больше не будет восстанавливаться до нормального уровня.

Последнее сообщение коммита: add maxCooling to limit cooling
09.03.2025 19:51
GitLife Service Account
  • При динамическом управлении дочерними процессами используйте cluster.worker.kill для грациозного завершения работы.
  • Динамически увеличивайте время жизни новых создаваемых процессов в зависимости от частоты высоконагруженных периодов.
Последнее сообщение коммита: add life and maxLife for worker
09.03.2025 19:51
GitLife Service Account
  • Исправлен баг с отображением нагрузки процессора CPU.
  • Оптимизирована логика расчета нагрузки.
  • Добавлена поддержка автоматического изменения количества subprocessов через интерфейс autoWorker.
  • Улучшено поддержание оптимального количества subprocessов, в частности исправлено проблемное поведение при получении сигнала SIGCHLD после завершения нескольких subprocessов, что обеспечивает точность поддержания нужного количества subprocessов.
Последнее сообщение коммита: --
09.03.2025 19:51
GitLife Service Account
  • Оптимизация стратегий таймаута для HTTP/2.
  • Дополнительное повышение общего уровня стабильности.
  • Устранена проблема, связанная с тем, что при парсинге body как объекта в контексте пула кэширования запросов поле было установлено как null, что привело к невозможности установки его свойств.

В случае, если обновление до последней версии невозможно по какой-либо причине, можно использовать следующий способ решения проблемы через добавление middleware:

app.use(async (c, next) => {
  c.body = {};
  await next();
}, { pre: true });
Последнее сообщение коммита: revocer setTimeout for sock and this.connfilter -> connfilter
09.03.2025 19:51
GitLife Service Account
  • монитор: оптимизация формата вывода информации о нагрузке в терминале.
  • http2: после истечения времени ожидания (тайм-аут) сокет будет уничтожен.
Последнее сообщение коммита: nothing to say! >o<
09.03.2025 19:51
GitLife Service Account
  • В модуль helper добавлен параметр encoding в функцию hamcsha1, который указывает кодировку; по умолчанию значение параметра равно hex. Также были скорректированы параметры data и key, сделав data первым аргументом, а key — вторым.
  • Изменён формат вывода таблицы маршрутизации для выравнивания выходных данных.
Последнее сообщение коммита: add encoding for hmacsha1
09.03.2025 19:51
GitLife Service Account
  • модуль helper: обновлены функции ctype для поддержки большего количества MIME types.
  • модуль helper: обновлена функция uuid для поддержки префиксных строк, а также использования временной метки, случайного числа, идентификатора процесса и переменной окружения HOME для генерации уникальной строки (MAC-адрес сетевой карты не используется).
  • модуль helper: добавлена функция nrand для генерации случайных чисел в диапазоне двух заданных значений.
Последнее сообщение коммита: add nrand function; add some mime type for ctype function; update uuid
09.03.2025 19:51
GitLife Service Account

Несколько небольших оптимизаций, не оказавших влияние ни на разработку, ни на выполнение.

Последнее сообщение коммита: change the error detail when EADDRREUSE and add process.exit(1) for...
09.03.2025 19:51
GitLife Service Account

Добавлено несколько строк кода для проверки: если система Windows, то во время запуска процесса Master запускается таймер для периодического отслеживания количества дочерних процессов и поддержания его стабильным. Это связано с тем, что Windows не поддерживает механизм сигналов, поэтому мониторинг выхода дочернего процесса через сигналы недействителен.

  • Это никак не влияет на платформы, кроме Windows.
  • Для работы сервиса лучше использовать Linux.
Последнее сообщение коммита: v21.8.7 : keep workers for windows
09.03.2025 19:51
GitLife Service Account

Предыдущий механизм обработки сообщений на основе событий message игнорировал параметр handle, поскольку при использовании фреймворка передача сокетов редко применяется. Теперь параметр handle включен, хотя он используется редко; полная поддержка обеспечивает более широкую применимость.

Эта функциональность добавляется через метод app.setMsgEvent. Модули monitor и logger основаны на этом.

Последнее сообщение коммита: --
09.03.2025 19:50
GitLife Service Account
  • Удалены некоторые бесполезные комментарии.

  • В модули http1.js и http2.js добавлено одно свойство для поддержки расширения titbit-httpc.

Последнее сообщение коммита: --
09.03.2025 19:50
GitLife Service Account

Запросил оптимизацию модуля фильтрации, заменив объект на карту (map).

Последнее сообщение коммита: --
09.03.2025 19:50
GitLife Service Account

Улучшена функциональность управления таймаутами сокета, что было сделано с учётом протокола HTTP/2.

HTTP/2 имеет проблему сегментации, связанную с таймаутом, которая до сих пор остаётся открытой в багтрекере Node.js на GitHub. В общем, проблема возникает после завершения запроса, когда начинается задержка, а затем происходит таймаут. Обычное использование обычно не вызывает этой проблемы; она была обнаружена намеренно во время тестирования.

Этот выпуск не влияет на производительность и остаётся эффективным. Это небольшое исправление.

Последнее сообщение коммита: set socketTimeout for socket
09.03.2025 19:50
GitLife Service Account

Улучшение функции тайм-аута для HTTP/2.

Использование HTTP/1 обеспечивает стабильность.

Кажется, что HTTP/2 действительно имеет свои сложности; достаточно взглянуть на количество ошибок в Node.js и Golang для HTTP/2...

Последнее сообщение коммита: add major for context, recover setTimeout in connfilter, new versio...
09.03.2025 19:50
GitLife Service Account

Дальнейшая оптимизация маршрутизации значительно повысила производительность. В текущих условиях обработка маршрутов без параметров в консервативной среде позволяет достигать более одного миллиона запросов в секунду. При использовании параметров :param и *param, при наличии 200 маршрутов, в сложных случаях (с четырьмя или пятью параметрами, а также с большим количеством символов /// для фильтрации) частота запросов увеличилась с более чем 90 000 до более чем 120 000 в секунду. Для ещё более сложных случаев с параметрами, частота запросов была оптимизирована с 50 000 до 60 000 в секунду до более чем 90 000.

Тестирование проводилось на оборудовании с процессором AMD Ryzen 4500U.

Последнее сообщение коммита: 进一步优化router,性能更加迅猛。
09.03.2025 19:50
GitLife Service Account
  • Полностью поддерживаются все сложные HTTP/HTTPS/HTTP2 службы.
  • Благодаря расширению titbit-toolkit и titbit-loader можно быстро搭建后端复杂服务.
Последнее сообщение коммита: --
1
https://api.gitlife.ru/oschina-mirror/daoio-titbit.git
git@api.gitlife.ru:oschina-mirror/daoio-titbit.git
oschina-mirror
daoio-titbit
daoio-titbit