WSGI Python3 и Apache Lounge - у вас нет прав доступа к / wsgi на этом сервере

из http://code.google.com/p/fast-serialization/wiki/QuickStartHeapOff

Что такое куча разгрузки?

Обычно все не временные объекты, которые вы назначаете, управляются сборщиком мусора java. Хотя VM делает достойную работу по сбору мусора, в определенный момент VM должна сделать так называемый «Полный GC». Полный GC включает сканирование всей выделенной кучи, что означает, что паузы / замедления GC пропорциональны размеру кучи приложений. Поэтому не доверяйте никому, говорящему вам, что «Память дешевая». В java-памяти потребление ухудшает производительность. Кроме того, вы можете получить заметные паузы, используя размеры кучи> 1 Гб. Это может быть неприятно, если у вас есть вещи почти в реальном времени, в кластере или сетке процесс java может перестать отвечать на запросы и отбрасываться из кластера.

Однако сегодняшние серверные приложения (часто построенные на top of bloaty frameworks ;-)) легко требуют кучи далеко за пределами 4Gb.

Одним из решений этих требований к памяти является «выгрузка» частей объектов в кучу не-java (прямое выделение из ОС ). К счастью, java.nio предоставляет классы для прямого выделения / чтения и записи «неуправляемых» фрагментов памяти (даже с отображением памяти).

Таким образом, можно выделить большие количества «неуправляемой» памяти и использовать это для сохранения объектов там. Чтобы сохранить произвольные объекты в неуправляемой памяти, наиболее жизнеспособным решением является использование сериализации. Это означает, что приложение сериализует объекты в память offheap, позже объект может быть прочитан с помощью десериализации.

Размер кучи, управляемый Java-VM, может быть небольшим, поэтому GC-паузы находятся в миллисе, все

Понятно, что производительность такого буфера с кучей зависит в основном от производительности реализации сериализации. Хорошие новости: по какой-то причине сериализация FST довольно быстро: -).

Примеры сценариев использования:

  • Кэш сеанса в серверном приложении. Используйте файл с отображением памяти для хранения гигабайт (неактивных) сеансов пользователя. После входа пользователя в ваше приложение вы можете быстро получить доступ к данным, связанным с пользователем, без необходимости иметь дело с базой данных.
  • Кэширование вычислительных результатов (запросы, html-страницы, ..) (применимо только при вычислении медленнее десериализации объекта результата c).
  • очень простое и быстрое сохранение с использованием файлов с отображением памяти

Редактирование: для некоторых сценариев можно выбрать более сложные алгоритмы сбора мусора, такие как как ConcurrentMarkAndSweep или G1 для поддержки больших куч (но это также имеет свои пределы за пределами 16 ГБ). Существует также коммерческая JVM с улучшенным «безрезультатным» GC (Azul).

2
задан Ali Nasim 29 March 2019 в 14:56
поделиться