Message-ID: <1182466361.2768.1485850741639.JavaMail.confluence@ip-10-127-227-164> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_2767_371348083.1485850741639" ------=_Part_2767_371348083.1485850741639 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
This page describes how to execute long-running console commands, to mak= e sure they don't run out of memory. An example is a custom import command = or the indexing command provided by the Solr Bundle.
To avoid quickly running out of memory while executing such commands you= should make sure to:
--=
env=3Dprod
Avoid Stash (Persis= tence cache) using to much memory in prod:
If your system is running, or you need to use cache, then disable St= ash InMemory cache as it does not limit the amount of items in cache a= nd grows exponentially:
stash: caches: default: inMemory: false=20
Also if you use FileSystem driver, make sure memKeyLimit is set to a low number, default should be 200 and can be lowered like t=
his:
stash: caches: default: FileSystem: memKeyLimit: 100=20
If your setup is offline and cache is cold, there is no risk of stal= e cache and you can actually completely disable Stash cache. This will impr= ove performance of import scripts:
stash: caches: default: drivers: [ BlackHole ] inMemory: false=20
For logging using monolog, if you use either the default =
fingers_crossed
, or buffer handler, make sure to specify
buffer_size <=
/code> to limit how large the buffer grows before it gets flu=
shed:
monolog: handlers: main: type: fingers_crossed buffer_size: 200=20
php
=
-d memory_limit=3D-1 app/console <command>
xdebug
(PHP extension to debug/profile php us=
e) when running the command, this will cause php to use much more=
memory.
Note: Memory will still grow
Even when everything is configured like described above, memory will gro= w for each iteration of indexing/inserting a content item with at least 1kb per iteration after the initial first 100 rounds. This is expecte= d behavior; to be able to handle more iterations you will have to do one or= several of the following:
The recommended way to completely avoid "memory leaks" in PHP in the fir= st place is to use processes, and for console scripts this is typically don= e using process forking which is quite easy to do with Symfony.
The things you will need to do: