Adobe Experience Manager met MongoDB aem-with-mongodb

Dit artikel heeft tot doel de kennis over de taken en overwegingen te verbeteren die nodig zijn om AEM (Adobe Experience Manager) met MongoDB succesvol te implementeren.

Voor meer op plaatsing betrekking hebbende informatie, raadpleeg het Opstellen en het Onderhoudensectie van de documentatie.

Wanneer gebruikt u MongoDB met AEM when-to-use-mongodb-with-aem

MongoDB wordt doorgaans gebruikt voor het ondersteunen van AEM implementaties van auteurs, waarbij aan een van de volgende criteria wordt voldaan:

  • Meer dan 1000 unieke gebruikers per dag;
  • meer dan 100 gelijktijdige gebruikers;
  • Hoge volumes paginabewerkingen;
  • Grote rollouts of activeringen.

Bovenstaande criteria gelden alleen voor de auteur-instanties en niet voor publicatieinstanties die allemaal op TarMK moeten zijn gebaseerd. Het aantal gebruikers verwijst naar geverifieerde gebruikers, omdat instanties van auteurs geen ongeautoriseerde toegang toestaan.

Als niet aan de criteria wordt voldaan, dan wordt een actieve TarMK/standby plaatsing geadviseerd om beschikbaarheid te richten. Over het algemeen moet MongoDB worden overwogen in situaties waarin de schaalvereisten groter zijn dan wat met één hardwareonderdeel kan worden bereikt.

NOTE
De extra informatie bij het rangschikken van auteursinstanties en de definitie van gezamenlijke gebruikers kan in de Hardware worden gevonden rangschikt Richtlijnen.

Minimale MongoDB-implementatie voor AEM minimal-mongodb-deployment-for-aem

Hieronder vindt u een minimale implementatie voor AEM op MongoDB. Voor eenvoud, zijn de SSL beëindiging en de componenten van de Volmacht van HTTP algemeen gemaakt. Het bestaat uit één MongoDB-replicaset, met één primaire en twee secondejaren.

chlimage_1-4

Voor een minimale implementatie zijn drie mongod -instanties vereist die zijn geconfigureerd als een replicaset. Eén instantie wordt primair geselecteerd en de andere instanties zijn secundaire instanties, waarbij de selectie wordt beheerd door mongod . Aan elke instantie is een lokale schijf gekoppeld. De cluster kan de belasting dus ondersteunen, een minimale doorvoer van 12 MB per seconde met meer dan 3000 I/O-bewerkingen per seconde (IOPS) wordt aanbevolen.

De AEM auteurs zijn verbonden met de mongod -instanties, waarbij elke AEM auteur verbinding maakt met alle drie mongod -instanties. Schrijven worden naar de primaire pagina verzonden en kunnen vanuit elk van de gevallen worden gelezen. Het verkeer wordt verdeeld gebaseerd op lading door een Dispatcher aan om het even welke actieve AEM auteur instanties. De Oak-gegevensopslag is een FileDataStore -controle en MongoDB-controle wordt door MMS of MongoDB Ops Manager geboden, afhankelijk van de locatie van de implementatie. Het niveau van het werkende systeem en logboekcontrole wordt verstrekt door derdeoplossingen zoals Splunk of Ganglia.

In deze implementatie zijn alle componenten vereist voor een geslaagde implementatie. Ontbrekende componenten laten de implementatie niet-functioneel.

Besturingssystemen operating-systems

Voor een lijst van gesteunde werkende systemen voor AEM 6, zie de pagina van Technische Vereisten.

Omgevingen environments

Gevirtualiseerde omgevingen worden ondersteund op voorwaarde dat er goede communicatie is tussen de verschillende technische teams die het project uitvoeren. Tot deze ondersteuning behoren het team dat AEM uitvoert, het team dat eigenaar is van het besturingssysteem en het team dat de gevirtualiseerde infrastructuur beheert.

Er zijn specifieke vereisten voor de I/O-capaciteit van de MongoDB-instanties die moeten worden beheerd door het team dat de gevirtualiseerde omgeving beheert. Als het project een cloudimplementatie gebruikt, zoals Amazon Web Services, moeten instanties zijn voorzien van voldoende I/O-capaciteit en consistentie om de MongoDB-instanties te ondersteunen. Anders functioneren de MongoDB-processen en de Oak-opslagplaats onbetrouwbaar en onregelmatig.

In gevirtualiseerde omgevingen heeft MongoDB specifieke I/O- en VM-configuraties nodig om ervoor te zorgen dat de opslagengine van MongoDB niet wordt belemmerd door VMWare-beleid voor brontoewijzing. Een geslaagde implementatie zorgt ervoor dat er geen barrières zijn tussen de verschillende teams en iedereen is aangemeld om de vereiste prestaties te leveren.

Overwegingen voor hardware hardware-considerations

Opslag storage

Om de lees- en schrijfdoorvoer te behalen voor de beste prestaties zonder de behoefte aan premature horizontale schaling, vereist MongoDB doorgaans SSD-opslag of -opslag met prestaties die gelijk zijn aan SSD.

RAM ram

Voor MongoDB-versies 2.6 en 3.0 die de MMAP-opslagengine gebruiken, is het vereist dat de werkset van de database en de bijbehorende indexen in het RAM passen.

Onvoldoende RAM leidt tot een aanzienlijke prestatievermindering. De grootte van de werkset en van de database is sterk afhankelijk van de toepassing. Hoewel sommige schattingen kunnen worden gemaakt, is de betrouwbaarste manier om te bepalen hoeveel RAM-geheugen nodig is, het bouwen van de AEM en het testen van de belasting.

Ter ondersteuning van het laadtestproces kan de volgende verhouding tussen werkset en totale databasegrootte worden aangenomen:

  • 1:10 voor SSD-opslag
  • 1:3 voor harde-schijfopslag

Deze verhoudingen betekenen dat voor SSD-implementaties 200 GB RAM vereist is voor een database van 2 TB.

Hoewel de zelfde beperkingen op de opslag WiredTiger motor in MongoDB 3.0 van toepassing zijn, is de correlatie tussen de het werk reeks, RAM, en paginafouten niet zo sterk. WiredTiger gebruikt geheugentoewijzing niet op dezelfde manier als de MMAP-opslagengine.

NOTE
Adobe raadt aan de WiredTiger-opslagengine te gebruiken voor AEM 6.1-implementaties die MongoDB 3.0 gebruiken.

Gegevensopslag data-store

Vanwege de beperkingen van de MongoDB-werkset wordt aanbevolen de gegevensopslag onafhankelijk van de MongoDB te houden. In de meeste omgevingen moet een FileDataStore worden gebruikt met een NAS die voor alle AEM instanties beschikbaar is. Voor situaties waarin de Amazon Web Services wordt gebruikt, is er ook een S3 DataStore . Als om het even welke reden, de gegevensopslag binnen MongoDB wordt gehandhaafd, zou de grootte van de datastore aan de totale gegevensbestandgrootte moeten worden toegevoegd, en de werksetberekeningen zouden geschikt worden aangepast. Deze grootte kan betekenen dat u meer RAM-geheugen moet inrichten om de prestaties te handhaven zonder paginafouten.

Bewaking monitoring

Toezicht is van essentieel belang voor een succesvolle uitvoering van het project. Met voldoende kennis van zaken is het mogelijk om AEM te draaien op MongoDB zonder controle. Nochtans, wordt die kennis gewoonlijk gevonden in ingenieurs die voor elke sectie van de plaatsing worden gespecialiseerd.

Bij deze gespecialiseerde kennis gaat het doorgaans om een O&O-engineer die werkt aan de Apache Oak Core en een MongoDB-specialist.

Zonder controle op alle niveaus, wordt gedetailleerde kennis van de codebasis vereist om kwesties te diagnostiseren. Met toezicht en passende richtsnoeren voor de belangrijkste statistieken kunnen de implementatieteams adequaat reageren op anomalieën.

Terwijl het mogelijk is om bevel-lijn hulpmiddelen te gebruiken om een snelle momentopname van de verrichting van een cluster te krijgen, is het doen van dat in echt - tijd over vele gastheren bijna onmogelijk. Met opdrachtregelprogramma's wordt zelden meer dan een paar minuten historische informatie gegeven en is geen kruiscorrelatie mogelijk tussen verschillende typen metriek. Een korte periode van trage mongod synchronisatie op de achtergrond vereist een aanzienlijke handmatige inspanning om te correleren met I/O-wachttijden of buitensporige schrijfniveaus naar een gedeelde opslagbron van een ogenschijnlijk niet-aangesloten virtuele machine.

MongoDB Cloud Manager mongodb-cloud-manager

MongoDB Cloud Manager is een gratis service die wordt aangeboden door MongoDB en die controle en beheer van MongoDB-instanties mogelijk maakt. Het biedt een weergave in real-time van de prestaties en gezondheid van de MongoDB-cluster. Het beheert zowel clouds als privégehoste instanties op voorwaarde dat de instantie de Cloud Manager-controleserver kan bereiken.

Het vereist een agent die op de instantie MongoDB wordt geïnstalleerd die met de controleserver verbindt. Er zijn drie niveaus van de agent:

  • Een automatiseringsagent die alles op de MongoDB-server volledig kan automatiseren,
  • Een bewakingsagent die de instantie mongod kan controleren;
  • Een back-upagent die geplande back-ups van de gegevens kan uitvoeren.

Hoewel het gebruik van Cloud Manager voor onderhoudsautomatisering van een MongoDB-cluster veel routinetaken eenvoudiger maakt, is dit niet nodig en wordt het ook niet gebruikt voor back-up. Wanneer u een Cloud Manager kiest om te controleren, is bewaking echter vereist.

Voor meer informatie betreffende MongoDB Cloud Manager, raadpleeg de documentatie MongoDB.

MongoDB Ops Manager mongodb-ops-manager

MongoDB Ops Manager is dezelfde software als de MongoDB Cloud Manager. Zodra geregistreerd, kan de Manager van Ops plaatselijk in een privé gegevenscentrum of op een andere laptop of Desktopmachine worden gedownload en worden geïnstalleerd. Het gebruikt een lokale gegevensbestand MongoDB om gegevens op te slaan en op de zelfde manier als Cloud Manager met de beheerde servers te communiceren. Als u veiligheidsbeleid hebt dat een controleagent verhindert, zou de Manager van Ops MongoDB moeten worden gebruikt.

Besturingssysteem controleren operating-system-monitoring

Controle op besturingssysteemniveau is vereist om een AEM MongoDB-cluster uit te voeren.

Ganglia is een goed voorbeeld van een dergelijk systeem en biedt een beeld van het bereik en de details van de vereiste informatie die verder gaat dan de standaardmaatstaven voor de gezondheid, zoals CPU, laadgemiddelde en vrije schijfruimte. Om problemen te diagnostiseren, is informatie op een lager niveau, zoals de niveaus van de entropiepool, I/O van cpu wachtende, contactdozen in staat FIN_WAIT2 vereist.

Logaggregatie log-aggregation

Bij een cluster met meerdere servers is centrale logboekaggregatie een vereiste voor een productiesysteem. De software zoals Splunk steunt logboeksamenvoeging en staat teams toe om de patronen van gedrag van de toepassing te analyseren zonder het moeten de logboeken manueel verzamelen.

Controlelijsten checklists

Deze sectie behandelt diverse stappen die u zou moeten nemen om ervoor te zorgen dat uw AEM en plaatsingen MongoDB behoorlijk opstelling alvorens uw project te uitvoeren zijn.

Netwerk network

  1. Eerst, zorg ervoor dat alle gastheren een DNS ingang hebben
  2. Alle gastheren zouden door hun DNS ingang van alle andere routable gastheren moeten oplosbaar zijn
  3. Alle MongoDB-hosts zijn routeerbaar voor alle andere MongoDB-hosts in dezelfde cluster
  4. MongoDB-hosts kunnen pakketten naar MongoDB Cloud Manager en de andere controleservers verzenden
  5. AEM Servers kunnen pakketten naar alle MongoDB-servers leiden
  6. De latentie van het pakket tussen om het even welke AEM server en om het even welke server MongoDB is kleiner dan twee milliseconden, zonder pakketverlies en een standaarddistributie van één milliseconde of minder.
  7. Zorg ervoor dat er niet meer dan twee hop tussen een AEM en een MongoDB-server is
  8. Er zijn niet meer dan twee hop tussen twee MongoDB-servers
  9. Er zijn geen routers hoger dan OSI Niveau 3 tussen om het even welke kernservers (MongoDB of AEM of om het even welke combinatie).
  10. Als trunking van VLAN of om het even welke vorm van netwerk het een tunnel graven wordt gebruikt, moet het aan de controles van de pakketlatentie voldoen.

AEM aem-configuration

Knooppuntwinkelconfiguratie node-store-configuration

De AEM instanties moeten worden gevormd om AEM met MongoMK te gebruiken. De basis van de MongoMK-implementatie in AEM is de Document Node Store.

Voor meer informatie hoe te om de Opslag van de Knoop te vormen, zie het Vormen de Opslag van de Knoop en de Opslag van Gegevens in AEM.

Hieronder ziet u een voorbeeld van de configuratie van de Document Node Store voor een minimale implementatie van MongoDB:

# org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.config
#MongoDB server details
mongodburi=mongodb://aem:aempassword@mongodbserver1.customer.com:27000,mongodbserver2.customer.com:27000

#Name of MongoDB database to use
db=aem

#Store binaries in custom BlobStore for example, FileDataStore
customBlobStore=true

cache=2048
blobCacheSize=1024

Waarbij:

  • mongodburi
    De MongoDB-AEM moet verbinding maken. Verbindingen worden gemaakt met alle bekende leden van de standaardreplicaset. Als MongoDB Cloud Manager wordt gebruikt, is de serverbeveiliging ingeschakeld. Daarom moet de verbindingstekenreeks een geschikte gebruikersnaam en wachtwoord bevatten. Niet-zakelijke versies van MongoDB ondersteunen alleen gebruikersnaam- en wachtwoordverificatie. Voor meer informatie over de syntaxis van het verbindingskoord, raadpleeg de documentatie.

  • db
    De naam van de database. De standaardwaarde voor AEM is aem-author .

  • customBlobStore
    Als de plaatsing binaire getallen in het gegevensbestand opslaat, maken zij deel uit van de het werk reeks. Daarom wordt aangeraden binaire bestanden niet in MongoDB op te slaan, bij voorkeur een alternatieve datastore zoals een FileSystem datastore op een NAS.

  • cache
    De cachegrootte in megabytes. Deze ruimte wordt verdeeld over verschillende caches die worden gebruikt in de DocumentNodeStore . De standaardwaarde is 256 MB. Oak leest echter prestatievoordelen van een groter cachegeheugen.

  • blobCacheSize
    Veelgebruikte blobs kunnen door AEM in de cache worden geplaatst om te voorkomen dat ze opnieuw uit de gegevensopslag worden opgehaald. Dit heeft meer invloed op de prestaties, vooral wanneer u klodders opslaat in de MongoDB-database. Alle gegevensopslagsystemen op bestandssysteem profiteren van de schijfcache op besturingssysteemniveau.

Configuratie gegevensopslag data-store-configuration

De gegevensopslag wordt gebruikt om bestanden op te slaan die groter zijn dan een drempel. Onder die drempel worden bestanden als eigenschappen opgeslagen in het Document Node Store. Als MongoBlobStore wordt gebruikt, wordt een specifieke inzameling gecreeerd in MongoDB om de vlekken op te slaan. Deze verzameling draagt bij aan de werkset van de instantie mongod en vereist dat mongod meer RAM heeft om prestatieproblemen te voorkomen. Daarom is het raadzaam om de MongoBlobStore voor productieimplementaties en het gebruik FileDataStore te vermijden, ondersteund door een NAS die door alle AEM wordt gedeeld. Omdat de cache op besturingssysteemniveau efficiënt is voor het beheren van bestanden, moet de minimale grootte van een bestand op schijf dicht bij de blokgrootte van de schijf worden ingesteld. Dit zorgt ervoor dat het bestandssysteem efficiënt wordt gebruikt en dat veel kleine documenten niet buitensporig bijdragen aan de werkset van de instantie mongod .

Hier volgt een standaardconfiguratie voor gegevensopslag voor een minimale AEM implementatie met MongoDB:

# org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore.config
# The minimum size of an object that should be stored in this data store.
minRecordLength=4096
path=/datastore
maxCachedBinarySize=4096
cacheSizeInMB=128

Waarbij:

  • minRecordLength
    Grootte in bytes. Binaire bestanden met een grootte die kleiner is dan of gelijk is aan deze grootte, worden opgeslagen in het Document Node Store. In plaats van de id van de blob op te slaan, wordt de inhoud van het binaire bestand opgeslagen. Met binaire getallen die groter zijn dan deze grootte, wordt identiteitskaart van binair getal opgeslagen als bezit van het Document in de knooppuntinzameling. En, wordt het lichaam van het binaire getal opgeslagen in FileDataStore op schijf. 4096 bytes is een typische blokgrootte van het dossiersysteem.

  • path
    Het pad naar de hoofdmap van de gegevensopslag. Voor een MongoMK-implementatie moet dit pad een gedeeld bestandssysteem zijn dat beschikbaar is voor alle AEM instanties. Gewoonlijk wordt een NAS-server (Network Attached Storage) gebruikt. Voor cloudimplementaties zoals Amazon Web Services is S3DataFileStore ook beschikbaar.

  • cacheSizeInMB
    De totale grootte van de binaire cache in Megabytes. Deze wordt gebruikt om binaire bestanden met een cache te plaatsen die kleiner is dan de instelling maxCacheBinarySize .

  • maxCachedBinarySize
    De maximumgrootte in bytes van een binaire caching in het binaire geheime voorgeheugen. Als een op een bestandssysteem gebaseerde gegevensopslag wordt gebruikt, wordt het niet aanbevolen hoge waarden te gebruiken voor de cache van de gegevensopslag, aangezien de binaire bestanden al in de cache zijn opgeslagen door het besturingssysteem.

De queryhint uitschakelen disabling-the-query-hint

Het wordt aanbevolen de queryhint die met alle query's wordt verzonden, uit te schakelen door de eigenschap -Doak.mongo.disableIndexHint=true toe te voegen wanneer u AEM start. Dit zorgt ervoor dat MongoDB de meest geschikte index berekent die op interne statistieken moet worden gebruikt.

Als de vraagwenk niet gehandicapt is, heeft om het even welke prestaties het stemmen van indexen geen invloed op de prestaties van AEM.

Blijvende cache inschakelen voor MongoMK enable-persistent-cache-for-mongomk

Het wordt aanbevolen een permanente cacheconfiguratie in te schakelen voor MongoDB-implementaties om de snelheid te maximaliseren voor omgevingen met hoge I/O-leesprestaties. Voor meer details, zie de documentatie van Jackrabbit Oak.

Optimalisatie van MongoDB-besturingssystemen mongodb-operating-system-optimizations

Ondersteuning van besturingssystemen operating-system-support

MongoDB 2.6 gebruikt een in geheugen toegewezen opslagengine die gevoelig is voor bepaalde aspecten van het systeembeheer tussen RAM en schijf. De vraag en gelezen Prestaties van de instantie MongoDB baseert zich op het vermijden of het elimineren van langzame I/O verrichtingen die vaak als paginafouten worden bedoeld. Dit zijn vooral paginafouten die van toepassing zijn op het mongod -proces. Let op het verschil met paginafouten op besturingssysteemniveau.

Voor snelle verrichting, zou het gegevensbestand MongoDB slechts tot gegevens moeten toegang hebben die reeds in RAM zijn. De gegevens waartoe het toegang moet krijgen, bestaan uit indexen en gegevens. Deze verzameling indexen en gegevens wordt de werkset genoemd. Als de werkset groter is dan de beschikbare RAM-geheugen, moet MongoDB die gegevens vanaf een schijf met I/O-kosten inpakken, zodat andere gegevens die al in het geheugen staan, worden verwijderd. Als de verwijdering ertoe leidt dat gegevens van schijf worden opnieuw geladen, nemen de paginafouten en de prestaties af. Wanneer de werkset dynamisch en variabel is, worden er meer paginafouten gegenereerd om bewerkingen te ondersteunen.

MongoDB wordt uitgevoerd op verschillende besturingssystemen, waaronder een groot aantal Linux®-kleuren, Windows en macOS. Zie https://docs.mongodb.com/manual/installation/#supported-platformsvoor extra details. Afhankelijk van de keuze van het besturingssysteem heeft MongoDB verschillende aanbevelingen voor het niveau van het besturingssysteem. Er zijn gedocumenteerd in https://docs.mongodb.com/manual/administration/production-checklist-operations/#operating-system-configurationen hier samengevat voor gemak.

Linux® linux

  • Schakel de transparante kleurtonen en foutopsporing uit. Zie de Transparante Montages van de Pagina's van de Grootvoor meer informatie.

  • pas de readahead montagesop de apparaten aan die uw gegevensbestanddossiers opslaan zodat u uw gebruiksgeval past.

    • Als de werkset van de MMAPv1-opslagengine groter is dan het beschikbare RAM en het toegangspatroon van het document willekeurig is, kunt u het aflezen naar 32 of 16 verkleinen. U kunt verschillende instellingen evalueren, zodat u een optimale waarde kunt vinden voor een zo groot mogelijk geheugen en een lager aantal paginafouten.
    • Voor de opslag WiredTiger motor, reeks opnieuw gelezen aan 0 ongeacht opslagmedia type (het draaien, SSD, etc.). Over het algemeen gebruikt u de aanbevolen instelling voor het aflezen van voorkeuren, tenzij tests een meetbaar, herhaalbaar en betrouwbaar voordeel opleveren bij een hogere aflezing. de Professionele Steun van MongoDBkan advies en begeleiding op non-zero readahead configuraties verstrekken.
  • Schakel het afgestelde gereedschap uit als u RHEL 7 / CentOS 7 in een virtuele omgeving uitvoert.

  • Wanneer RHEL 7/CentOS 7 in een virtuele milieu in werking wordt gesteld, roept het afgestemde hulpmiddel automatisch een prestatiesprofiel aan dat uit prestatiesproductie wordt afgeleid, die automatisch de lezingsmontages aan 4 MB plaatst. Deze instelling kan negatieve gevolgen hebben voor de prestaties.

  • Gebruik de noop- of deadline schijfplanners voor SSD-stations.

  • Gebruik de noop schijfplanner voor gevirtualiseerde aandrijving in gast VMs.

  • Maak NUMA onbruikbaar of reeks vm.zone_reclaim_mode aan 0 en stel mongoinstantiesmet knoop interleave in werking. Zie: MongoDB en Hardware NUMAvoor meer informatie.

  • Pas de grenswaarden op de hardware aan, zodat deze passen bij uw gebruiksscenario. Als de veelvoudige mongoonof mongoinstanties onder de zelfde gebruiker lopen, schaal dienovereenkomstig de grenswaarden. Zie: UNIX® ulimit Montagesvoor meer informatie.

  • De naam van het gebruik voor het dbPathkoppelingspunt.

  • Configureer voldoende bestandshandgrepen (fs.file-max), de limiet voor de pid van de kernel (kernel.pid_max) en de maximale threads per proces (kernel.threads-max) voor uw implementatie. Voor grote systemen bieden de volgende waarden een goed startpunt:

    • fs.file-max waarde van 98000,
    • kernel.pid_max waarde 64000,
    • andkernel.threads-max waarde van 64000
  • Zorg ervoor dat er wisselruimte is geconfigureerd op uw systeem. Raadpleeg de documentatie bij het besturingssysteem voor meer informatie over de juiste grootte.

  • Zorg ervoor dat het systeem standaardTCP keylive correct wordt geplaatst. Een waarde van 300 biedt vaak betere prestaties voor replicasets en gedeelde clusters. Zie: beïnvloedt keyletime van TCP de Inzet MongoDB? in Veelgestelde vragen voor meer informatie.

Windows windows

  • Overweeg het onbruikbaar maken NTFS "laatste toegangstijd"updates. Deze instelling is hetzelfde als het uitschakelen van atime op Unix-achtige systemen.

WiredTiger wiredtiger

Vanaf MongoDB 3.2 is de standaard opslagengine voor MongoDB de WiredTiger-opslagengine. Deze engine biedt enkele robuuste en schaalbare functies die het veel geschikter maken voor algemene databasewerklasten. In de volgende secties worden deze functies beschreven.

Documentniveau gelijktijdig document-level-concurrency

WiredTiger gebruikt document-vlakke gelijktijdig controle voor schrijfverrichtingen. Hierdoor kunnen meerdere clients verschillende documenten van een verzameling tegelijk wijzigen.

Voor de meeste lees en schrijf verrichtingen, gebruikt WiredTiger optimistische gelijktijdig controle. WiredTiger gebruikt slechts intent sloten bij globale, gegevensbestand, en inzamelingsniveaus. Wanneer de opslagengine conflicten tussen twee bewerkingen detecteert, treedt er een schrijfconflict op waardoor MongoDB deze bewerking op transparante wijze opnieuw probeert. Voor sommige globale bewerkingen, meestal kortstondige bewerkingen met meerdere databases, is nog steeds een algemene vergrendeling voor de hele instantie vereist.

Voor sommige andere bewerkingen, zoals het neerzetten van een verzameling, is nog steeds een exclusieve databasevergrendeling vereist.

Momentopnamen en controlepunten snapshots-and-checkpoints

WiredTiger gebruikt MultiVersion Concurrency Control (MVCC). Aan het begin van een verrichting, verstrekt WiredTiger een punt-in-tijd momentopname van de gegevens aan de transactie. Een momentopname stelt een verenigbare mening van de in-geheugengegevens voor.

Wanneer het schrijven aan schijf, schrijft WiredTiger alle gegevens in een momentopname aan schijf op een verenigbare manier over alle gegevensdossiers. De nu - duurzamegegevens handelen als controlepunt in de gegevensdossiers. Het controlepunt zorgt ervoor dat de gegevensdossiers tot en met het laatste controlepunt verenigbaar zijn. Dit betekent dat controlepunten kunnen fungeren als herstelpunten.

MongoDB configureert WiredTiger om controlepunten (namelijk schrijven de momentopnamegegevens aan schijf) met intervallen van 60 seconden of 2 GB van dagboekgegevens tot stand te brengen.

Tijdens het schrijven van een nieuw controlepunt, is het vorige controlepunt nog geldig. Als zodanig, zelfs als MongoDB beëindigt of een fout ontmoet terwijl het schrijven van een nieuw controlepunt, bij nieuw begin, kan MongoDB van het laatste geldige controlepunt terugkrijgen.

Het nieuwe controlepunt wordt toegankelijk en permanent wanneer de de meta-gegevenslijst van WiredTiger automatisch wordt bijgewerkt om naar het nieuwe controlepunt te verwijzen. Zodra het nieuwe controlepunt toegankelijk is, bevrijdt WiredTiger pagina's van de oude controlepunten.

Gebruikend WiredTiger, zelfs zonder het journaling, kan MongoDB van het laatste controlepunt terugkrijgen; nochtans, om veranderingen terug te krijgen die na het laatste controlepunt worden aangebracht, looppas met het journaling.

Dagboek journal

WiredTiger gebruikt een schrijven-vooruit combinatie van de transactieopening van een sessie met controlepuntenom gegevensduurzaamheid te verzekeren.

Het journaal WiredTiger zet alle gegevenswijzigingen tussen controlepunten voort. Als MongoDB tussen controlepunten weggaat, gebruikt het dagboek om alle gegevens opnieuw te spelen die sinds het laatste controlepunt worden gewijzigd. Voor informatie over de frequentie waarmee MongoDB de dagboekgegevens aan schijf schrijft, zie het Journaling Proces.

Het dagboek WiredTiger wordt samengeperst gebruikend de snappycompressiebibliotheek. Om een afwisselend compressiealgoritme of geen compressie te specificeren, gebruik storage.wiredTiger.engineConfig.JournalCompressorhet plaatsen.

Zie het Journaling met WiredTiger.

NOTE
De minimumgrootte van het logboekverslag voor WiredTiger is 128 bytes. Als een logboekverslag 128 bytes of kleiner is, comprimeert WiredTiger niet dat verslag.
U kunt het journaling onbruikbaar maken door storage.journal.enabledaan vals te plaatsen, die de overheadkosten van het handhaven van het dagboek kan verminderen.
Voor standaloneinstanties, die niet het dagboek gebruiken betekent dat u sommige gegevenswijzigingen verliest wanneer MongoDB onverwacht tussen controlepunten weggaat. Voor leden van replicasets, kan het replicatieproces voldoende duurzaamheidsgaranties verstrekken.

Compressie compression

Met WiredTiger biedt MongoDB ondersteuning voor compressie voor alle verzamelingen en indexen. Compressie minimaliseert opslaggebruik ten koste van extra CPU.

Door gebrek, gebruikt WiredTiger blokcompressie met de snappycompressiebibliotheek voor alle inzamelingen en prefixcompressievoor alle indexen.

Voor inzamelingen, blokcompressie met zlibis ook beschikbaar. Om een afwisselend compressiealgoritme of geen compressie te specificeren, gebruik storage.wiredTiger.collectionConfig.blockCompressorplaatsen.

Voor indexen, om prefixcompressieonbruikbaar te maken, gebruik storage.wiredTiger.indexConfig.prefixCompressionhet plaatsen.

De montages van de compressie zijn ook configureerbaar op een per-inzameling en per-indexbasis tijdens inzameling en indexverwezenlijking. Zie de Opties van de Motor van de Opslag specificerenen db.collection.createIndex () storageEngineoptie.

Voor de meeste werklasten zijn de standaardinstellingen voor compressie een goede balans tussen de efficiëntie van de opslag en de verwerkingsvereisten.

Het tijdschrift WiredTiger wordt ook door gebrek samengeperst. Voor informatie over dagboekcompressie, zie Dagboek.

Geheugengebruik memory-use

Met WiredTiger gebruikt MongoDB zowel de interne cache van WiredTiger als de cache van het bestandssysteem.

Beginnend in 3.4, gebruikt het interne geheime voorgeheugen WiredTiger, door gebrek, het grootste van of:

  • 50% van RAM min 1 GB, of
  • 256 MB

Standaard gebruikt WiredTiger de compressie van het Snapy-blok voor alle verzamelingen en de compressie van het voorvoegsel voor alle indexen. De standaardwaarden voor compressie kunnen globaal worden geconfigureerd en kunnen ook per verzameling en per index worden ingesteld tijdens het maken van verzamelingen en indexen.

De verschillende vertegenwoordiging wordt gebruikt voor gegevens in het interne geheime voorgeheugen WiredTiger tegenover in het on-disk formaat:

  • De gegevens in de bestandssysteemcache zijn gelijk aan de schijfindeling, inclusief de voordelen van compressie voor gegevensbestanden. De cache van het bestandssysteem wordt door het besturingssysteem gebruikt om de I/O van de schijf te verminderen.

De indexen die in het interne geheime voorgeheugen WiredTiger worden geladen hebben een verschillende gegevensvertegenwoordiging aan het formaat op schijf, maar kunnen nog voordeel van de compressie van de indexprefix nemen om het gebruik van RAM te verminderen.

Met compressie van indexvoorvoegsel worden algemene voorvoegsels van geïndexeerde velden verwijderd.

De gegevens van de inzameling in het interne geheime voorgeheugen WiredTiger zijn niet samengeperst en gebruiken een verschillende vertegenwoordiging van het formaat op schijf. Blokcompressie kan aanzienlijke opslagbesparingen op de schijf opleveren, maar gegevens moeten niet gecomprimeerd zijn om door de server te worden gemanipuleerd.

Via het filesystem geheime voorgeheugen, gebruikt MongoDB automatisch al vrij geheugen dat niet door het geheime voorgeheugen WiredTiger of door andere processen wordt gebruikt.

Om de grootte van het interne geheime voorgeheugen WiredTiger aan te passen, zie storage.wiredTiger.engineConfig.cacheSizeGBen - wiredTigerCacheSizeGB. Vermijd het verhogen van de interne cachegrootte WiredTiger boven zijn standaardwaarde.

NUMA numa

Met NUMA (Non-Uniform Memory Access) kan een kernel bepalen hoe geheugen wordt toegewezen aan de processorkernen. Hoewel dit proces probeert om geheugentoegang voor kernen sneller te maken die ervoor zorgen dat zij tot de vereiste gegevens kunnen toegang hebben, mengt NUMA zich in MMAP die extra latentie introduceert aangezien leest niet kan worden voorspeld. Het gevolg is dat NUMA moet worden uitgeschakeld voor het mongod -proces op alle besturingssystemen die hiervoor geschikt zijn.

In wezen wordt het geheugen van een NUMA-architectuur aangesloten op de CPU en worden de CPU's aangesloten op een bus. In een SMP of een architectuur UMA, wordt het geheugen verbonden met de bus en door cpu's gedeeld. Wanneer een draad geheugen op NUMA cpu toewijst, wijst het volgens een beleid toe. Standaard wordt geheugen toegewezen dat aan de lokale CPU van de thread is gekoppeld, tenzij er geen vrije processor is. Op dat moment wordt geheugen van een vrije CPU tegen hogere kosten gebruikt. Nadat het geheugen is toegewezen, wordt het niet verplaatst tussen CPU's. De toewijzing wordt uitgevoerd door een beleid dat van de ouderdraad wordt geërft, die uiteindelijk de draad is die het proces begon.

In vele gegevensbestanden die de computer als multicore eenvormige geheugenarchitectuur zien, leidt dit scenario tot eerste volledige cpu en de secundaire vulling later. Het is vooral waar als een centrale draad voor het toewijzen van geheugenbuffers verantwoordelijk is. De oplossing is het beleid van NUMA van de belangrijkste draad te veranderen die wordt gebruikt om het mongod proces te beginnen door het volgende bevel in werking te stellen:

numactl --interleaved=all <mongod> -f config

Dit beleid wijst geheugen in een ronde weg over alle knopen van cpu toe die een gelijke distributie over alle knopen verzekeren. Er wordt geen optimale toegang tot het geheugen gegenereerd, zoals bij systemen met meerdere CPU-hardware. Ongeveer de helft van de geheugenbewerkingen verloopt langzamer en op de bus, maar mongod is niet zodanig geschreven dat NUMA optimaal kan worden benut. Het is dus een redelijk compromis.

NUMA-problemen numa-issues

Als het mongod proces van een plaats buiten de /etc/init.d omslag is begonnen, is het waarschijnlijk dat het niet met het correcte beleid NUMA is begonnen. Afhankelijk van wat het standaardbeleid is, kunnen zich problemen voordoen. De reden hiervoor is dat de verschillende Linux® Package Manager-installatieprogramma's voor MongoDB ook een service met configuratiebestanden in /etc/init.d installeren die de hierboven beschreven stap uitvoeren. Als u MongoDB rechtstreeks vanuit een archief ( .tar.gz ) installeert en uitvoert, moet u het bestand handmatig onder het numactl -proces uitvoeren.

NOTE
Voor meer informatie over het beschikbare beleid van NUMA, raadpleeg de numerieke documentatie.

Het MongoDB-proces gedraagt zich anders in het kader van verschillende toewijzingsbeleid:

  • -membind=<nodes>
    Alleen toewijzen op de vermelde knooppunten. Mongod wijst geen geheugen toe op vermelde knooppunten en gebruikt mogelijk niet al het beschikbare geheugen.

  • -cpunodebind=<nodes>
    Alleen op de knooppunten uitvoeren. Mongod wordt alleen uitgevoerd op de opgegeven knooppunten en gebruikt alleen geheugen dat beschikbaar is op die knooppunten.

  • -physcpubind=<nodes>
    Alleen uitvoeren op vermelde CPU's (cores). Mongod voert alleen de CPU's uit die worden vermeld en gebruikt alleen het geheugen dat beschikbaar is voor die CPU's.

  • --localalloc
    Wijs altijd geheugen op de huidige knoop toe, maar gebruik alle knopen de draadlooppas. Als één draad een toewijzing uitvoert, dan slechts wordt het geheugen beschikbaar aan die cpu gebruikt.

  • --preferred=<node>
    Geeft de voorkeur aan toewijzing aan een knooppunt, maar valt terug naar andere knooppunten als het voorkeurknooppunt vol is. U kunt een relatieve notatie gebruiken voor het definiëren van een knooppunt. Ook, lopen de draden op alle knopen.

Sommige beleidsregels kunnen ertoe leiden dat minder dan alle beschikbare RAM-geheugen wordt toegewezen aan het mongod -proces. In tegenstelling tot MySQL vermijdt MongoDB actief paginering op besturingssysteemniveau, waardoor het mongod -proces mogelijk minder geheugen krijgt dat beschikbaar lijkt.

Wisselen swapping

Wegens de geheugenintensieve aard van gegevensbestanden, moet de uitwisseling van het niveau van het werkende systeem worden onbruikbaar gemaakt. Met het MongoDB-proces vermijdt u verwisselingen per ontwerp.

Externe bestandssystemen remote-filesystems

Externe bestandssystemen, zoals NFS, worden niet aanbevolen voor interne gegevensbestanden van MongoDB (de bestanden van de modelprocesdatabase), omdat deze te veel latentie introduceren. Let op het verschil met het gedeelde bestandssysteem dat vereist is voor de opslag van Oak Blob's (FileDataStore), waarbij NFS wordt aanbevolen.

Vooruit lezen read-ahead

Tune Read forward zodat wanneer een pagina binnen gebruikend een willekeurig gelezen wordt gepagineerd, de onnodige blokken niet van de schijf worden gelezen. Dergelijke resultaten betekenen een onnodig gebruik van I/O-bandbreedte.

Linux®-vereisten linux-requirements

Minimale kernelversies minimum-kernel-versions

  • 2.6.23 voor ext4 filesystems

  • 2.6.25 voor xfs filesystems

Aanbevolen instellingen voor databaseschijven recommended-settings-for-database-disks

draai van atime

Het wordt aanbevolen atime uit te schakelen voor de schijven die de databases bevatten.

plaats de NOOP schijfplanner

Ga als volgt te werk:

Eerst, controlerend de I/O planner die door het volgende bevel in werking te stellen wordt geplaatst:

cat /sys/block/sdg/queue/scheduler

Als de reactie noop is, hoeft u niets meer te doen.

Als NOOP niet de I/O planner is die opstelling is, kunt u het veranderen door te lopen:

echo noop > /sys/block/sdg/queue/scheduler

pas gelezen vooruit waarde aan

Het wordt aanbevolen de waarde 32 te gebruiken voor de schijven waarop MongoDB-databases worden uitgevoerd. Deze waarde bedraagt 16 kB. U kunt dit als volgt instellen:

sudo blockdev --setra <value> <device>

NTP inschakelen enable-ntp

Zorg ervoor u NTP hebt geïnstalleerd en lopend op de machine die de gegevensbestanden MongoDB ontvangt. U kunt de toepassing bijvoorbeeld installeren met Yum Package Manager op een CentOS-computer:

sudo yum install ntp

Nadat het NTP daemon is geïnstalleerd en met succes is begonnen, kunt u het driftdossier voor de tijdcompensatie van uw server controleren.

Transparante grote pagina's uitschakelen disable-transparent-huge-pages

Red Hat® Linux® gebruikt een algoritme voor geheugenbeheer met de naam Transparent Huge Pages (THP). Het wordt aanbevolen dit uit te schakelen als u het besturingssysteem gebruikt voor databasewerklasten.

U kunt deze uitschakelen door de onderstaande procedure te volgen:

  1. Open het bestand /etc/grub.conf in de teksteditor van uw keuze.

  2. Voeg de volgende regel toe aan het bestand grub.conf:

    code language-xml
    transparent_hugepage=never
    
  3. Tot slot controleert u of de instelling van kracht is geworden door:

    code language-shell
    cat /sys/kernel/mm/redhat_transparent_hugepage/enabled
    

    Als THP is uitgeschakeld, moet de uitvoer van de bovenstaande opdracht als volgt zijn:

    code language-xml
    always madvise [never]
    
NOTE
Voor meer informatie over Transparante Grote Pagina's, raadpleeg dit artikel.

NUMA uitschakelen disable-numa

In de meeste installaties waar NUMA is ingeschakeld, schakelt de MongoDB-daemon deze automatisch uit als deze als service wordt uitgevoerd vanuit de map /etc/init.d .

Als dit niet het geval is, kunt u NUMA op een per procesniveau onbruikbaar maken. Voer de volgende opdrachten uit om het uit te schakelen:

numactl --interleave=all <path_to_process>

Waar <path_to_process> het pad naar het monnikeproces is.

Schakel vervolgens streekophaling uit door:

echo 0 > /proc/sys/vm/zone_reclaim_mode

Kneep de instellingen voor de limiet voor het mondige proces tweak-the-ulimit-settings-for-the-mongod-process

Met Linux® kunt u de toewijzing van bronnen configureerbaar maken via de opdracht ulimit . Deze configuratie kan op een gebruiker of op een per procesbasis worden gedaan.

Het wordt geadviseerd dat u grens voor het mongoproces volgens MongoDB geadviseerde onbeperkt Montagesvormt.

I/O-prestaties van MongoDB testen test-mongodb-i-o-performance

MongoDB biedt een hulpprogramma met de naam mongoperf dat is ontworpen om I/O-prestaties te testen. U wordt aangeraden dit te gebruiken om de prestaties te testen van al uw MongoDB-instanties waaruit uw infrastructuur bestaat.

Voor informatie over hoe te om mongoperf te gebruiken, bekijk de documentatie MongoDB.

NOTE
mongoperf is een indicator van de prestaties van MongoDB op het platform dat het in werking wordt gesteld. Bijgevolg mogen de resultaten niet als definitief worden beschouwd voor de prestaties van een productiesysteem.
Voor nauwkeurigere prestatiesresultaten kunt u complementaire tests uitvoeren met het fio Linux® hulpmiddel.

Test leest prestaties op de virtuele machines die omhoog uw plaatsing maken

Nadat u het hulpmiddel hebt geïnstalleerd, schakelaar aan de MongoDB gegevensbestandfolder om de tests in werking te stellen. Dan, begin de eerste test door mongoperf met deze configuratie in werking te stellen:

echo "{nThreads:32,fileSizeMB:1000,r:true}" | mongoperf

De gewenste uitvoer zou tot twee gigabytes per seconde (2 GB/s) en 500.000 IOPS moeten bereiken die bij 32 draden voor alle instanties MongoDB lopen.

Voer een tweede test uit, dit keer met gebruik van in geheugen toegewezen bestanden, door de parameter mmf:true in te stellen:

echo "{nThreads:32,fileSizeMB:1000,r:true,mmf:true}" | mongoperf

De uitvoer van de tweede test moet aanzienlijk hoger zijn dan die van de eerste, wat de prestaties van de geheugenoverdracht aangeeft.

NOTE
Controleer bij het uitvoeren van de tests de I/O-gebruiksstatistieken voor de virtuele machines in kwestie in uw besturingssysteem. Als ze waarden aangeven die lager zijn dan 100 procent voor I/O lezen, kan er een probleem zijn met uw virtuele machine.

Test schrijven prestaties van de primaire instantie MongoDB

Controleer vervolgens de I/O-schrijfprestaties van de primaire MongoDB-instantie door mongoperf uit te voeren vanuit de MongoDB-databasemap met dezelfde instellingen:

echo "{nThreads:32,fileSizeMB:1000,w:true}" | mongoperf

De gewenste output zou 12 megabytes per seconde moeten zijn en rond 3000 IOPS, met weinig variatie tussen het aantal draden bereiken.

Stappen voor virtuele omgevingen steps-for-virtualised-environments

VMWare vmware

Als u WMWare ESX gebruikt om uw gevirtualiseerde milieu's te beheren en op te stellen, zorg ervoor u de volgende montages van de ESX console uitvoert om verrichting MongoDB aan te passen:

  1. Geheugenballon uitschakelen

  2. Het geheugen vooraf toewijzen en reserveren voor de virtuele machines die de MongoDB-databases hosten

  3. Gebruik Storage I/O Control om voldoende I/O toe te wijzen aan het mongod -proces.

  4. Garandeer de middelen van cpu van de machines die MongoDB ontvangen door Reservering van cpute plaatsen

  5. Overweeg om ParaVirtual I/O-stuurprogramma's te gebruiken.

Amazon Web Services amazon-web-services

Voor documentatie op hoe te opstelling MongoDB met Amazon Web Services, controleer het vormt de 1} artikel van de Integratie van AWS op de website MongoDB.

MongoDB beveiligen voor implementatie securing-mongodb-before-deployment

Zie deze post op veilig plaatsend MongoDBvoor advies over hoe te om de configuratie van uw gegevensbestanden vóór plaatsing te beveiligen.

Dispatcher dispatcher

Het besturingssysteem kiezen voor de Dispatcher choosing-the-operating-system-for-the-dispatcher

Om uw plaatsing goed te dienen MongoDB, het werkende systeem dat de gastheren Dispatcher Apache httpd versie 2.4 of hoger moeten in werking stellen.

Ook, zorg ervoor dat alle bibliotheken die in uw bouwstijl worden gebruikt bijgewerkt zijn om veiligheidsimplicaties te minimaliseren.

Dispatcher-configuratie dispatcher-configuration

Een typische configuratie van Dispatcher dient tussen tien tot twintig keer meer de verzoekproductie van één enkele AEM instantie.

Omdat de Dispatcher geen status heeft, kan deze eenvoudig horizontaal worden geschaald. In sommige plaatsingen, moeten de auteurs van de toegang tot van bepaalde middelen worden beperkt. U wordt aangeraden een Dispatcher met de auteur-instanties te gebruiken.

Wanneer AEM zonder Dispatcher wordt uitgevoerd, moet SSL-opheffing en taakverdeling door een andere toepassing worden uitgevoerd. Dit is vereist omdat sessies de affiniteit moeten hebben met de AEM instantie waarop ze zijn gemaakt, een concept dat sticky connections wordt genoemd. De reden hiervoor is dat updates van de inhoud minimale vertraging vertonen.

Controleer de documentatie van Dispatchervoor meer informatie over hoe te om het te vormen.

Aanvullende configuratie additional-configuration

Vaste verbindingen sticky-connections

Vaste verbindingen zorgen ervoor dat gepersonaliseerde pagina's en zittingsgegevens voor één gebruiker allen op de zelfde instantie van AEM samengesteld zijn. Dit gegeven wordt opgeslagen op de instantie, zodat de verdere verzoeken van de zelfde gebruiker aan de zelfde instantie terugkeren.

Het wordt aanbevolen dat kleverige verbindingen zijn ingeschakeld voor alle binnenlagen die aanvragen naar de AEM instanties routeren, waardoor latere verzoeken om hetzelfde AEM te bereiken, worden aangemoedigd. Zo minimaliseert u de latentie die anders opvalt wanneer de inhoud tussen instanties wordt bijgewerkt.

Lange vervaldatum long-expires

Inhoud die wordt verzonden vanuit een AEM Dispatcher, heeft standaard de koppen Laatst gewijzigd en Etag, zonder aanduiding van de vervaldatum van de inhoud. Deze stroom zorgt ervoor dat de gebruikersinterface altijd de recentste versie van het middel krijgt. Het betekent ook dat de browser een GET-bewerking uitvoert om te zien of de resource is gewijzigd. Dit kan leiden tot meerdere aanvragen waarop het HTTP-antwoord 304 (Niet gewijzigd) is, afhankelijk van het laden van de pagina. Voor middelen die niet verlopen, het plaatsen van een kopbal Verloopt en het verwijderen van de laatste-Gewijzigde en kopballen ETag veroorzaken de inhoud om in het voorgeheugen onder te brengen. En, worden geen verdere updateverzoeken gemaakt tot de datum in de kopbal van Verlopen wordt voldaan.

Nochtans, betekent het gebruiken van deze methode dat er geen redelijke manier is om het middel te veroorzaken om in browser te verlopen alvorens de kopbal verloopt. Om deze workflow te beperken, kan de HTMLClientLibraryManager worden geconfigureerd om onveranderlijke URL's voor clientbibliotheken te gebruiken.

Deze URL's worden gegarandeerd niet gewijzigd. Wanneer de hoofdtekst van de bron in de URL verandert, worden de wijzigingen doorgevoerd in de URL die ervoor zorgt dat de browser de juiste versie van de bron opvraagt.

De standaardconfiguratie voegt een selecteur aan HtmlClientLibraryManager toe. Als kiezer wordt de bron in het cachegeheugen opgeslagen in de Dispatcher met de kiezer intact. Deze kiezer kan ook worden gebruikt om het juiste vervalgedrag te garanderen. De standaardkiezer volgt het patroon lc-.*?-lc . De volgende Apache httpd-configuratierichtlijnen zorgen ervoor dat alle aanvragen die overeenkomen met dat patroon, een geschikte vervaltijd krijgen.

Header set Expires "Tue, 20 Jan 2037 04:20:42 GMT" "expr=(%{REQUEST_STATUS} -eq 200) && (%{REQUEST_URI} =~ /.*lc-.*?-lc.*/)"
Header set Cache-Control "public, no-transform, max-age=267840000" "expr=(%{REQUEST_STATUS} -eq 200) && (%{REQUEST_URI} =~ /.*lc-.*?-lc.*/)"
Header unset ETag "expr=(%{REQUEST_STATUS} -eq 200) && (%{REQUEST_URI} =~ /.*lc-.*?-lc.*/)"
Header unset Last-Modified "expr=(%{REQUEST_STATUS} -eq 200) && (%{REQUEST_URI} =~ /.*lc-.*?-lc.*/)"
Header unset Pragma "expr=(%{REQUEST_STATUS} -eq 200) && (%{REQUEST_URI} =~ /.*lc-.*?-lc.*/)"

Geen flauw no-sniff

Wanneer inhoud zonder inhoudstype wordt verzonden, proberen veel browsers het type inhoud te raden door de eerste paar bytes van de inhoud te lezen. Deze methode wordt 'snuiven' genoemd. Door te niveren ontstaat een kwetsbaarheid voor beveiliging, omdat gebruikers die naar de opslagplaats kunnen schrijven, schadelijke inhoud zonder inhoudstype kunnen uploaden.

Daarom is het raadzaam een header no-sniff toe te voegen aan bronnen die door de Dispatcher worden aangeleverd. De Dispatcher slaat echter geen headers in de cache op. Als zodanig betekent dit dat voor alle inhoud die vanuit het lokale bestandssysteem wordt aangeboden, het inhoudstype wordt bepaald door de extensie in plaats van de oorspronkelijke header van het inhoudstype van de AEM server van oorsprong.

Geen sniff kan veilig worden toegelaten als de Webtoepassing gekend om nooit caching middelen zonder een dossiertype te dienen.

U kunt Geen Sniff met inbegrip van toelaten:

Header set X-Content-Type-Options "nosniff"

Deze kan ook selectief worden ingeschakeld:

RewriteCond %{REQUEST_URI} \.(?:js|jsonp)$ [OR]
RewriteCond %{QUERY_STRING} (callback|jsonp|cb)=\w+
RewriteRule .* - [E=jsonp_request:1]
Header set X-Content-Type-Options "nosniff"  env=jsonp_request
Header setifempty Content-Type application/javascript env=jsonp_request

Beveiligingsbeleid voor inhoud content-security-policy

De standaard Dispatcher-instellingen staan een open Content Security Policy toe, ook wel CSP genoemd. Met deze instellingen kan een pagina bronnen laden van alle domeinen waarvoor het standaardbeleid van de browsersandbox geldt.

Het is wenselijk om te beperken waar de middelen van kunnen worden geladen om het laden van code in de motor van JavaScript van onbetrouwbare of niet geverifieerde buitenlandse servers te vermijden.

CSP staat voor het verfijnen van beleid toe. In een complexe toepassing, echter, moeten de kopballen CSP met zorg worden ontwikkeld aangezien het beleid dat te restrictief is delen van het gebruikersinterface kan breken.

NOTE
Voor meer informatie over hoe dit werk, zie de Pagina van OWASP over het Beleid van de Veiligheid van de Inhoud.

Grootte sizing

Voor meer informatie bij het rangschikken van, zie de Hardware die Richtlijnen rangschikt.

Optimalisatie van MongoDB-prestaties mongodb-performance-optimization

Voor generische informatie over prestaties MongoDB, zie Analyserend Prestaties MongoDB.

Bekende beperkingen known-limitations

Gelijktijdige installaties concurrent-installations

Hoewel het gelijktijdige gebruik van meerdere AEM instanties met één database wordt ondersteund door MongoMK, zijn gelijktijdige installaties niet mogelijk.

Om dit probleem te verhelpen, dient u de installatie eerst uit te voeren met één lid en de andere leden toe te voegen nadat de eerste installatie is voltooid.

Lengte paginanaam page-name-length

Als AEM op een persistentiebeheerplaatsing MongoMK loopt, paginanamen zijn beperkt tot 150 karakters.

NOTE
Zie de documentatie MongoDBzodat kunt u met de bekende beperkingen en de drempels van MongoDB vertrouwd maken.
recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2