Message-ID: <810313422.3226.1485852443660.JavaMail.confluence@ip-10-127-227-164> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_3225_1942267214.1485852443660" ------=_Part_3225_1942267214.1485852443660 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 make 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 (Persistence cache) using to much memory in pro= d:
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 to limit how large the buffer grows before it gets flushed<=
/span>:
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 use=
) 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: